2.0 KiB
src/core/jellyfin.py
Jellyfin server API client — thin, hybrid integration.
The NFO + artwork on disk stay authoritative (Jellyfin writes and reads them);
this client only does what the disk can't: trigger a library scan and read
back what Jellyfin currently sees (to verify the pool against it). Connection
details come from .env — JELLYFIN_URL and JELLYFIN_API_KEY (created in
the Jellyfin dashboard). Everything degrades gracefully when they are missing.
Source: src/core/jellyfin.py
Classes
JellyfinMovie
class · line 25
class JellyfinMovie:
A movie as Jellyfin currently sees it (for verification).
JellyfinError
class · line 35
class JellyfinError(RuntimeError):
A Jellyfin request could not be completed (no config, network, status).
Functions
base_url
function · line 39
base_url() -> Optional[str]
The configured Jellyfin base URL (no trailing slash), or None.
api_key
function · line 45
api_key() -> Optional[str]
The configured Jellyfin API key, or None.
api_available
function · line 51
api_available() -> bool
True when both the Jellyfin URL and API key are configured.
_request
function · line 56
_request(method: str, path: str, params: Optional[dict]=None, timeout: Optional[int]=None) -> requests.Response
Send one authenticated request to the Jellyfin server (X-Emby-Token header). Raises JellyfinError when the URL/key are missing or the server can't be reached.
server_version
function · line 74
server_version(timeout: Optional[int]=None) -> str
Return the Jellyfin server version (a quick connectivity check).
scan_all
function · line 80
scan_all() -> None
Trigger a scan of all Jellyfin libraries (picks up on-disk changes).
fetch_movies
function · line 85
fetch_movies() -> list[JellyfinMovie]
Read every movie Jellyfin currently has, with its TMDb id and path.