"""Zentrale Cache-Key-Definitionen für Rippy API.""" from typing import Dict, Final, Optional # Pre-Scan Keys PRESCAN_AUDIO_PREFIX: Final[str] = "prescan:audio:" PRESCAN_VIDEO_PREFIX: Final[str] = "prescan:video:" PRESCAN_KEY_TEMPLATE: Final[str] = "{prefix}{device_path}" # Metadaten Keys METADATA_TMDB_PREFIX: Final[str] = "tmdb:" METADATA_MUSICBRAINZ_PREFIX: Final[str] = "musicbrainz:" METADATA_THETVDB_PREFIX: Final[str] = "thetvdb:" # Confirmed Metadata CONFIRMED_METADATA_PREFIX: Final[str] = "confirmed:" CONFIRMED_KEY_TEMPLATE: Final[str] = "{prefix}{title}:{year}" # Device Info DEVICE_INFO_PREFIX: Final[str] = "device:info:" DEVICE_INFO_KEY_TEMPLATE: Final[str] = "{prefix}{device_path}" # Job Results JOB_RESULTS_PREFIX: Final[str] = "job:results:" JOB_RESULTS_KEY_TEMPLATE: Final[str] = "{prefix}{job_id}" # Fallback Values (für Fallback-UI) FALLBACK_CONFIDENCE: Final[float] = 0.3 FALLBACK_YEAR: Final[int] = 2000 FALLBACK_TITLE: Final[str] = "Unbekannter Titel" def generate_prescan_key(device_path: str, is_audio: bool = False, fingerprint: str = "") -> str: """Generiere Cache-Key für Pre-Scan. fingerprint (Label+Größe der DISC) ist Pflichtbestandteil seit 23.07.: Ein Key nur aus dem Gerätepfad servierte der NÄCHSTEN Disc im selben Laufwerk die Metadaten der vorherigen. """ prefix = PRESCAN_AUDIO_PREFIX if is_audio else PRESCAN_VIDEO_PREFIX return f"{prefix}{device_path}:{fingerprint}" def generate_confirmed_key(title: str, year: Optional[int] = None) -> str: """Generiere Cache-Key für bestätigte Metadaten.""" year_str = str(year) if year else "0" return f"confirmed:{title}:{year_str}" def generate_tmdb_key(endpoint: str, params: Optional[Dict] = None) -> str: """Generiere Cache-Key für TMDB API.""" if params: return f"{METADATA_TMDB_PREFIX}{endpoint}:{str(params)}" return f"{METADATA_TMDB_PREFIX}{endpoint}"