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,
|
folder=folder,
|
||||||
tmdb_id=tmdb_id,
|
tmdb_id=tmdb_id,
|
||||||
series_data=series_data,
|
series_data=series_data,
|
||||||
|
anime_service=anime_service,
|
||||||
)
|
)
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logger.error("Failed to repair NFO for %s: %s", key, 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]:
|
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:
|
try:
|
||||||
from src.server.providers.tmdb_provider import TMDBProvider
|
from src.server.nfo.tmdb_client import get_tmdb_client
|
||||||
|
|
||||||
provider = TMDBProvider()
|
async with get_tmdb_client() as client:
|
||||||
results = await provider.search(name)
|
results = await client.search_tv_show(name)
|
||||||
if results:
|
if results and results.get("results"):
|
||||||
return results[0].get("tmdb_id")
|
return results["results"][0].get("id")
|
||||||
except Exception as exc:
|
except Exception as exc:
|
||||||
logger.warning("TMDB lookup failed for %s: %s", name, exc)
|
logger.warning("TMDB lookup failed for %s: %s", name, exc)
|
||||||
return None
|
return None
|
||||||
@@ -282,15 +285,15 @@ async def _create_or_update_nfo(
|
|||||||
folder: str,
|
folder: str,
|
||||||
tmdb_id: int,
|
tmdb_id: int,
|
||||||
series_data: dict,
|
series_data: dict,
|
||||||
|
anime_service: AnimeService,
|
||||||
) -> List[str]:
|
) -> List[str]:
|
||||||
"""Create or update NFO file for a series.
|
"""Create or update NFO file for a series.
|
||||||
|
|
||||||
Returns list of tags that were repaired/added.
|
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_generator import generate_tvshow_nfo
|
||||||
from src.server.nfo.nfo_mapper import tmdb_to_nfo_model
|
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)
|
anime_dir = getattr(settings, "anime_directory", None)
|
||||||
if not anime_dir:
|
if not anime_dir:
|
||||||
@@ -303,8 +306,8 @@ async def _create_or_update_nfo(
|
|||||||
nfo_path = os.path.join(series_path, "tvshow.nfo")
|
nfo_path = os.path.join(series_path, "tvshow.nfo")
|
||||||
|
|
||||||
# Fetch TMDB data
|
# Fetch TMDB data
|
||||||
provider = TMDBProvider()
|
async with get_tmdb_client() as client:
|
||||||
tmdb_data = await provider.get_series_info(tmdb_id)
|
tmdb_data = await client.get_tv_show_details(tmdb_id)
|
||||||
if not tmdb_data:
|
if not tmdb_data:
|
||||||
raise Exception(f"No TMDB data returned for TMDB ID {tmdb_id}")
|
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(
|
nfo_model = tmdb_to_nfo_model(
|
||||||
tmdb_data,
|
tmdb_data,
|
||||||
content_ratings=None,
|
content_ratings=None,
|
||||||
get_image_url=provider.get_image_url,
|
get_image_url=client.get_image_url,
|
||||||
image_size="original",
|
image_size="original",
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -519,6 +522,7 @@ async def batch_repair_nfo(
|
|||||||
folder=folder,
|
folder=folder,
|
||||||
tmdb_id=tmdb_id,
|
tmdb_id=tmdb_id,
|
||||||
series_data=series_data,
|
series_data=series_data,
|
||||||
|
anime_service=anime_service,
|
||||||
)
|
)
|
||||||
results["success"] += 1
|
results["success"] += 1
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user