2024-05-14 02:18:12 +02:00

52 lines
1.2 KiB
Python

from __future__ import annotations
import os
from datetime import date
from typing import Literal
from providers.types.movie import Movie
from providers.types.show import Show
def format_date(date: date | int | None) -> str | None:
if date is None:
return None
if isinstance(date, int):
return f"{date}-01-01"
return date.isoformat()
# For now, the API of kyoo only support one language so we remove the others.
default_languages = os.environ["LIBRARY_LANGUAGES"].split(",")
def select_translation(value: Movie | Show, *, prefer_orginal=False):
if (
prefer_orginal
and value.original_language
and value.original_language in value.translations
):
return value.translations[value.original_language]
for lang in default_languages:
if lang in value.translations:
return value.translations[lang]
return None
def select_image(
value: Movie | Show,
kind: Literal["posters"] | Literal["thumbnails"] | Literal["logos"],
) -> str | None:
trans = select_translation(value, prefer_orginal=True) or next(
iter(value.translations.values()), None
)
if trans is None:
return None
return getattr(trans, kind)
class ProviderError(RuntimeError):
def __init__(self, *args: object) -> None:
super().__init__(*args)