mirror of
https://github.com/zoriya/Kyoo.git
synced 2025-05-31 20:24:27 -04:00
Merge translations for seasons
This commit is contained in:
parent
20f7f87072
commit
ce9dc48d81
@ -51,13 +51,23 @@ class TheMovieDatabase(Provider):
|
|||||||
|
|
||||||
T = TypeVar("T")
|
T = TypeVar("T")
|
||||||
|
|
||||||
|
def merge_translations(self, host, translations, *, languages: list[str]):
|
||||||
|
host.translations = {
|
||||||
|
k: v.translations[k] for k, v in zip(languages, translations)
|
||||||
|
}
|
||||||
|
return host
|
||||||
|
|
||||||
async def process_translations(
|
async def process_translations(
|
||||||
self, for_language: Callable[[str], Awaitable[T]], languages: list[str]
|
self,
|
||||||
|
for_language: Callable[[str], Awaitable[T]],
|
||||||
|
languages: list[str],
|
||||||
|
post_merge: Callable[[T, list[T]], T] | None = None,
|
||||||
) -> T:
|
) -> T:
|
||||||
tasks = map(lambda lng: for_language(lng), languages)
|
tasks = map(lambda lng: for_language(lng), languages)
|
||||||
items: list[Any] = await asyncio.gather(*tasks)
|
items: list[Any] = await asyncio.gather(*tasks)
|
||||||
item = items[0]
|
item = self.merge_translations(items[0], items, languages=languages)
|
||||||
item.translations = {k: v.translations[k] for k, v in zip(languages, items)}
|
if post_merge:
|
||||||
|
item = post_merge(item, items)
|
||||||
return item
|
return item
|
||||||
|
|
||||||
def get_image(self, images: list[Dict[str, Any]]) -> list[str]:
|
def get_image(self, images: list[Dict[str, Any]]) -> list[str]:
|
||||||
@ -215,7 +225,27 @@ class TheMovieDatabase(Provider):
|
|||||||
ret.translations = {lng: translation}
|
ret.translations = {lng: translation}
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
ret = await self.process_translations(for_language, language)
|
def merge_seasons_translations(item: Show, items: list[Show]) -> Show:
|
||||||
|
item.seasons = [
|
||||||
|
self.merge_translations(
|
||||||
|
season,
|
||||||
|
[
|
||||||
|
next(
|
||||||
|
y
|
||||||
|
for y in x.seasons
|
||||||
|
if y.season_number == season.season_number
|
||||||
|
)
|
||||||
|
for x in items
|
||||||
|
],
|
||||||
|
languages=language,
|
||||||
|
)
|
||||||
|
for season in item.seasons
|
||||||
|
]
|
||||||
|
return item
|
||||||
|
|
||||||
|
ret = await self.process_translations(
|
||||||
|
for_language, language, merge_seasons_translations
|
||||||
|
)
|
||||||
return ret
|
return ret
|
||||||
|
|
||||||
def to_season(
|
def to_season(
|
||||||
|
Loading…
x
Reference in New Issue
Block a user