Skip to content

Commit 6416c98

Browse files
committed
Add untested ical export for zeus events
1 parent 68df631 commit 6416c98

File tree

2 files changed

+36
-0
lines changed

2 files changed

+36
-0
lines changed

ical_export.py

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
from icalendar import Calendar as iCalendar
2+
from icalendar import Event as iEvent
3+
4+
from .event import Event as ZeusEvent
5+
6+
7+
def to_ical(zevent: ZeusEvent) -> iEvent:
8+
"""Converts a Zeus event to an ical Event (sub)object"""
9+
ievent = iEvent()
10+
ievent['uid'] = zevent.id
11+
ievent['summary'] = zevent.title # FIXME: Moar words
12+
ievent['dtstart'] = zevent.date
13+
return ievent
14+
15+
16+
def generate_calendar(ievents: list[iEvent]) -> iCalendar:
17+
"""Aggregates given ical events into a calendar object"""
18+
cal = iCalendar()
19+
for ievent in ievents:
20+
cal.add_component(event)
21+
return cal
22+
23+
24+
def create_ical_file(ical: iCalendar, filepath: str):
25+
with open(filepath, 'w') as ical_file:
26+
ical_file.write(ical.to_ical())
27+
ical_file.write("\n") # End of file newline
28+
29+
if __name__ == '__main__':
30+
# Fetch a few zeus events, left up to the reader:
31+
# events: list[ZeusEvent] = magic_event_fetcher()
32+
zevents = []
33+
ievents = [to_ical(zevent) for zevent in in zevents]
34+
cal = generate_calendar(ievents)
35+
create_ical_file("zeus_events.ics")

requirements.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
discord.py>=1.3.4
22
pyyaml
3+
icalendar

0 commit comments

Comments
 (0)