diff --git a/media_manager/metadataProvider/tmdb.py b/media_manager/metadataProvider/tmdb.py index 8658830..c7de4bb 100644 --- a/media_manager/metadataProvider/tmdb.py +++ b/media_manager/metadataProvider/tmdb.py @@ -17,6 +17,8 @@ class TmdbConfig(BaseSettings): TMDB_API_KEY: str | None = None +ENDED_STATUS = {"Ended", "Canceled"} + config = TmdbConfig() log = logging.getLogger(__name__) @@ -24,6 +26,9 @@ log = logging.getLogger(__name__) class TmdbMetadataProvider(AbstractMetadataProvider): name = "tmdb" + def __init__(self, api_key: str = None): + tmdbsimple.API_KEY = api_key + def download_show_poster_image(self, show: Show) -> bool: show_metadata = TV(show.external_id).info() # downloading the poster @@ -92,6 +97,7 @@ class TmdbMetadataProvider(AbstractMetadataProvider): year=year, seasons=season_list, metadata_provider=self.name, + ended=show_metadata["status"] in ENDED_STATUS, ) return show @@ -146,8 +152,6 @@ class TmdbMetadataProvider(AbstractMetadataProvider): log.warning(f"Error processing search result {result}: {e}") return formatted_results - def __init__(self, api_key: str = None): - tmdbsimple.API_KEY = api_key if config.TMDB_API_KEY is not None: diff --git a/media_manager/metadataProvider/tvdb.py b/media_manager/metadataProvider/tvdb.py index 968a50c..94786ba 100644 --- a/media_manager/metadataProvider/tvdb.py +++ b/media_manager/metadataProvider/tvdb.py @@ -35,7 +35,9 @@ class TvdbMetadataProvider(AbstractMetadataProvider): if show_metadata["image"] is not None: media_manager.metadataProvider.utils.download_poster_image( - storage_path=self.storage_path, poster_url=show_metadata["image"], show=show + storage_path=self.storage_path, + poster_url=show_metadata["image"], + show=show, ) log.info("Successfully downloaded poster image for show " + show.name) return True @@ -76,6 +78,8 @@ class TvdbMetadataProvider(AbstractMetadataProvider): year = series["year"] except KeyError: year = None + # NOTE: the TVDB API is fucking shit and seems to be very poorly documentated, I can't for the life of me + # figure out which statuses this fucking api returns show = Show( name=series["name"], overview=series["overview"], @@ -83,12 +87,13 @@ class TvdbMetadataProvider(AbstractMetadataProvider): external_id=series["id"], metadata_provider=self.name, seasons=seasons, + ended=False, ) return show def search_show( - self, query: str | None = None + self, query: str | None = None ) -> list[MetaDataProviderShowSearchResult]: if query is None: results = self.tvdb_client.get_all_series() diff --git a/tests/tv/test_service.py b/tests/tv/test_service.py index 29206af..5ec5f33 100644 --- a/tests/tv/test_service.py +++ b/tests/tv/test_service.py @@ -34,7 +34,7 @@ def tv_service(mock_tv_repository, mock_torrent_service, mock_indexer_service): ) -def test_add_show(tv_service, mock_tv_repository, mock_torrent_service): +def test_add_show(tv_service, mock_tv_repository, mock_torrent_service, monkeypatch): external_id = 123 metadata_provider = "tmdb" show_data = Show( @@ -46,7 +46,7 @@ def test_add_show(tv_service, mock_tv_repository, mock_torrent_service): metadata_provider=metadata_provider, seasons=[], ) - + monkeypatch.setattr("media_manager.metadataProvider.download_show_poster_image", lambda show:True) with patch( "media_manager.metadataProvider.get_show_metadata", return_value=show_data ) as mock_get_metadata: @@ -71,6 +71,8 @@ def test_add_show_with_invalid_metadata( monkeypatch.setattr( "media_manager.metadataProvider.get_show_metadata", lambda id, provider: None ) + monkeypatch.setattr("media_manager.metadataProvider.download_show_poster_image", lambda show:False) + mock_tv_repository.save_show.return_value = None result = tv_service.add_show( external_id=external_id, metadata_provider=metadata_provider