mirror of
https://github.com/zoriya/Kyoo.git
synced 2025-05-24 02:02:36 -04:00
Fix missing seasons and episodes translations
This commit is contained in:
parent
47f364840b
commit
e02912119b
@ -9,6 +9,7 @@ from langcodes import Language
|
||||
from matcher.cache import cache
|
||||
|
||||
from ..provider import Provider, ProviderError
|
||||
from ..utils import normalize_lang
|
||||
from ..types.season import Season, SeasonTranslation
|
||||
from ..types.episode import Episode, EpisodeTranslation, PartialShow, EpisodeID
|
||||
from ..types.studio import Studio
|
||||
@ -75,9 +76,6 @@ class TVDB(Provider):
|
||||
"awards-show": None,
|
||||
}
|
||||
|
||||
def normalize_lang(self, lang: str) -> str:
|
||||
return str(Language.get(lang))
|
||||
|
||||
@cache(ttl=timedelta(days=30))
|
||||
async def login(self) -> str:
|
||||
async with self._client.post(
|
||||
@ -149,7 +147,7 @@ class TVDB(Provider):
|
||||
try:
|
||||
path = f"series/{show_id}/episodes/default"
|
||||
if language is not None:
|
||||
path += "/{language}"
|
||||
path += f"/{language}"
|
||||
ret = await self.get(
|
||||
path,
|
||||
not_found_fail=f"Could not find show with id {show_id}",
|
||||
@ -195,10 +193,6 @@ class TVDB(Provider):
|
||||
f"Could not retrive episode {show['name']} s{season}e{episode_nbr}, absolute {absolute}"
|
||||
)
|
||||
|
||||
languages = self._languages
|
||||
if show["originalLanguage"] not in languages:
|
||||
languages = [*self._languages, show["originalLanguage"]]
|
||||
translations.append(await self.get_episodes(show_id))
|
||||
trans = [
|
||||
(
|
||||
next((ep for ep in el[0] if ep["id"] == ret["id"]), None)
|
||||
@ -209,18 +203,18 @@ class TVDB(Provider):
|
||||
]
|
||||
|
||||
ep_trans = {
|
||||
self.normalize_lang(lang): EpisodeTranslation(
|
||||
normalize_lang(lang): EpisodeTranslation(
|
||||
name=val["name"],
|
||||
overview=val["overview"],
|
||||
)
|
||||
for lang, val in zip(languages, trans)
|
||||
for lang, val in zip(self._languages, trans)
|
||||
if val is not None
|
||||
}
|
||||
|
||||
return Episode(
|
||||
show=PartialShow(
|
||||
name=show["name"],
|
||||
original_language=self.normalize_lang(show["originalLanguage"]),
|
||||
original_language=normalize_lang(show["originalLanguage"]),
|
||||
external_id={
|
||||
self.name: MetadataID(
|
||||
show_id, f"https://thetvdb.com/series/{show['slug']}"
|
||||
@ -295,13 +289,13 @@ class TVDB(Provider):
|
||||
*(process_translation(lang) for lang in languages)
|
||||
)
|
||||
trans = {
|
||||
self.normalize_lang(lang): ts
|
||||
normalize_lang(lang): ts
|
||||
for (lang, ts) in zip(self._languages, translations)
|
||||
if ts is not None
|
||||
}
|
||||
ret = ret["data"]
|
||||
return Show(
|
||||
original_language=self.normalize_lang(ret["originalLanguage"]),
|
||||
original_language=normalize_lang(ret["originalLanguage"]),
|
||||
aliases=[x["name"] for x in ret["aliases"]],
|
||||
start_air=datetime.strptime(ret["firstAired"], "%Y-%m-%d").date(),
|
||||
end_air=datetime.strptime(ret["lastAired"], "%Y-%m-%d").date(),
|
||||
@ -403,7 +397,7 @@ class TVDB(Provider):
|
||||
|
||||
trans = await asyncio.gather(*(process_translation(x) for x in self._languages))
|
||||
translations = {
|
||||
self.normalize_lang(lang): tl
|
||||
normalize_lang(lang): tl
|
||||
for lang, tl in zip(self._languages, trans)
|
||||
if tl is not None
|
||||
}
|
||||
|
@ -3,6 +3,7 @@ from __future__ import annotations
|
||||
import os
|
||||
from datetime import date
|
||||
from itertools import chain
|
||||
from langcodes import Language
|
||||
from typing import TYPE_CHECKING, Literal, Any, Optional
|
||||
|
||||
if TYPE_CHECKING:
|
||||
@ -21,6 +22,10 @@ def format_date(date: date | int | None) -> str | None:
|
||||
return date.isoformat()
|
||||
|
||||
|
||||
def normalize_lang(lang: str) -> str:
|
||||
return str(Language.get(lang))
|
||||
|
||||
|
||||
# For now, the API of kyoo only support one language so we remove the others.
|
||||
default_languages = os.environ["LIBRARY_LANGUAGES"].split(",")
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user