Files
NixReaperandClaude Sonnet 5 6c95e18aad
CI / lint (push) Canceled after 0s
CI / typecheck (push) Canceled after 0s
CI / unit-tests (push) Canceled after 0s
CI / integration-tests (push) Canceled after 0s
CI / container-build (push) Canceled after 0s
CI / dependency-audit (push) Canceled after 0s
Add watch providers (where to stream/rent/buy)
New TMDb integration end to end: append_to_response "watch/providers",
normalizer parsing grouped by country/monetization type, a WatchProvider
catalog entry (external-id keyed, same get_or_create pattern as Company/
Collection/Person) + polymorphic WatchProviderOffering table (new
migration 0002), ingestion write (including provider logos via the
existing Artwork table), and API exposure -- embedded on movie/series
detail plus a dedicated /watch-providers sub-route, shaped to mirror
TMDb's own response for easy porting.

Note: this data comes from JustWatch via TMDb and carries its own
attribution requirement separate from TMDb's general one -- flagged in
docs/api.md, must be satisfied before showing this in the frontend.

Co-Authored-By: Claude Sonnet 5 <[email protected]>
2026-09-06 04:59:02 -05:00

86 lines
2.0 KiB
Python

"""Shared enumerations used across Aurora Core models."""
from __future__ import annotations
import enum
class MovieStatus(enum.StrEnum):
RUMORED = "rumored"
PLANNED = "planned"
IN_PRODUCTION = "in_production"
POST_PRODUCTION = "post_production"
RELEASED = "released"
CANCELED = "canceled"
class SeriesStatus(enum.StrEnum):
PLANNED = "planned"
PILOT = "pilot"
IN_PRODUCTION = "in_production"
RETURNING_SERIES = "returning_series"
ENDED = "ended"
CANCELED = "canceled"
class ArtworkType(enum.StrEnum):
POSTER = "poster"
BACKDROP = "backdrop"
LOGO = "logo"
PROFILE = "profile"
STILL = "still"
BANNER = "banner"
THUMBNAIL = "thumbnail"
class VideoType(enum.StrEnum):
TRAILER = "trailer"
TEASER = "teaser"
CLIP = "clip"
FEATURETTE = "featurette"
BEHIND_THE_SCENES = "behind_the_scenes"
INTERVIEW = "interview"
OTHER = "other"
class CompanyType(enum.StrEnum):
PRODUCTION_COMPANY = "production_company"
NETWORK = "network"
STUDIO = "studio"
DISTRIBUTOR = "distributor"
class EntityType(enum.StrEnum):
"""Kinds of entity that polymorphic tables (credits, artwork, videos,
external IDs, release dates, provider records) can attach to."""
MOVIE = "movie"
SERIES = "series"
SEASON = "season"
EPISODE = "episode"
PERSON = "person"
COMPANY = "company"
COLLECTION = "collection"
WATCH_PROVIDER = "watch_provider"
class IngestionJobStatus(enum.StrEnum):
PENDING = "pending"
RUNNING = "running"
SUCCEEDED = "succeeded"
FAILED = "failed"
RETRYING = "retrying"
class MatchConfidence(enum.StrEnum):
"""How confident the entity matcher was when linking a provider record
to an Aurora entity. Anything below HIGH should be reviewable rather
than silently merged — see docs/architecture.md."""
EXACT = "exact"
HIGH = "high"
MEDIUM = "medium"
LOW = "low"
AMBIGUOUS = "ambiguous"
NEW = "new"