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:
@@ -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
|
||||
|
||||
|
||||
Reference in New Issue
Block a user