Handle series that only have absolte numbering

This commit is contained in:
Zoe Roux 2023-09-06 00:06:10 +02:00
parent 3549f8b2d2
commit 0ec22766ba

View File

@ -48,11 +48,19 @@ class TheMovieDatabase(Provider):
def name(self) -> str: def name(self) -> str:
return "themoviedatabase" return "themoviedatabase"
async def get(self, path: str, *, params: dict[str, Any] = {}): async def get(
self,
path: str,
*,
params: dict[str, Any] = {},
not_found_fail: Optional[str] = None,
):
params = {k: v for k, v in params.items() if v is not None} params = {k: v for k, v in params.items() if v is not None}
async with self._client.get( async with self._client.get(
f"{self.base}/{path}", params={"api_key": self.api_key, **params} f"{self.base}/{path}", params={"api_key": self.api_key, **params}
) as r: ) as r:
if not_found_fail and r.status == 404:
raise ProviderError(not_found_fail)
r.raise_for_status() r.raise_for_status()
return await r.json() return await r.json()
@ -337,9 +345,9 @@ class TheMovieDatabase(Provider):
] ]
if not season or not episode_nbr: if not season or not episode_nbr:
raise ProviderError( # Some shows don't have absolute numbering because the default one is absolute on tmdb (for example detetive conan)
f"Absolute order episodes not available for the show {name}" season = 1
) episode_nbr = absolute
if not absolute and self.absolute_episode_cache[show_id]: if not absolute and self.absolute_episode_cache[show_id]:
absolute = next( absolute = next(
@ -359,6 +367,7 @@ class TheMovieDatabase(Provider):
params={ params={
"language": lng, "language": lng,
}, },
not_found_fail=f"Could not find episode {episode_nbr} of season {season} of serie {search['name']}",
) )
logging.debug("TMDb responded: %s", episode) logging.debug("TMDb responded: %s", episode)
@ -374,7 +383,6 @@ class TheMovieDatabase(Provider):
), ),
season_number=episode["season_number"], season_number=episode["season_number"],
episode_number=episode["episode_number"], episode_number=episode["episode_number"],
# TODO: absolute numbers
absolute_number=absolute, absolute_number=absolute,
release_date=datetime.strptime(episode["air_date"], "%Y-%m-%d").date() release_date=datetime.strptime(episode["air_date"], "%Y-%m-%d").date()
if episode["air_date"] if episode["air_date"]