Relevanz Erkennung verfeineret, Handlungsbedarf (Socialmedia-Posts) hinzugefügt und Tags (Emojis) werden jetzt automatisch, Themenvasiert erstellt + kleinere Verfeinerungen
This commit is contained in:
80
web_check.py
80
web_check.py
@@ -19,9 +19,10 @@ ADMIN_PW = os.getenv("ADMIN_PW")
|
|||||||
NTFY_BASE = os.getenv("NTFY_BASE")
|
NTFY_BASE = os.getenv("NTFY_BASE")
|
||||||
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 = "flash"
|
GEMINI_MODEL = "gemini-2.5-flash-lite"
|
||||||
GEMINI_SESSION = "1"
|
GEMINI_SESSION = "1"
|
||||||
|
NTFY = "true"
|
||||||
|
SIGNAL = "true"
|
||||||
TOPIC_PUBLIC = "polit-scraper-public"
|
TOPIC_PUBLIC = "polit-scraper-public"
|
||||||
TOPIC_ADMIN = "polit-scraper-admin"
|
TOPIC_ADMIN = "polit-scraper-admin"
|
||||||
|
|
||||||
@@ -88,38 +89,30 @@ def analysiere_mit_gemini(text):
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
def sende_public(titel, nachricht, klick_url, category="info", priority=3):
|
def sende_public(titel, nachricht, klick_url, tags, priority=3):
|
||||||
"""Sendet Push-Nachricht an ntfy."""
|
"""Sendet Push-Nachricht an ntfy."""
|
||||||
if not NTFY_BASE:
|
if NTFY == "true":
|
||||||
return
|
if not NTFY_BASE:
|
||||||
url = f"{NTFY_BASE}/{TOPIC_PUBLIC}"
|
return
|
||||||
emoji_mapping = {
|
url = f"{NTFY_BASE}/{TOPIC_PUBLIC}"
|
||||||
"demo": "rotating_light,loudspeaker",
|
headers = {
|
||||||
"socialmedia": "detective,no_entry",
|
"Title": titel.encode("utf-8"),
|
||||||
"polizei": "police_car,warning",
|
"Tags": tags.encode("utf-8"),
|
||||||
"stadt": "cityscape,newspaper",
|
"Click": klick_url,
|
||||||
"solidaritaet": "fist,heart",
|
"Priority": str(priority),
|
||||||
"info": "newspaper",
|
}
|
||||||
}
|
try:
|
||||||
tags = emoji_mapping.get(category.lower(), "newspaper")
|
import requests
|
||||||
headers = {
|
|
||||||
"Title": titel.encode("utf-8"),
|
|
||||||
"Tags": tags,
|
|
||||||
"Click": klick_url,
|
|
||||||
"Priority": str(priority),
|
|
||||||
}
|
|
||||||
try:
|
|
||||||
import requests
|
|
||||||
|
|
||||||
requests.post(
|
requests.post(
|
||||||
url,
|
url,
|
||||||
data=nachricht.encode("utf-8"),
|
data=nachricht.encode("utf-8"),
|
||||||
headers=headers,
|
headers=headers,
|
||||||
auth=(ADMIN_USER, ADMIN_PW),
|
auth=(ADMIN_USER, ADMIN_PW),
|
||||||
timeout=10,
|
timeout=10,
|
||||||
)
|
)
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
print(f" [!] Fehler Public-Versand: {e}")
|
print(f" [!] Fehler Public-Versand: {e}")
|
||||||
|
|
||||||
|
|
||||||
def sende_admin(titel, nachricht):
|
def sende_admin(titel, nachricht):
|
||||||
@@ -229,15 +222,17 @@ def verarbeite_website(url):
|
|||||||
"begruendung_score", "Keine Begründung vorhanden"
|
"begruendung_score", "Keine Begründung vorhanden"
|
||||||
)
|
)
|
||||||
|
|
||||||
if analyse.get("relevant") and score >= MIN_RELEVANZ_SCORE:
|
if score >= MIN_RELEVANZ_SCORE:
|
||||||
print(f" [!] RELEVANT (Score: {score}): {analyse.get('titel')}")
|
if DEBUG_LOG:
|
||||||
debug(f"Begründung: {begruendung}")
|
debug(
|
||||||
|
f"KI-Analyse-Ergebnis (JSON): {json.dumps(analyse, indent=2, ensure_ascii=False)}"
|
||||||
|
)
|
||||||
sende_public(
|
sende_public(
|
||||||
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,
|
klick_url=link,
|
||||||
category=analyse.get("category", "info"),
|
|
||||||
priority=analyse.get("priority", 3),
|
priority=analyse.get("priority", 3),
|
||||||
|
tags=analyse.get("tags", "panda_face"),
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
debug(
|
debug(
|
||||||
@@ -280,16 +275,18 @@ def verarbeite_website(url):
|
|||||||
"begruendung_score", "Keine Begründung vorhanden"
|
"begruendung_score", "Keine Begründung vorhanden"
|
||||||
)
|
)
|
||||||
|
|
||||||
if analyse.get("relevant") and score >= MIN_RELEVANZ_SCORE:
|
if score >= MIN_RELEVANZ_SCORE:
|
||||||
print(
|
print(
|
||||||
f" [!] RELEVANT (Score: {score}): {analyse.get('titel')}"
|
f" [!] RELEVANT (Score: {score}): {analyse.get('titel')}"
|
||||||
)
|
)
|
||||||
|
if DEBUG_LOG:
|
||||||
|
debug(f"KI-Analyse-Ergebnis (JSON): {json.dumps(analyse, indent=2, ensure_ascii=False)}")
|
||||||
debug(f"Begründung: {begruendung}")
|
debug(f"Begründung: {begruendung}")
|
||||||
sende_public(
|
sende_public(
|
||||||
analyse.get("titel"),
|
analyse.get("titel"),
|
||||||
analyse.get("nachricht"),
|
analyse.get("nachricht"),
|
||||||
target_url,
|
target_url,
|
||||||
analyse.get("category"),
|
analyse.get("tags"),
|
||||||
analyse.get("priority"),
|
analyse.get("priority"),
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
@@ -321,8 +318,13 @@ with open("./urls.txt", "r", encoding="utf-8") as datei:
|
|||||||
adresse = zeile.strip()
|
adresse = zeile.strip()
|
||||||
if not adresse or adresse.startswith("#"):
|
if not adresse or adresse.startswith("#"):
|
||||||
continue
|
continue
|
||||||
|
print(" ")
|
||||||
|
print(
|
||||||
|
"----------------------------------------------------------------------------------------------------"
|
||||||
|
)
|
||||||
|
print(" ")
|
||||||
print(f"Ich prüfe: {adresse}")
|
print(f"Ich prüfe: {adresse}")
|
||||||
verarbeite_website(adresse)
|
verarbeite_website(adresse)
|
||||||
|
|
||||||
conn.close()
|
conn.close()
|
||||||
print("\nFertig. Gute Nacht!")
|
print("\nBleibt wachsam und solidarisch! Bis zum nächsten Lauf.")
|
||||||
|
|||||||
Reference in New Issue
Block a user