Fehlerhafte Anylysen werden nicht mehr als erledigt behandelt und Signal Notification stabiler gemacht
This commit is contained in:
46
web_check.py
46
web_check.py
@@ -21,7 +21,7 @@ SIGNAL_NUMBER = os.getenv("SIGNAL_NUMBER")
|
|||||||
SIGNAL_GROUPE_ID = os.getenv("SIGNAL_GROUPE_ID")
|
SIGNAL_GROUPE_ID = os.getenv("SIGNAL_GROUPE_ID")
|
||||||
DEBUG_LOG = os.getenv("DEBUG_LOG", "false").lower() == "true"
|
DEBUG_LOG = os.getenv("DEBUG_LOG", "false").lower() == "true"
|
||||||
MIN_RELEVANZ_SCORE = int(os.getenv("MIN_RELEVANZ_SCORE", "30"))
|
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"
|
GEMINI_SESSION = "1"
|
||||||
NTFY = "true"
|
NTFY = "true"
|
||||||
SIGNAL = "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."""
|
"""Sendet eine Benachrichtigung über Signal direkt vom lokalen System."""
|
||||||
if not signal_number or not signal_group_id:
|
if not signal_number or not signal_group_id:
|
||||||
print(
|
print(
|
||||||
@@ -117,7 +117,7 @@ def sende_signal(titel, nachricht, signal_number, signal_group_id):
|
|||||||
return
|
return
|
||||||
|
|
||||||
# Nachricht formatieren: Titel in der ersten Zeile, Nachricht in der nächsten
|
# 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
|
# Befehl für die direkte Ausführung lokal
|
||||||
# Der Config-Pfad muss hier dem Pfad entsprechen, den Sie bei der Registrierung verwendet haben
|
# 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)
|
artikel_inhalt = hole_artikel_text(link)
|
||||||
analyse = analysiere_mit_gemini(artikel_inhalt)
|
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)
|
score = analyse.get("relevanz_score", 0)
|
||||||
begruendung = analyse.get(
|
begruendung = analyse.get(
|
||||||
"begruendung_score", "Keine Begründung vorhanden"
|
"begruendung_score", "Keine Begründung vorhanden"
|
||||||
@@ -309,6 +329,7 @@ def verarbeite_website(url):
|
|||||||
sende_signal(
|
sende_signal(
|
||||||
titel=analyse.get("titel", "Polit-Update"),
|
titel=analyse.get("titel", "Polit-Update"),
|
||||||
nachricht=analyse.get("nachricht", "Neu auf der Seite"),
|
nachricht=analyse.get("nachricht", "Neu auf der Seite"),
|
||||||
|
klick_url=link,
|
||||||
signal_number=SIGNAL_NUMBER,
|
signal_number=SIGNAL_NUMBER,
|
||||||
signal_group_id=SIGNAL_GROUPE_ID,
|
signal_group_id=SIGNAL_GROUPE_ID,
|
||||||
)
|
)
|
||||||
@@ -349,6 +370,24 @@ def verarbeite_website(url):
|
|||||||
else:
|
else:
|
||||||
analyse = analysiere_mit_gemini(line)
|
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)
|
score = analyse.get("relevanz_score", 0)
|
||||||
begruendung = analyse.get(
|
begruendung = analyse.get(
|
||||||
"begruendung_score", "Keine Begründung vorhanden"
|
"begruendung_score", "Keine Begründung vorhanden"
|
||||||
@@ -382,6 +421,7 @@ def verarbeite_website(url):
|
|||||||
nachricht=analyse.get(
|
nachricht=analyse.get(
|
||||||
"nachricht", "Neu auf der Seite"
|
"nachricht", "Neu auf der Seite"
|
||||||
),
|
),
|
||||||
|
klick_url=link,
|
||||||
signal_number=SIGNAL_NUMBER,
|
signal_number=SIGNAL_NUMBER,
|
||||||
signal_group_id=SIGNAL_GROUPE_ID,
|
signal_group_id=SIGNAL_GROUPE_ID,
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user