"""Validation für Rippy Configuration.""" from pydantic import ValidationError from config import Settings class ConfigValidationError(Exception): """Wird geworfen, wenn die Konfiguration ungültig ist.""" pass def validate_config() -> Settings: """Validiere Konfiguration und wirf Fehler bei fehlenden Pflicht-Werten.""" try: settings = Settings() # TMDB-Key ist EMPFOHLEN, nicht zwingend: main.py fängt diesen Fehler ab und # gibt nur eine Warnung aus — die API startet auch ohne Key, und der Key lässt # sich jederzeit im UI (Einstellungen → System) nachtragen. if not settings.tmdb_api_key: raise ConfigValidationError( "TMDB_API_KEY ist nicht gesetzt (empfohlen für Metadaten-Lookup).\n" "Kostenlosen Key auf https://www.themoviedb.org/ holen und als\n" "Umgebungsvariable TMDB_API_KEY setzen — oder später im UI eintragen." ) return settings except ValidationError as e: raise ConfigValidationError(f"Konfigurationsfehler: {e}") def get_config_with_fallback() -> tuple[Settings, list[str]]: """Hole Konfiguration mit Fallback-Werten für optionale Felder. Returns: tuple: (Settings, List of warnings) """ settings = Settings() warnings = [] # Optional: TVDb API Key (Fallback auf TMDB) if not settings.thetvdb_api_key: warnings.append( "THETVDB_API_KEY nicht gesetzt. TheTVDB-Fallback wird verwendet." ) # Optional: MusicBrainz User (Fallback auf öffentlichen Zugriff) if not settings.musicbrainz_user: warnings.append( "MUSICBRAINZ_USER nicht gesetzt. Öffentlicher Zugriff wird verwendet." ) return settings, warnings