34 lines
1.3 KiB
Python
34 lines
1.3 KiB
Python
|
from csv import reader
|
||
|
from datetime import date, time, datetime
|
||
|
from ical.calendar import Calendar
|
||
|
from ical.event import Event
|
||
|
from ical.calendar_stream import IcsCalendarStream
|
||
|
from re import sub
|
||
|
|
||
|
# def cleanup(text):
|
||
|
# return sub(r' {2,}', " ", text.replace("\t", " ")).strip().replace("Quiz", "Quiz +")
|
||
|
|
||
|
calendar = Calendar()
|
||
|
|
||
|
CLASS_START = time(hour=10, minute=52)
|
||
|
CLASS_END = time(hour=12, minute=7)
|
||
|
|
||
|
tech = list(reader(open('Tech Calendar 2024-2025 Grade 10.1.csv', newline='')))
|
||
|
dates = []
|
||
|
for i in range(0, len(tech), 4):
|
||
|
for k in range(len(tech[i])):
|
||
|
if tech[i+1][k]:
|
||
|
event = tech[i+1][k].title()
|
||
|
else:
|
||
|
event = (tech[i+2][k].title() + " & " + tech[i+3][k].title()).strip(" & ")
|
||
|
if event == "" or event.lower() == "pa day" or event.lower() == "pd day" or "break" in event.lower():
|
||
|
continue
|
||
|
year = "2025 " if "January" in tech[i][k] else "2024 "
|
||
|
day = datetime.strptime(year + tech[i][k], "%Y %B %d").date()
|
||
|
print(f"{day=} {event=}")
|
||
|
calendar.events.append(
|
||
|
Event(summary=event, start=datetime.combine(day, CLASS_START), end=datetime.combine(day, CLASS_END))
|
||
|
)
|
||
|
|
||
|
with open("tech.ics", "w") as ics_file:
|
||
|
ics_file.write(IcsCalendarStream.calendar_to_ics(calendar))
|