|
|
|
@ -0,0 +1,47 @@ |
|
|
|
import datetime |
|
|
|
|
|
|
|
from dateutil import rrule |
|
|
|
from gapi.apis.calendar_api import get_calendars_from_api, calendar_api |
|
|
|
from gapi.apis.calendar_api.models import Event |
|
|
|
|
|
|
|
from scraper import get_classes, Class |
|
|
|
|
|
|
|
LOCATION = "5500 St Louis Ave, Chicago, IL 60625" |
|
|
|
|
|
|
|
|
|
|
|
def rrule_former(class_obj): |
|
|
|
days = class_obj.days |
|
|
|
start = datetime.datetime.combine( |
|
|
|
class_obj.date_range[0], class_obj.time_range[0] |
|
|
|
).astimezone() |
|
|
|
end = datetime.datetime.combine( |
|
|
|
class_obj.date_range[1], class_obj.time_range[1] |
|
|
|
).astimezone() |
|
|
|
|
|
|
|
days = [(day - 1) % 7 for day in days] |
|
|
|
ret = rrule.rrule( |
|
|
|
freq=rrule.WEEKLY, dtstart=start, wkst=rrule.SU, until=end, byweekday=days |
|
|
|
) |
|
|
|
return ret |
|
|
|
|
|
|
|
|
|
|
|
if __name__ == "__main__": |
|
|
|
with open("schedule.html", "rb") as file: |
|
|
|
data = file.read() |
|
|
|
_class: Class |
|
|
|
my_api = calendar_api( |
|
|
|
"Class upload", scopes=["https://www.googleapis.com/auth/calendar"] |
|
|
|
) |
|
|
|
calendars = get_calendars_from_api(my_api) |
|
|
|
l = [] |
|
|
|
for _class in get_classes(data): |
|
|
|
if _class.time_range is not None: |
|
|
|
e = Event( |
|
|
|
datetime.datetime.combine(_class.date_range[0], _class.time_range[0]), |
|
|
|
datetime.datetime.combine(_class.date_range[0], _class.time_range[1]), |
|
|
|
_class.title, |
|
|
|
"location: {}".format(_class.location), |
|
|
|
rrule_former(_class), |
|
|
|
location=LOCATION, |
|
|
|
) |
|
|
|
l.append(e) |