pcs-website-test/lektor/lektordata/scripts/calendar-fetcher.py
2025-01-10 22:35:21 +01:00

57 lines
No EOL
1.7 KiB
Python

from datetime import datetime, date, timezone
import locale
import sys
from calendarstuff import get_events
def fetch_upcoming_events(ics_url):
events = get_events(ics_url)
for event in events:
start = event.get('dtstart').dt
out_summary = event.get('summary')
location = event.get('location', 'No location specified')
out_startdate = start.strftime("%a. %-d. %B %Y")
# Format output based on whether it's an all-day event
if isinstance(start, date) and not isinstance(start, datetime):
out_starttime = " "
else:
out_starttime = start.strftime('%-H:%M')
if location != 'No location specified':
out_location = location
else:
out_location = " "
print(f"* <div>{out_summary}</div>&nbsp;")
print(f" * <div>{out_startdate}</div>&nbsp;")
print(f" * <div>{out_starttime}</div>&nbsp;")
print(f" * <div>{out_location}</div>&nbsp;")
if __name__ == "__main__":
ics_url = sys.argv[1]
# ics_url = "https://backoffice.pc-stammertal.ch/remote.php/dav/public-calendars/RqLX5wj25aY6cpnP?export"
print("_model: page")
print("---")
print("title: Termine")
print("---")
print("body:")
print("")
print("<center><a href=\"https://backoffice.pc-stammertal.ch/apps/calendar/p/RqLX5wj25aY6cpnP\">Kalender Abonnieren</a></center>")
print("")
print("<center><a href=\"https://backoffice.pc-stammertal.ch/apps/calendar/p/RqLX5wj25aY6cpnP\"><img src=\"/images/calendar.png\" alt=\"Link als QR code\"></a></center>")
print("")
fetch_upcoming_events(ics_url)
print("")
print("---")
print("_template: page.html")
print("")
print("")