95c1f9b105
- Theme Context ausgelagert (ThemeContext.tsx + useDarkMode.ts) - Config Validation mit TMDB-API-Key Pflicht (config_validation.py) - Cache Key Centralization (cache/keys.py) - CD-Ripping mit abcde implementiert (Worker) - Docker Compose mit Healthchecks & LOG_LEVEL - ROADMAP.md & SAVEPOINT.md aktualisiert
59 lines
1.8 KiB
Python
59 lines
1.8 KiB
Python
"""Validation für Rippy Configuration."""
|
|
|
|
from typing import Optional
|
|
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 API Key ist Pflicht (gemäß KONZEPT.md)
|
|
if not settings.tmdb_api_key:
|
|
raise ConfigValidationError(
|
|
"TMDB_API_KEY ist erforderlich für Metadaten-Lookup.\n"
|
|
"Hole dir einen免费en Key auf https://www.themoviedb.org/\n"
|
|
"Setze ihn als Umgebungsvariable: TMDB_API_KEY=dein_key"
|
|
)
|
|
|
|
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."
|
|
)
|
|
|
|
# Optional: JWT Secret (wird generiert, wenn nicht gesetzt)
|
|
if not settings.jwt_secret_key:
|
|
warnings.append(
|
|
"JWT_SECRET_KEY nicht gesetzt. Auto-Generierung wird verwendet."
|
|
)
|
|
|
|
return settings, warnings
|