diff --git a/scanner/scanner/models/videos.py b/scanner/scanner/models/videos.py index 8ed7f405..df81eee4 100644 --- a/scanner/scanner/models/videos.py +++ b/scanner/scanner/models/videos.py @@ -1,9 +1,10 @@ from __future__ import annotations +from typing import Any, Literal, Optional + from ..utils import Model from .extra import ExtraKind -from .metadataid import MetadataId, EpisodeId -from typing import Optional, Literal, Any +from .metadataid import EpisodeId, MetadataId class Resource(Model): @@ -20,11 +21,11 @@ class VideoInfo(Model): class Guess(Model, extra="allow"): title: str kind: Literal["episode"] | Literal["movie"] | Literal["extra"] - extraKind: Optional[ExtraKind] + extra_kind: Optional[ExtraKind] years: list[int] episodes: list[Guess.Episode] external_id: dict[str, MetadataId | EpisodeId] - raw: dict[str, Any] + raw: dict[str, Any] = {} from_: str history: list[Guess] = [] @@ -67,6 +68,6 @@ class Video(Model): part: Optional[int] version: int = 1 guess: Guess - for_: Optional[ + for_: list[ For.Slug | For.ExternalId | For.Movie | For.Episode | For.Order | For.Special - ] = None + ] = [] diff --git a/scanner/scanner/utils.py b/scanner/scanner/utils.py index dc76e680..1dee812c 100644 --- a/scanner/scanner/utils.py +++ b/scanner/scanner/utils.py @@ -1,7 +1,8 @@ -from pydantic import BaseModel, ConfigDict -from pydantic.alias_generators import to_camel from datetime import date + from langcodes import Language +from pydantic import AliasGenerator, BaseModel, ConfigDict +from pydantic.alias_generators import to_camel def format_date(date: date | int | None) -> str | None: @@ -24,5 +25,7 @@ class ProviderError(RuntimeError): class Model(BaseModel): model_config = ConfigDict( use_enum_values=True, - alias_generator=to_camel, + alias_generator=AliasGenerator( + serialization_alias=lambda x: to_camel(x[:-1] if x[-1] == "_" else x), + ), )