TEST Kerstin
from pathlib import Path import re, html, json
src = Path("/mnt/data/Eingefügter Text(8).txt") text = src.read_text(encoding="utf-8")
events = re.findall(
r'
',
text, flags=re.S
)
def parse_info(title):
title = html.unescape(title)
parts = {}
for key in ["Uhrzeit", "Zielgruppe", "Treffpunkt", "Beschreibung"]:
m = re.search(
rf'{key}:\s*(.*?)(?=\n\s*(?:Uhrzeit|Zielgruppe|Treffpunkt|Beschreibung):|$)',
title, re.S
)
if m:
parts[key] = " ".join(m.group(1).split())
return parts
date_map = [
("2026-10-06","Oktober 2026",6), ("2026-10-08","Oktober 2026",8),
("2026-10-09","Oktober 2026",9), ("2026-10-09","Oktober 2026",9),
("2026-10-09","Oktober 2026",9), ("2026-10-21","Oktober 2026",21),
("2026-10-22","Oktober 2026",22), ("2026-10-31","Oktober 2026",31),
("2026-11-05","November 2026",5), ("2026-11-05","November 2026",5),
("2026-11-09","November 2026",9), ("2026-11-10","November 2026",10),
("2026-11-10","November 2026",10), ("2026-11-11","November 2026",11),
("2026-11-15","November 2026",15), ("2026-11-17","November 2026",17),
("2026-11-19","November 2026",19), ("2026-11-21","November 2026",21),
("2026-11-24","November 2026",24), ("2026-11-24","November 2026",24),
("2026-11-25","November 2026",25), ("2026-11-26","November 2026",26)
] assert len(events) == len(date_map)
records=[] for i, ((date, month, day), (title, visible)) in enumerate(zip(date_map, events), 1):
info=parse_info(title)
records.append({
"id":i, "date":date, "month":month, "day":day,
"title":" ".join(html.unescape(visible).split()),
"time":info.get("Uhrzeit",""),
"audience":info.get("Zielgruppe",""),
"place":info.get("Treffpunkt",""),
"description":info.get("Beschreibung","")
})
data_json=json.dumps(records,ensure_ascii=False,indent=2)
html_out = """<!doctype html>
Familienangebote – Oktober & November 2026
Alle im Kalender vorhandenen Termine sind enthalten. Unter dem Kalender finden Sie sämtliche Informationen zu jedem einzelnen Angebot.
Alle Angebote im Überblick
Hier finden Sie zu jedem Termin Datum, Uhrzeit, Zielgruppe, Treffpunkt und die vollständige Beschreibung.
"""
html_out = html_out.replace("__DATA__", data_json) out_path = Path("/mnt/data/Familienangebote_Oktober_November_2026_mobile.html") out_path.write_text(html_out, encoding="utf-8") print(f"Fertig: {out_path}") print(f"Erhaltene Termine: {len(records)}")