From f2d5961c3391564cce66bb224b56aa2dd76ecbef Mon Sep 17 00:00:00 2001 From: Hitonabi Date: Thu, 23 Jul 2026 21:10:15 +0200 Subject: [PATCH] Metadaten-Feinschliff: Wort-Strip-Degradation + kein Caching von "unknown" MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - titel_kandidaten strippt hintere Worte iterativ bis auf eins ("Evangelion 2.22" wird auch als "Evangelion" gesucht — OMDb braucht das) - Nur Treffer ab Confidence 0.6 landen im Redis-Cache: ein gecachtes "unknown" wurde sonst auch nach Key-Eintrag ewig wieder serviert (Redis ist persistent; Alt-Eintraege auf der VM geloescht) Co-Authored-By: Claude Fable 5 --- docker/api/prescan/prescan.py | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/docker/api/prescan/prescan.py b/docker/api/prescan/prescan.py index 852ffec..4cc02d5 100644 --- a/docker/api/prescan/prescan.py +++ b/docker/api/prescan/prescan.py @@ -139,9 +139,13 @@ def titel_kandidaten(titel: str) -> List[str]: merke(titel.replace(":", "")) import re as _re merke(_re.sub(r"\([^)]*\)", "", titel)) # Klammer-Zusätze raus + # Iterativ hintere Worte strippen (ARM-Lehre): "Evangelion 2.22" muss + # auch als "Evangelion" gesucht werden — Versions-/Zusatz-Tokens stehen + # fast immer hinten. Begrenzt, damit die API-Anfragen überschaubar bleiben. worte = titel.split() - if len(worte) > 2: - merke(" ".join(worte[:-1])) # letztes Wort strippen + while len(worte) > 1 and len(kandidaten) < 6: + worte = worte[:-1] + merke(" ".join(worte)) return kandidaten @@ -468,5 +472,8 @@ class PreScan: metadata=metadata, tracks=toc.get("tracks", []) ) - cache_set(cache_key, result.to_dict()) + # Nur ECHTE Treffer cachen: ein gecachtes "unknown" würde sonst auch + # nach Key-Eintrag/Fix ewig wieder serviert (Redis ist persistent). + if confidence >= 0.6: + cache_set(cache_key, result.to_dict()) return result