diff --git a/web_check.py b/web_check.py index 4a86f4a..09395ec 100644 --- a/web_check.py +++ b/web_check.py @@ -21,7 +21,7 @@ SIGNAL_NUMBER = os.getenv("SIGNAL_NUMBER") SIGNAL_GROUPE_ID = os.getenv("SIGNAL_GROUPE_ID") DEBUG_LOG = os.getenv("DEBUG_LOG", "false").lower() == "true" MIN_RELEVANZ_SCORE = int(os.getenv("MIN_RELEVANZ_SCORE", "30")) -GEMINI_MODEL = "gemini-3-flash-preview" +GEMINI_MODEL = "gemini-2.5-flash-lite" GEMINI_SESSION = "1" NTFY = "true" SIGNAL = "true" @@ -108,7 +108,7 @@ def analysiere_mit_gemini(text): } -def sende_signal(titel, nachricht, signal_number, signal_group_id): +def sende_signal(titel, nachricht, klick_url, signal_number, signal_group_id): """Sendet eine Benachrichtigung über Signal direkt vom lokalen System.""" if not signal_number or not signal_group_id: print( @@ -117,7 +117,7 @@ def sende_signal(titel, nachricht, signal_number, signal_group_id): return # Nachricht formatieren: Titel in der ersten Zeile, Nachricht in der nächsten - message_content = f"{titel}\n{nachricht}" + message_content = f"{titel}\n{nachricht}\n{(klick_url,)}" # Befehl für die direkte Ausführung lokal # Der Config-Pfad muss hier dem Pfad entsprechen, den Sie bei der Registrierung verwendet haben @@ -283,6 +283,26 @@ def verarbeite_website(url): artikel_inhalt = hole_artikel_text(link) analyse = analysiere_mit_gemini(artikel_inhalt) + # Prüfen, ob die KI-Analyse einen kritischen Fehler meldet + # Ein Fehler wird angenommen, wenn 'begruendung_score' mit "Fehler:" beginnt + # oder wenn der Score 0 ist und eine Fehlermeldung im 'begruendung_score' vorhanden ist. + is_analysis_error = analyse.get("begruendung_score", "").startswith( + "Fehler:" + ) or ( + analyse.get("relevanz_score", 0) == 0 + and "Fehler:" in analyse.get("begruendung_score", "") + ) + + if is_analysis_error: + print( + f" [!] Analyse fehlgeschlagen für {link}: {analyse.get('begruendung_score')}" + ) + debug( + f"Skipping article processing and not marking as processed due to analysis error: {link}" + ) + continue # Nächsten Artikel im Loop bearbeiten, diesen nicht als erledigt markieren + + # Wenn die Analyse erfolgreich war (auch wenn der Score niedrig ist): score = analyse.get("relevanz_score", 0) begruendung = analyse.get( "begruendung_score", "Keine Begründung vorhanden" @@ -309,6 +329,7 @@ def verarbeite_website(url): sende_signal( titel=analyse.get("titel", "Polit-Update"), nachricht=analyse.get("nachricht", "Neu auf der Seite"), + klick_url=link, signal_number=SIGNAL_NUMBER, signal_group_id=SIGNAL_GROUPE_ID, ) @@ -349,6 +370,24 @@ def verarbeite_website(url): else: analyse = analysiere_mit_gemini(line) + # Prüfen, ob die KI-Analyse einen kritischen Fehler meldet + is_analysis_error = analyse.get( + "begruendung_score", "" + ).startswith("Fehler:") or ( + analyse.get("relevanz_score", 0) == 0 + and "Fehler:" in analyse.get("begruendung_score", "") + ) + + if is_analysis_error: + print( + f" [!] Analyse fehlgeschlagen für {target_url}: {analyse.get('begruendung_score')}" + ) + debug( + f"Skipping article processing and not marking as processed due to analysis error: {target_url}" + ) + continue # Nächste Zeile im Diff bearbeiten, diesen nicht als erledigt markieren + + # Wenn die Analyse erfolgreich war (auch wenn der Score niedrig ist): score = analyse.get("relevanz_score", 0) begruendung = analyse.get( "begruendung_score", "Keine Begründung vorhanden" @@ -382,6 +421,7 @@ def verarbeite_website(url): nachricht=analyse.get( "nachricht", "Neu auf der Seite" ), + klick_url=link, signal_number=SIGNAL_NUMBER, signal_group_id=SIGNAL_GROUPE_ID, )