diff --git a/docker/api/main.py b/docker/api/main.py index dca392c..654046c 100644 --- a/docker/api/main.py +++ b/docker/api/main.py @@ -250,6 +250,7 @@ class Job(BaseModel): title: Optional[str] = None error: Optional[str] = None can_retry: bool = False # Rohdaten vorhanden → „Neu komprimieren" sinnvoll + meta: Optional[Dict] = None # Disc-Metadaten (Poster/Jahr/Plot) — fürs Thumbnail in der Jobliste + aktivem Rip-Header class Device(BaseModel): id: str @@ -265,6 +266,13 @@ class Device(BaseModel): def _job_row_to_model(zeile: dict) -> Job: """DB-Zeile → UI-Form (Worker-Status 'running' heißt im UI 'processing').""" status_map = {"running": "processing"} + # meta (JSON-Text) enthält u. a. poster_path — die UI baut daraus das Thumbnail. + # Muss hier mit ins Job-Model, sonst schneidet FastAPIs response_model es weg + # (Befund 25.07.: meta kam nie in der Jobliste an → Filmstreifen-Platzhalter). + try: + meta = json.loads(zeile["meta"]) if zeile.get("meta") else None + except (ValueError, TypeError): + meta = None return Job( id=zeile["id"], type=zeile.get("disc_type") or "unknown", @@ -275,6 +283,7 @@ def _job_row_to_model(zeile: dict) -> Job: progress=zeile.get("progress") or 0, title=zeile.get("title"), error=zeile.get("error"), + meta=meta, ) @app.get("/health")