import icalendar import datetime import requests import recurring_ical_events import json def getWeek(weekstart: datetime, file: str, showsat: bool): if weekstart == "today": start_date = datetime.date.today() else: start_date = weekstart start_date -= datetime.timedelta(days=start_date.weekday() % 7) end_date = start_date + datetime.timedelta(days=7) with open("calendars/" + file) as f: calendar = icalendar.Calendar.from_ical(f.read()) events = recurring_ical_events.of(calendar).between(start_date, end_date) eventl = [] for event in events: estart = event["DTSTART"].dt formstart = str(estart.hour) + ":" + str(estart.minute) eend = event["DTEND"].dt formend = str(eend.hour) + ":" + str(eend.minute) forml = [formstart, formend] for i in range(2): if len(forml[i]) != 5: if forml[i][-2] == ":": forml[i] = forml[i] + "0" if forml[i][1] == ":": forml[i] = "0" + forml[i] formstart = forml[0] formend = forml[1] eventdict = { "start": formstart, "end": formend, "dur": str(event["DTEND"].dt - event["DTSTART"].dt)[:-3], "name": event["SUMMARY"], "room": event["LOCATION"], "weekday": estart.weekday(), "day": estart.day } eventl += [eventdict] return eventl, daylist(start_date, showsat) shortnames = ["mon", "tue", "wed", "thu", "fri", "sat"] longnames = ["Montag", "Dienstag", "Mittwoch", "Donnerstag", "Freitag", "Samstag"] def daylist(weekstart: datetime, showsat: bool): weekday = weekstart dayl = [] if showsat: r = 6 else: r = 5 for i in range(r): essen = getMeals(weekday) dayl += [{ "day": weekday.day, "short": shortnames[i], "long": longnames[i], "mensa": essen }] weekday += datetime.timedelta(days=1) return dayl def getMeals(day: datetime): if day.day < 10: tag = "0" + str(day.day) else: tag = str(day.day) day = str(day.year) + "-" + str(day.month) + "-" + tag url = "https://dh-api.paulmartin.cloud/plans/" + day + "?canteens=erzberger" response = requests.request("GET", url) response = response.content jres = json.loads(response.decode("utf-8")) essen = [] try: num = len(jres["data"][0]["lines"]) for i in range(num): essen += [jres["data"][0]["lines"][i]["meals"][0]["name"]] except KeyError: essen = ["Tag nicht (mehr) verfügbar"] return essen