diff --git a/main.py b/__init__.py similarity index 100% rename from main.py rename to __init__.py diff --git a/body_create.py b/body_create.py index b198a7b..c7abd02 100644 --- a/body_create.py +++ b/body_create.py @@ -37,51 +37,35 @@ 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) ret_str = str(ret).split('\n')[-1] ret_str=re.sub(r'(UNTIL=[^;]+)',r'\1Z',ret_str) return 'RRULE:{}'.format(ret_str) -def create_body(_class): - if _class.time_range: + +def create_body(class_obj,is_lab = False): + if not is_lab: + lab_body = None + if class_obj.lab: + lab_body = create_body(class_obj.lab,True) + + if class_obj.time_range: body = { # "kind": "calendar#event", } - body['recurrence'] = [rrule_former(_class)] - body['start'] = dateTime(datetime.datetime.combine(_class.date_range[0],_class.time_range[0])) - body['end'] = dateTime(datetime.datetime.combine(_class.date_range[0],_class.time_range[1])) - body['summary'] = _class.title - body['description'] = 'location: {}'.format(_class.location) + body['recurrence'] = [rrule_former(class_obj)] + body['start'] = dateTime(datetime.datetime.combine(class_obj.date_range[0],class_obj.time_range[0])) + body['end'] = dateTime(datetime.datetime.combine(class_obj.date_range[0],class_obj.time_range[1])) + body['summary'] = class_obj.title + body['description'] = 'location: {}'.format(class_obj.location) body['location'] = LOCATION body['reminders'] = {'useDefault':True} - return body + if is_lab: + return body + else: + return body,lab_body + def json_dump(obj): with open('classes.json','w') as file: - json.dump(obj,file) -def test_rrule(): - #test - now = datetime.datetime.now() - from munch import Munch - test_obj = Munch( - days=[1,3,5], - time_range=[ - now.time(), - (now+datetime.timedelta(seconds=50*60)).time() - ], - date_range=[ - now.date(), - (now+datetime.timedelta(days=20)).date() - ], - ) - test_result = rrule_former(test_obj) - return locals() - -def test_class2body(): - with open('classes.pkl','rb') as file: - classes = pickle.load(file) - test_result = list(filter(bool,map(create_body,classes))) - return test_result - -if __name__ == "__main__": - json_dump(test_class2body()) \ No newline at end of file + json.dump(obj,file) \ No newline at end of file diff --git a/get_classes.py b/bot.py similarity index 100% rename from get_classes.py rename to bot.py diff --git a/scraper.py b/scraper.py index f171960..efe6b8b 100644 --- a/scraper.py +++ b/scraper.py @@ -2,6 +2,7 @@ from bs4 import BeautifulSoup as BS import datetime import re from operator import sub + def dateparse(datetime_str): date = '%b %d, %Y' time = '%I:%M %p' @@ -11,11 +12,13 @@ def dateparse(datetime_str): return datetime.datetime.strptime(datetime_str,time) days = [None,'M','T','W','R','F',None] simp_exceptions = ['Grade Mode'] + def datetime2date_time(dtime,mode): if mode == 'date': return datetime.date(dtime.year,dtime.month,dtime.day) elif mode == 'time': return datetime.time(dtime.hour,dtime.minute,dtime.second) + def seconds_from_midnight(t): return t.hour*60**2+ t.minute*60+t.second diff --git a/test.py b/test.py new file mode 100644 index 0000000..9037e51 --- /dev/null +++ b/test.py @@ -0,0 +1,27 @@ +from body_create import rrule_former,create_body +def test_rrule(): + #test + now = datetime.datetime.now() + from munch import Munch + test_obj = Munch( + days=[1,3,5], + time_range=[ + now.time(), + (now+datetime.timedelta(seconds=50*60)).time() + ], + date_range=[ + now.date(), + (now+datetime.timedelta(days=20)).date() + ], + ) + test_result = rrule_former(test_obj) + return locals() + +def testclass_obj2body(): + with open('classes.pkl','rb') as file: + classes = pickle.load(file) + test_result = list(filter(bool,map(create_body,classes))) + return test_result + +if __name__ == "__main__": + json_dump(testclass_obj2body()) \ No newline at end of file