Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 11 additions & 17 deletions mediacloud/api.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,21 +8,11 @@

import mediacloud
import mediacloud.error
from mediacloud.types import (
Collection,
CountOverTimePoint,
JSONObj,
LanguageCount,
OffsetPage,
PaginationToken,
Source,
SourceIntervalAttention,
SourceCount,
SourceWeekAttention,
Story,
StoryCount,
VersionInfo,
)
from mediacloud.types import (Collection, CountOverTimePoint, JSONObj,
LanguageCount, OffsetPage, PaginationToken,
Source, SourceCount, SourceIntervalAttention,
SourceWeekAttention, Story, StoryCount,
VersionInfo)

logger = logging.getLogger(__name__)

Expand Down Expand Up @@ -168,6 +158,10 @@ def _prep_default_params(self, query: str, start_date: dt.date, end_date: dt.dat

params: Dict[Any, Any] = dict(start=start_date.isoformat(), end=end_date.isoformat(), q=query,
platform=(platform or self.PROVIDER))

if (len(source_ids) + len(collection_ids)) == 0:
warnings.warn("No sources or collections specified. This is a *BAD IDEA*. Pick a collection.")

if len(source_ids):
params['ss'] = ",".join([str(sid) for sid in source_ids]),
if len(collection_ids):
Expand Down Expand Up @@ -197,8 +191,8 @@ def stories_by_source_week(self, query: str, start_date: dt.date, end_date: dt.d
return results['source-week-attention']

def stories_by_source_over_interval(self, query: str, start_date: dt.date, end_date: dt.date,
collection_ids: Optional[List[int]] = [], source_ids: Optional[List[int]] = [],
platform: Optional[str] = None, interval: Optional[str] = None) -> List[SourceIntervalAttention]:
collection_ids: Optional[List[int]] = [], source_ids: Optional[List[int]] = [],
platform: Optional[str] = None, interval: Optional[str] = None) -> List[SourceIntervalAttention]:
params = self._prep_default_params(query, start_date, end_date, collection_ids, source_ids, platform)
if interval:
params['interval'] = interval
Expand Down
13 changes: 12 additions & 1 deletion mediacloud/test/api_search_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
START_DATE = dt.date(2023, 11, 1)
END_DATE = dt.date(2023, 12, 1)

#Optionally override the target instance when testing, for staging/dev cases
# Optionally override the target instance when testing, for staging/dev cases
mediacloud.api.BaseApi.BASE_API_URL = os.getenv("MC_API_BASE_URL", "https://search.mediacloud.org/api/")


Expand Down Expand Up @@ -354,6 +354,17 @@ def test_datetime(self):

assert result_via_date == result_via_datetime

def test_warnings(self):
with patch.object(self._search, "_query", return_value={"count": {}}):
with pytest.warns(UserWarning, match="start_date was passed as datetime"):
self._search.story_count(query="biden", start_date=self.START_DATETIME, end_date=self.END_DATE,
collection_ids=[COLLECTION_US_NATIONAL])
with pytest.warns(UserWarning, match="end_date was passed as datetime"):
self._search.story_count(query="biden", start_date=self.START_DATE, end_date=self.END_DATETIME,
collection_ids=[COLLECTION_US_NATIONAL])
with pytest.warns(UserWarning, match="No sources or collections specified"):
self._search.story_count(query="biden", start_date=self.START_DATE, end_date=self.END_DATE)

def test_stories_by_source_over_interval_day(self):
expected = [{
"media_name": "example.com",
Expand Down
Loading