Refresh-Endpoint, Logging mit Timestamp, 12h-Intervall, PDF-Fehler-Logs
This commit is contained in:
@@ -6,6 +6,7 @@ Termine täglich 12:00 mit allen Tagesgerichten (I. bis V.).
|
||||
|
||||
import argparse
|
||||
import io
|
||||
import logging
|
||||
import re
|
||||
from datetime import date, datetime, time
|
||||
from zoneinfo import ZoneInfo
|
||||
@@ -33,6 +34,7 @@ DATE_LINE_RE = re.compile(
|
||||
DISH_LINE_RE = re.compile(r"^\s*(IV\.?|V\.?|I{1,3}\.?)\s*(.*)$", re.IGNORECASE)
|
||||
|
||||
ROMAN_ORDER = {"I": 1, "II": 2, "III": 3, "IV": 4, "V": 5}
|
||||
_log = logging.getLogger(__name__)
|
||||
|
||||
|
||||
def fetch_speiseplan_pdf_urls(base_url: str = BASE_URL) -> list[str]:
|
||||
@@ -177,7 +179,9 @@ def refresh_speiseplan(base_url: str = BASE_URL) -> tuple[dict[date, list[str]],
|
||||
try:
|
||||
urls = fetch_speiseplan_pdf_urls(base_url)
|
||||
if not urls:
|
||||
_log.warning("refresh_speiseplan: Keine PDF-URLs gefunden auf %s", base_url)
|
||||
return None
|
||||
_log.info("refresh_speiseplan: %d PDF(s) gefunden", len(urls))
|
||||
all_parsed: list[list[tuple[date, list[str]]]] = []
|
||||
for url in urls:
|
||||
try:
|
||||
@@ -185,14 +189,19 @@ def refresh_speiseplan(base_url: str = BASE_URL) -> tuple[dict[date, list[str]],
|
||||
text = extract_text_from_pdf(pdf_bytes)
|
||||
days = parse_speiseplan_text(text)
|
||||
all_parsed.append(days)
|
||||
except Exception:
|
||||
_log.info("refresh_speiseplan: %s -> %d Tage", url.split("/")[-1], len(days))
|
||||
except Exception as e:
|
||||
_log.exception("refresh_speiseplan: PDF fehlgeschlagen %s: %s", url, e)
|
||||
continue
|
||||
if not all_parsed:
|
||||
_log.warning("refresh_speiseplan: Kein PDF erfolgreich gelesen")
|
||||
return None
|
||||
by_date = merge_day_events(all_parsed)
|
||||
ical_bytes = build_ical_bytes(by_date)
|
||||
_log.info("refresh_speiseplan: %d Termine im Kalender", len(by_date))
|
||||
return (by_date, ical_bytes)
|
||||
except Exception:
|
||||
except Exception as e:
|
||||
_log.exception("refresh_speiseplan: Ablauf fehlgeschlagen: %s", e)
|
||||
return None
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user