diff --git a/media_manager/metadataProvider/tmdb.py b/media_manager/metadataProvider/tmdb.py index 3d91d54..edd7fde 100644 --- a/media_manager/metadataProvider/tmdb.py +++ b/media_manager/metadataProvider/tmdb.py @@ -159,16 +159,11 @@ class TmdbMetadataProvider(AbstractMetadataProvider): raise def download_show_poster_image(self, show: Show) -> bool: - # First fetch to get original_language - show_metadata = self.__get_show_metadata(show.external_id) - original_language = show_metadata.get("original_language") - - # Determine which language to use - language = self.__get_language_param(original_language) + # Determine which language to use based on show's original_language + language = self.__get_language_param(show.original_language) # Fetch metadata in the appropriate language to get localized poster - if language != self.default_language: - show_metadata = self.__get_show_metadata(show.external_id, language=language) + show_metadata = self.__get_show_metadata(show.external_id, language=language) # downloading the poster # all pictures from TMDB should already be jpeg, so no need to convert @@ -250,6 +245,7 @@ class TmdbMetadataProvider(AbstractMetadataProvider): seasons=season_list, metadata_provider=self.name, ended=show_metadata["status"] in ENDED_STATUS, + original_language=show_metadata.get("original_language"), ) return show @@ -346,6 +342,7 @@ class TmdbMetadataProvider(AbstractMetadataProvider): overview=movie_metadata["overview"], year=year, metadata_provider=self.name, + original_language=movie_metadata.get("original_language"), ) return movie @@ -410,16 +407,11 @@ class TmdbMetadataProvider(AbstractMetadataProvider): return formatted_results def download_movie_poster_image(self, movie: Movie) -> bool: - # First fetch to get original_language - movie_metadata = self.__get_movie_metadata(id=movie.external_id) - original_language = movie_metadata.get("original_language") - - # Determine which language to use - language = self.__get_language_param(original_language) + # Determine which language to use based on movie's original_language + language = self.__get_language_param(movie.original_language) # Fetch metadata in the appropriate language to get localized poster - if language != self.default_language: - movie_metadata = self.__get_movie_metadata(id=movie.external_id, language=language) + movie_metadata = self.__get_movie_metadata(id=movie.external_id, language=language) # downloading the poster # all pictures from TMDB should already be jpeg, so no need to convert diff --git a/media_manager/movies/repository.py b/media_manager/movies/repository.py index d190673..63d4b3f 100644 --- a/media_manager/movies/repository.py +++ b/media_manager/movies/repository.py @@ -117,7 +117,8 @@ class MovieRepository: db_movie.year = movie.year else: # Insert new movie log.debug(f"Creating new movie: {movie.name}") - db_movie = Movie(**movie.model_dump()) + # HACK: Remove exclude once original_language column is added to database + db_movie = Movie(**movie.model_dump(exclude={'original_language'})) self.db.add(db_movie) try: diff --git a/media_manager/movies/schemas.py b/media_manager/movies/schemas.py index 1bcff18..3094988 100644 --- a/media_manager/movies/schemas.py +++ b/media_manager/movies/schemas.py @@ -23,6 +23,7 @@ class Movie(BaseModel): external_id: int metadata_provider: str library: str = "Default" + original_language: str | None = None class MovieFile(BaseModel): diff --git a/media_manager/movies/service.py b/media_manager/movies/service.py index a4a6c04..2a0707c 100644 --- a/media_manager/movies/service.py +++ b/media_manager/movies/service.py @@ -71,7 +71,9 @@ class MovieService: """ movie_with_metadata = metadata_provider.get_movie_metadata(id=external_id, language=language) saved_movie = self.movie_repository.save_movie(movie=movie_with_metadata) - metadata_provider.download_movie_poster_image(movie=saved_movie) + # HACK: Temporary workaround - using show_with_metadata instead of saved_show because + # original_language is not yet persisted to database. Once database has original_language column this shuold be changed back? + metadata_provider.download_movie_poster_image(movie=movie_with_metadata) return saved_movie def add_movie_request(self, movie_request: MovieRequest) -> MovieRequest: diff --git a/media_manager/tv/schemas.py b/media_manager/tv/schemas.py index cacb963..0996de5 100644 --- a/media_manager/tv/schemas.py +++ b/media_manager/tv/schemas.py @@ -55,6 +55,7 @@ class Show(BaseModel): continuous_download: bool = False library: str = "Default" + original_language: str | None = None seasons: list[Season] diff --git a/media_manager/tv/service.py b/media_manager/tv/service.py index 0bf633c..afe6e03 100644 --- a/media_manager/tv/service.py +++ b/media_manager/tv/service.py @@ -77,7 +77,9 @@ class TvService: """ show_with_metadata = metadata_provider.get_show_metadata(id=external_id, language=language) saved_show = self.tv_repository.save_show(show=show_with_metadata) - metadata_provider.download_show_poster_image(show=saved_show) + # HACK: Temporary workaround - using show_with_metadata instead of saved_show because + # original_language is not yet persisted to database. Once database has original_language column this shuold be changed back? + metadata_provider.download_show_poster_image(show=show_with_metadata) return saved_show def add_season_request(self, season_request: SeasonRequest) -> SeasonRequest: