diff --git a/web_check.py b/web_check.py index e4f192c..7e7e436 100644 --- a/web_check.py +++ b/web_check.py @@ -172,7 +172,7 @@ def hole_artikel_text(url): # Scraper um die Unterseite zu laden antwort = scraper.get(url, timeout=10) # Verwandle die Antwort in durchsuchbares HTML - unter_soup = BeautifulSoup(antwort.text, "htpm.parser") + unter_soup = BeautifulSoup(antwort.text, "html.parser") # Suche nach Hauptbereich (wie im Haptscript) bereich = ( unter_soup.find("main") or unter_soup.find("article") or unter_soup.body @@ -208,9 +208,13 @@ def verarbeite_website(url, gedaechtnis): # Holt den alten Text dieser URL aus dem Gedächtnis alter_eintrag = gedaechtnis.get(url, {}) alter_text = alter_eintrag.get("inhalt", "") + bekannte_links = alter_eintrag.get("links", []) + + # Sammelt alle Links aus dem Bereich für die KI + aktuelle_links = extrahiere_links(hauptbereich, url) # Prüft, ob sich der Text seit dem letzten Lauf verändert hat - if alter_text != neuer_text: + if alter_text != neuer_text or aktuelle_links != bekannte_links: print(f" [NEU] Änderung auf {url} gefunden. Ich frage die KI...") # Zerlegt den Text in Zeilen alt_z = alter_text.splitlines() @@ -219,17 +223,26 @@ def verarbeite_website(url, gedaechtnis): diff = [z[2:] for z in difflib.ndiff(alt_z, neu_z) if z.startswith("+ ")] text_fuer_ki = "\n".join(diff) - # Sammelt alle Links aus dem Bereich für die KI - alle_links = extrahiere_links(hauptbereich, url) - # Nur wenn auch wirklich neuer Text vorhanden ist if text_fuer_ki.strip(): - analyse = analysiere_mit_gemini(text_fuer_ki, alle_links) + # --- NEU: Neue Links verfolgen und Artikeltexte abrufen --- + neue_links = [l for l in aktuelle_links if l not in bekannte_links] + # Fallback, falls Gemini den direct_link vergisst: Nimm den ersten neuen Link oder die Haupt-URL + backup_link = neue_links[0] if neue_links else url + + # Wir begrenzen das auf max. 3 neue Links, um Zeit und Tokens zu sparen + for link in neue_links[:3]: + print(f" [..] Lade Artikelinhalt von: {link}") + artikel_inhalt = hole_artikel_text(link) + # Wir hängen den Inhalt direkt an den Text für die KI an + text_fuer_ki += f"\n\n--- ZUSÄTZLICHER ARTIKELKONTEXT ({link}) ---\n{artikel_inhalt}" + + analyse = analysiere_mit_gemini(text_fuer_ki, aktuelle_links) # Falls die KI die Änderung als politisch wichtig einstuft if analyse.get("relevant") == True: print(f" [!] KI bestätigt Relevanz: {analyse.get('titel')}") - # Nutzt den direkten Link der KI oder die Haupt-URL - klick_url = analyse.get("direct_link", url) + # Nutzt den direkten Link der KI oder den Backup-Link + klick_url = analyse.get("direct_link", backup_link) sende_public( titel=analyse.get("titel", "Polit-Update"), nachricht=analyse.get("nachricht", "Neu auf der Seite"), @@ -241,6 +254,7 @@ def verarbeite_website(url, gedaechtnis): # Speichert den neuen Stand dieser Webseite im lokalen Gedächtnis gedaechtnis[url] = { "inhalt": neuer_text, + "links": aktuelle_links, "zeit": str(datetime.now()), "status": status, }