Files
Curator/docs/modules/core.tmdb.md
T

3.2 KiB

src/core/tmdb.py

TMDb (The Movie Database) client — Curator's identity source.

Replaces ČSFD. Its only job is to turn a TMDb id (or a title/year search) into a canonical title + year for naming the pool file. The rich metadata and artwork are fetched by Jellyfin itself — Curator does not need them here.

Needs a free API key in TMDB_API_KEY (loaded from .env). Everything degrades gracefully when the key or the network is missing: api_available reports readiness and the lookups raise TmdbError with a clear message.

Source: src/core/tmdb.py

Classes

TmdbResult

class · line 29

class TmdbResult:

A resolved TMDb entry — just enough to name the pool file.

TmdbDetails

class · line 39

class TmdbDetails:

Full TMDb data used to (re)generate a movie's tags (genres etc.).

Exposes field_values so it plugs into the tag schema the same way the NFO reader does (fields: genres / countries / year / rating).

TmdbDetails.field_values

method · line 53

field_values(name: str) -> list[str]

The values of one tag source field (genres, countries, year, rating, …) as a list of strings, ready to become tags. Unknown field names return an empty list.

TmdbError

class · line 65

class TmdbError(RuntimeError):

A TMDb request could not be completed (no key, network, bad status).

Functions

api_key

function · line 69

api_key() -> Optional[str]

The configured TMDb API key, or None.

api_available

function · line 75

api_available() -> bool

True when a TMDb API key is configured.

_get

function · line 80

_get(path: str, params: dict) -> dict

GET a TMDb API path with the configured key and language. Raises TmdbError on a missing key, a network failure or an error response.

_year_of

function · line 98

_year_of(date_str: Optional[str]) -> Optional[str]

The four-digit year at the start of a TMDb date (YYYY-MM-DD), or None.

lookup_movie

function · line 104

lookup_movie(tmdb_id: int) -> Optional[TmdbResult]

Resolve a movie by its TMDb id → title + year, or None if it has no title.

movie_details

function · line 113

movie_details(tmdb_id: int) -> TmdbDetails

Full movie data from TMDb (genres/countries/rating/year), localized to cs.

lookup_tv

function · line 127

lookup_tv(tmdb_id: int) -> Optional[TmdbResult]

Resolve a series by its TMDb id → name + first-air year, or None.

lookup

function · line 136

lookup(tmdb_id: int, kind: str='movie') -> Optional[TmdbResult]

Resolve a TMDb id as a movie (default) or a series (kind="tv").

search_movie

function · line 141

search_movie(query: str, year: Optional[str]=None, limit: int=5) -> list[TmdbResult]

Search movies by title (optionally narrowed by year); best matches first.

search_tv

function · line 161

search_tv(query: str, year: Optional[str]=None, limit: int=5) -> list[TmdbResult]

Search series by name (optionally narrowed by first-air year).