From 241ce3ec78116b87ea415a3a1b66d4f5140db90c Mon Sep 17 00:00:00 2001 From: Hitonabi Date: Thu, 23 Jul 2026 21:11:42 +0200 Subject: [PATCH] OMDb-Ergebnis-Waehler: Filme vor Episoden, Poster vor ohne, kurz vor lang MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Die unscharfe Suche nahm blind Treffer 1 — fuer "Evangelion" war das "Episode 110 - ..." (ein Review-Podcast ueber den Film, ohne Poster). Co-Authored-By: Claude Fable 5 --- docker/api/clients/omdb.py | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/docker/api/clients/omdb.py b/docker/api/clients/omdb.py index 996c3ec..e00c48f 100644 --- a/docker/api/clients/omdb.py +++ b/docker/api/clients/omdb.py @@ -66,9 +66,20 @@ class OMDbClient: ).json() treffer = (suche.get("Search") or []) if suche.get("Response") == "True" else [] if treffer: + # Bester Kandidat statt blind Treffer #1: echte Filme vor + # Episoden/Reviews, mit Poster vor ohne, kurzer Titel vor + # langem (Zusatz-Geschwafel wie "Episode 110 - …" verliert). + def rang(t: Dict): + return ( + 0 if t.get("Type") == "movie" else (1 if t.get("Type") == "series" else 2), + 0 if t.get("Poster") not in (None, "", "N/A") else 1, + len(t.get("Title") or ""), + ) + + bester = sorted(treffer, key=rang)[0] data = self.session.get( OMDB_BASE_URL, - params={"apikey": self.api_key, "i": treffer[0]["imdbID"], "r": "json"}, + params={"apikey": self.api_key, "i": bester["imdbID"], "r": "json"}, timeout=10, ).json() except Exception as e: