diff --git a/prep.py b/prep.py index 6e2c582..219e656 100755 --- a/prep.py +++ b/prep.py @@ -45,6 +45,35 @@ def build_html(events: list[dict], dayNames: list[str]) -> str: events_html.append(f"\n
{event_html}
") return events_html +def build_ical(events: list[dict]) -> str: + today = datetime.today().now() + # Header + events_ical = "" + with open("template/head.ical", "r") as file: + events_ical += file.read() + # Events + for event in events: + title = event["title"] + location = event["location"] + date = event["date"] + date = str(date.year) + str(date.month).zfill(2) + str(date.day).zfill(2) + created = str(today.year) + str(today.month).zfill(2) + str(today.day).zfill(2) + "T" + str(today.hour).zfill(2) + str(today.minute).zfill(2) + str(today.second).zfill(2) + "Z" + time = event["time"] + date = date + "T" + time.replace(":", "") + "00" + + event_template = "" + with open("template/event.ical", "r") as file: + event_template += file.read() + event_template = event_template.replace("", created) + event_template = event_template.replace("", date) + event_template = event_template.replace("", title) + + events_ical += event_template + # Footer + with open("template/end.ical", "r") as file: + events_ical += file.read() + return events_ical + events = sorted(load_events("dogadjaji.csv"), key=lambda e: e["date"]) today = datetime.today().date() @@ -87,3 +116,10 @@ with open("pages/en/events_archive.html", "r") as file: with open("pages/en/events_archive.html", "w") as file: file.writelines(page_template + past_events_html) + +new_events_ical = build_ical(new_events) + +# Build ical +with open("site/events.ical", "w") as file: + file.write(build_ical) + diff --git a/template/end.ical b/template/end.ical new file mode 100644 index 0000000..b0bb4bc --- /dev/null +++ b/template/end.ical @@ -0,0 +1 @@ +END:VCALENDAR diff --git a/template/event.ical b/template/event.ical new file mode 100644 index 0000000..cd1e8d0 --- /dev/null +++ b/template/event.ical @@ -0,0 +1,13 @@ +BEGIN:VEVENT +UID:calendar.462701.field_date_time.0@dmz.rs +DTSTAMP: +CREATED: +DTSTART;TZID=Europe/Belgrade: +DTEND;TZID=Europe/Belgrade: +GEO:+44.805613;+20.479234 +LAST-MODIFIED:20240102T222415Z +LOCATION:DC Krov\, Kraljice Marije 47\, 6\, Beograd\, Serbia +STATUS:CONFIRMED +SUMMARY: +URL;TYPE=URI:https://dmz.rs +END:VEVENT diff --git a/template/head.ical b/template/head.ical new file mode 100644 index 0000000..0deb7ac --- /dev/null +++ b/template/head.ical @@ -0,0 +1,20 @@ +BEGIN:VCALENDAR +VERSION:2.0 +PRODID:-//Date iCal v3.8//NONSGML kigkonsult.se iCalcreator 2.20.2// +METHOD:PUBLISH +X-WR-CALNAME;VALUE=TEXT:Decentrala events +BEGIN:VTIMEZONE +TZID:Europe/Belgrade +BEGIN:STANDARD +DTSTART:20231029T030000 +TZOFFSETFROM:+0200 +TZOFFSETTO:+0100 +TZNAME:CET +END:STANDARD +BEGIN:DAYLIGHT +DTSTART:20240331T020000 +TZOFFSETFROM:+0100 +TZOFFSETTO:+0200 +TZNAME:CEST +END:DAYLIGHT +END:VTIMEZONE