def get_subjects(self): if 'subjects' not in app.timetable: logger.debug("Filling subjects") app.timetable['subjects'] = [] for lesson in app.timetable['lessons']: if lesson['subject'] not in app.timetable['subjects']: app.timetable['subjects'].append(lesson['subject']) return app.timetable['subjects']
def get_hours(self): if 'hours' not in app.timetable: logger.debug("Filling hours") app.timetable['hours'] = [] for lesson in app.timetable['lessons']: if lesson['hour'] not in app.timetable['hours']: app.timetable['hours'].append(lesson['hour']) sorted(app.timetable['hours']) return app.timetable['hours']
def get_groups(self): if 'groups' not in app.timetable: logger.debug("Filling groups") app.timetable['groups'] = [] for lesson in app.timetable['lessons']: for group in lesson['group']: if group not in app.timetable['groups']: app.timetable['groups'].append(group) return app.timetable['groups']
def get_classrooms(self): if 'classrooms' not in app.timetable: logger.debug("Filling classrooms") app.timetable['classrooms'] = [] for lesson in app.timetable['lessons']: if lesson['classroom'] is not None: classroom = re.sub( "(-p.*)|(-n.*)", "", lesson['classroom']) # remove -n and -p from name if classroom not in app.timetable['classrooms']: app.timetable['classrooms'].append(classroom) return app.timetable['classrooms']
def get_teachers(self): if 'teachers' not in app.timetable: logger.debug("Filling teachers") app.timetable['teachers'] = [] for lesson in app.timetable['lessons']: if lesson['teacher'] is not None: teacher = re.sub( "(-p.*)|(-n.*)", "", lesson['teacher']) # remove -n and -p from name if teacher not in app.timetable['teachers']: app.timetable['teachers'].append(teacher) return app.timetable['teachers']
def get_lessons(self, objects): lessons = [] for key, val in objects.items(): table = self.get_soup("{}plany/{}".format( self.base_url, key)).find('table', class_='tabela') classroom_lessons = self.get_lessons_from_table(table, val) if len(classroom_lessons) > 0: lessons = lessons + classroom_lessons else: logger.debug("Empty class:\t{}\t{}".format(key, val)) return lessons
def get_soup(self, url): headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 6.3; Win64; x64) ' 'AppleWebKit/537.36 (KHTML, like Gecko) ' 'Chrome/64.0.3282.168 ' 'Safari/537.36 ' 'OPR/51.0.2830.40' } sleep(random.uniform(0, 0.2)) logger.debug("Getting:\t{}".format(url)) response = self.s.get(url, headers=headers) response.encoding = "utf-8" return bs(response.text, 'html.parser')