From 37711f87c1d9dab835193fbef65f3f0e526ba60b Mon Sep 17 00:00:00 2001 From: Hitonabi Date: Thu, 23 Jul 2026 21:25:10 +0200 Subject: [PATCH] Jikan-Retry bei 504 + Cache-Verfall fuer mittelgute Prescan-Treffer MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Jikan (Gratis-Dienst) wirft sporadisch 504 — ein Retry mit 2s Pause; aktuell ist der Dienst ganz down, die Kette faellt sauber auf OMDb. Prescan-Cache: 0.6-0.9 verfaellt nach 1 Tag, ab 0.9 nach 7 Tagen — sonst wuerde ein frueher OMDb-Treffer bessere Quellen fuer immer blocken. Co-Authored-By: Claude Fable 5 --- docker/api/clients/jikan.py | 29 +++++++++++++++++++---------- docker/api/prescan/prescan.py | 8 ++++++-- 2 files changed, 25 insertions(+), 12 deletions(-) diff --git a/docker/api/clients/jikan.py b/docker/api/clients/jikan.py index 5669f8f..42ef7f1 100644 --- a/docker/api/clients/jikan.py +++ b/docker/api/clients/jikan.py @@ -40,16 +40,25 @@ class JikanClient: if cached: return cached - try: - response = self.session.get( - f"{JIKAN_BASE_URL}/anime", - params={"q": title, "limit": 5, "sfw": "true"}, - timeout=10, - ) - response.raise_for_status() - eintraege = response.json().get("data") or [] - except Exception as e: - print(f"Jikan API Error: {e}") + # Jikan wirft sporadisch 504 (Gratis-Dienst) — ein Retry rettet die + # meisten Fälle, mehr wäre Belästigung. + eintraege = None + for versuch in range(2): + try: + response = self.session.get( + f"{JIKAN_BASE_URL}/anime", + params={"q": title, "limit": 5, "sfw": "true"}, + timeout=10, + ) + response.raise_for_status() + eintraege = response.json().get("data") or [] + break + except Exception as e: + print(f"Jikan API Error (Versuch {versuch + 1}): {e}") + if versuch == 0: + import time + time.sleep(2) + if eintraege is None: return None bester, bester_score = None, 0.0 diff --git a/docker/api/prescan/prescan.py b/docker/api/prescan/prescan.py index 6979b03..864c25d 100644 --- a/docker/api/prescan/prescan.py +++ b/docker/api/prescan/prescan.py @@ -487,6 +487,10 @@ class PreScan: ) # 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()) + # Mittelgute Treffer verfallen nach einem Tag — falls eine bessere + # Quelle (Jikan-504 vorbei, TMDB-Key neu) später mehr weiß. + if confidence >= 0.9: + cache_set(cache_key, result.to_dict(), expire=7 * 86400) + elif confidence >= 0.6: + cache_set(cache_key, result.to_dict(), expire=86400) return result