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>
This commit is contained in:
2026-06-27 14:57:19 +02:00
parent c8f0c6fcb1
commit eea9272de4

View File

@@ -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