Tvdb season access cleanup

This commit is contained in:
Zoe Roux 2024-05-13 01:13:39 +02:00
parent 8c6b99e31b
commit 7577d757f8
No known key found for this signature in database

View File

@ -123,6 +123,10 @@ class TVDB(Provider):
type="series", type="series",
) )
ret = await self.get(f"search?{urlencode(query)}") ret = await self.get(f"search?{urlencode(query)}")
if not any(ret["data"]):
raise ProviderError(
f"No serie found with the name {name} in the year {year} (on tvdb)"
)
return ret["data"][0]["tvdb_id"] return ret["data"][0]["tvdb_id"]
@cache(ttl=timedelta(days=1)) @cache(ttl=timedelta(days=1))
@ -233,45 +237,47 @@ class TVDB(Provider):
not_found_fail=f"Could not find show with id {show_id}", not_found_fail=f"Could not find show with id {show_id}",
) )
logger.debug("TVDB responded: %s", ret) logger.debug("TVDB responded: %s", ret)
ret = ret["data"]
translations = await asyncio.gather( translations = await asyncio.gather(
*( *(
self.get(f"series/{show_id}/translations/{lang}") self.get(f"series/{show_id}/translations/{lang}")
for lang in self._languages for lang in self._languages
if lang != ret["originalLanguage"] if lang != ret["data"]["originalLanguage"]
) )
) )
trans = { trans = {
self.normalize_lang(lang): ShowTranslation( self.normalize_lang(lang): ShowTranslation(
name=x["name"], name=x["data"]["name"],
tagline=None, tagline=None,
tags=[], tags=[],
overview=x["overview"], overview=x["data"]["overview"],
posters=[ posters=[
i["image"] i["image"]
for i in x["artworks"] for i in ret["data"]["artworks"]
if i["type"] == 2 if i["type"] == 2
and (i["language"] == lang or i["language"] is None) and (i["language"] == lang or i["language"] is None)
], ],
logos=[ logos=[
i["image"] i["image"]
for i in x["artworks"] for i in ret["data"]["artworks"]
if i["type"] == 5 if i["type"] == 5
and (i["language"] == lang or i["language"] is None) and (i["language"] == lang or i["language"] is None)
], ],
thumbnails=[ thumbnails=[
i["image"] i["image"]
for i in x["artworks"] for i in ret["data"]["artworks"]
if i["type"] == 3 if i["type"] == 3
and (i["language"] == lang or i["language"] is None) and (i["language"] == lang or i["language"] is None)
], ],
trailers=[x["url"] for t in ret["trailers"] if t["language"] == lang], trailers=[
t["url"] for t in ret["data"]["trailers"] if t["language"] == lang
],
) )
for (lang, x) in [ for (lang, x) in [
(ret["originalLanguage"], ret), (ret["data"]["originalLanguage"], ret),
*zip(self._languages, translations), *zip(self._languages, translations),
] ]
} }
ret = ret["data"]
return Show( return Show(
original_language=self.normalize_lang(ret["originalLanguage"]), original_language=self.normalize_lang(ret["originalLanguage"]),
aliases=[x["name"] for x in ret["aliases"]], aliases=[x["name"] for x in ret["aliases"]],
@ -342,9 +348,11 @@ class TVDB(Provider):
f"seasons/{season_id}/extended", f"seasons/{season_id}/extended",
not_found_fail=f"Invalid season id {season_id}", not_found_fail=f"Invalid season id {season_id}",
) )
logger.debug("TVDB send season (%s) data %s", season_id, info)
async def process_translation(lang: str) -> SeasonTranslation: async def process_translation(lang: str) -> SeasonTranslation:
data = await self.get(f"seasons/{season_id}/translations/{lang}") data = await self.get(f"seasons/{season_id}/translations/{lang}")
logger.debug("TVDB send season (%s) translations (%s) data %s", season_id, lang, data)
return SeasonTranslation( return SeasonTranslation(
name=data["data"]["name"], name=data["data"]["name"],
overview=data["data"]["overview"], overview=data["data"]["overview"],