Umstellung auf Apprise API mit .env Konfiguration und Debug-Ausgaben
This commit is contained in:
@ -2,15 +2,28 @@ import requests
|
||||
import json
|
||||
from datetime import datetime
|
||||
import re
|
||||
import os
|
||||
from dotenv import load_dotenv
|
||||
import apprise
|
||||
|
||||
# Lade Umgebungsvariablen aus .env Datei
|
||||
load_dotenv()
|
||||
|
||||
TI_API_URL = "https://ti-lage.prod.ccs.gematik.solutions/lageapi/v2/tilage"
|
||||
WEBHOOK_URL = "https://mattermost.medisoftware.org/hooks/i67zgcgajifxxxtfwjxcxace7a"
|
||||
STATE_FILE = "ti_status_state.json"
|
||||
|
||||
# Apprise Konfiguration aus Umgebungsvariablen
|
||||
APPRISE_URL = os.getenv('APPRISE_URL')
|
||||
if not APPRISE_URL:
|
||||
raise ValueError("APPRISE_URL muss in der .env Datei definiert sein")
|
||||
|
||||
def fetch_status_messages():
|
||||
print(f"Rufe TI-Status-API ab: {TI_API_URL}")
|
||||
resp = requests.get(TI_API_URL)
|
||||
resp.raise_for_status()
|
||||
data = resp.json()
|
||||
print(f"API-Antwort erhalten. Anzahl Meldungen: {len(data.get('meldungen', []))}")
|
||||
|
||||
messages = []
|
||||
for meldung in data.get("meldungen", []):
|
||||
zeit = meldung.get("zeitpunkt", "")
|
||||
@ -19,6 +32,9 @@ def fetch_status_messages():
|
||||
link = meldung.get("link", "")
|
||||
msg = f"{zeit}\n- {titel}: {beschreibung}\n{link}".strip()
|
||||
messages.append(msg)
|
||||
print(f"Verarbeite Meldung: {titel[:50]}...")
|
||||
|
||||
print(f"Insgesamt {len(messages)} Meldungen verarbeitet")
|
||||
return messages
|
||||
|
||||
def load_state():
|
||||
@ -51,13 +67,25 @@ def markdownify_message(message):
|
||||
md_message = "\n\n".join([l for l in md_lines if l])
|
||||
return md_message
|
||||
|
||||
def send_to_mattermost(message):
|
||||
def send_notification(message):
|
||||
md_message = markdownify_message(message)
|
||||
payload = {
|
||||
"text": f"#### Neue TI-Status-Meldung\n\n{md_message}\n\n[Zur Statusseite](https://fachportal.gematik.de/ti-status)\n_Gemeldet am {datetime.now().strftime('%d.%m.%Y %H:%M:%S')}_"
|
||||
}
|
||||
resp = requests.post(WEBHOOK_URL, json=payload)
|
||||
resp.raise_for_status()
|
||||
|
||||
# Erstelle Apprise Objekt
|
||||
apobj = apprise.Apprise()
|
||||
|
||||
# Füge die Apprise URL hinzu
|
||||
apobj.add(APPRISE_URL)
|
||||
|
||||
# Erstelle die Nachricht
|
||||
title = "Neue TI-Status-Meldung"
|
||||
body = f"{md_message}\n\n[Zur Statusseite](https://fachportal.gematik.de/ti-status)\n_Gemeldet am {datetime.now().strftime('%d.%m.%Y %H:%M:%S')}_"
|
||||
|
||||
# Sende die Nachricht
|
||||
apobj.notify(
|
||||
title=title,
|
||||
body=body,
|
||||
body_format=apprise.NotifyFormat.MARKDOWN
|
||||
)
|
||||
|
||||
def main():
|
||||
state = load_state()
|
||||
@ -68,7 +96,7 @@ def main():
|
||||
new_messages = [m for m in messages if m not in known_messages]
|
||||
for msg in new_messages:
|
||||
print(f"Neue Meldung gefunden: {msg}")
|
||||
send_to_mattermost(msg)
|
||||
send_notification(msg)
|
||||
known_messages.add(msg)
|
||||
if new_messages:
|
||||
save_state({"messages": list(known_messages)})
|
||||
|
Reference in New Issue
Block a user