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))