This commit is contained in:
@@ -266,6 +266,43 @@ class TMDBClient:
|
||||
self._write_disk_cache("episode_credits", key, cred)
|
||||
return cred
|
||||
|
||||
def has_episode_metadata_cached(
|
||||
self,
|
||||
programme_name: str,
|
||||
path: Path,
|
||||
*,
|
||||
tmdb_search: str | None = None,
|
||||
tmdb_id: int | None = None,
|
||||
series_root: Path,
|
||||
) -> bool:
|
||||
"""
|
||||
Check if episode metadata is already on disk (no API calls).
|
||||
Used by prefetcher to skip episodes that don't need fetching.
|
||||
"""
|
||||
if series_root not in path.parents:
|
||||
return True
|
||||
se = parse_season_episode(path.stem)
|
||||
if not se:
|
||||
return True
|
||||
_, episode_num = se
|
||||
|
||||
if tmdb_id is not None:
|
||||
series_id = tmdb_id
|
||||
else:
|
||||
search_term = (tmdb_search or programme_name).strip() or programme_name
|
||||
key = _sanitize_key(search_term)
|
||||
cached = self._read_disk_cache("series_search", key)
|
||||
if cached is None:
|
||||
return False
|
||||
sid = cached.get("series_id")
|
||||
if sid is None:
|
||||
return False
|
||||
series_id = int(sid)
|
||||
|
||||
ep_key = f"{series_id}_{se[0]}_{episode_num}"
|
||||
ep_path = self._cache_path("episode", ep_key)
|
||||
return ep_path.exists()
|
||||
|
||||
def get_episode_metadata(
|
||||
self,
|
||||
programme_name: str,
|
||||
|
||||
Reference in New Issue
Block a user