From eea9272de4bfcc56c28a6d182a1c18207c0d9832 Mon Sep 17 00:00:00 2001 From: Lukas Date: Sat, 27 Jun 2026 14:57:19 +0200 Subject: [PATCH] Refactor NFO TMDB calls to use tmdb_client - Replace TMDBProvider with tmdb_client in nfo.py - Add anime_service param to repair functions - Add null guard for empty series name lookup Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --- src/server/api/nfo.py | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/src/server/api/nfo.py b/src/server/api/nfo.py index 18fe4e1..5ecaf9a 100644 --- a/src/server/api/nfo.py +++ b/src/server/api/nfo.py @@ -241,6 +241,7 @@ async def repair_nfo_settings( folder=folder, tmdb_id=tmdb_id, series_data=series_data, + anime_service=anime_service, ) except Exception as exc: logger.error("Failed to repair NFO for %s: %s", key, exc) @@ -264,14 +265,16 @@ async def repair_nfo_settings( async def _lookup_tmdb_id_by_name(anime_service: AnimeService, name: str) -> Optional[int]: - """Try to lookup a TMDB ID by series name using TMDB provider.""" + """Try to lookup a TMDB ID by series name using TMDB API.""" + if not name: + return None try: - from src.server.providers.tmdb_provider import TMDBProvider + from src.server.nfo.tmdb_client import get_tmdb_client - provider = TMDBProvider() - results = await provider.search(name) - if results: - return results[0].get("tmdb_id") + async with get_tmdb_client() as client: + results = await client.search_tv_show(name) + if results and results.get("results"): + return results["results"][0].get("id") except Exception as exc: logger.warning("TMDB lookup failed for %s: %s", name, exc) return None @@ -282,15 +285,15 @@ async def _create_or_update_nfo( folder: str, tmdb_id: int, series_data: dict, + anime_service: AnimeService, ) -> List[str]: """Create or update NFO file for a series. Returns list of tags that were repaired/added. """ - from src.server.providers.tmdb_provider import TMDBProvider - from src.server.nfo.nfo_generator import generate_tvshow_nfo from src.server.nfo.nfo_mapper import tmdb_to_nfo_model + from src.server.nfo.tmdb_client import get_tmdb_client anime_dir = getattr(settings, "anime_directory", None) if not anime_dir: @@ -303,8 +306,8 @@ async def _create_or_update_nfo( nfo_path = os.path.join(series_path, "tvshow.nfo") # Fetch TMDB data - provider = TMDBProvider() - tmdb_data = await provider.get_series_info(tmdb_id) + async with get_tmdb_client() as client: + tmdb_data = await client.get_tv_show_details(tmdb_id) if not tmdb_data: raise Exception(f"No TMDB data returned for TMDB ID {tmdb_id}") @@ -312,7 +315,7 @@ async def _create_or_update_nfo( nfo_model = tmdb_to_nfo_model( tmdb_data, content_ratings=None, - get_image_url=provider.get_image_url, + get_image_url=client.get_image_url, image_size="original", ) @@ -519,6 +522,7 @@ async def batch_repair_nfo( folder=folder, tmdb_id=tmdb_id, series_data=series_data, + anime_service=anime_service, ) results["success"] += 1