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