Metadaten-Feinschliff: Wort-Strip-Degradation + kein Caching von "unknown"
Ampel / ampel (push) Failing after 40s

- 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 <noreply@anthropic.com>
This commit is contained in:
Hitonabi
2026-07-23 21:10:15 +02:00
parent 90eb17d407
commit f2d5961c33
+10 -3
View File
@@ -139,9 +139,13 @@ def titel_kandidaten(titel: str) -> List[str]:
merke(titel.replace(":", "")) merke(titel.replace(":", ""))
import re as _re import re as _re
merke(_re.sub(r"\([^)]*\)", "", titel)) # Klammer-Zusätze raus 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() worte = titel.split()
if len(worte) > 2: while len(worte) > 1 and len(kandidaten) < 6:
merke(" ".join(worte[:-1])) # letztes Wort strippen worte = worte[:-1]
merke(" ".join(worte))
return kandidaten return kandidaten
@@ -468,5 +472,8 @@ class PreScan:
metadata=metadata, metadata=metadata,
tracks=toc.get("tracks", []) 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 return result