import datetime import logging from requests import get import settings fields = [ 'discipline', 'building', 'auditorium', 'date_start', 'date_end', 'lecturer_profiles', 'stream_links' ] class RUZ: def reformat_data(self, col): for data in col: date_start = datetime.datetime.strptime(data['date_start'], "%Y-%m-%dT%H:%M:%SZ") date_end = datetime.datetime.strptime(data['date_end'], "%Y-%m-%dT%H:%M:%SZ") data['date'] = date_start.strftime("%Y.%m.%d") data['beginLesson'] = date_start.strftime("%H:%M") data['endLesson'] = date_end.strftime("%H:%M") try: data['lecturer'] = data['lecturer_profiles'][0]["full_name"] except: data['lecturer'] = 'Неизвестный преподаватель' try: data['url1'] = data['stream_links'][0]['link'] except: data['url1'] = None del data['date_start'] del data['date_end'] del data['lecturer_profiles'] del data['stream_links'] def get_schedule(self, user: dict, begin_date: datetime.datetime): start_date_str = begin_date.strftime("%Y-%m-%d") search_str = settings.RUZ_API + f"v3/ruz/lessons?start={start_date_str}&offset=30&email={user['email']}" try: data = get(search_str) except: return None if data.status_code != 200: return None try: data = data.json() except: logging.info("Json ignored, data content is") logging.info(data.content) return None formatted_data = [ { field: element.get(field) for field in fields } for element in data ] self.reformat_data(formatted_data) return formatted_data def _name_weekday(self, weekday: int) -> str: if weekday == 0: return "Понедельник" if weekday == 1: return "Вторник" if weekday == 2: return "Среда" if weekday == 3: return "Четверг" if weekday == 4: return "Пятница" if weekday == 5: return "Суббота" return "Воскресенье" def schedule_builder(self, lessons: list[dict]) -> str: ans = "" last_date = None for lesson in lessons: date = lesson['begin'].strftime('%d.%m') if date != last_date: if last_date is not None: ans += "=======================\n\n" last_date = date ans += f"📅 *{date} {self._name_weekday(lesson['begin'].weekday())}*\n\n" ans += f"📚 {lesson['discipline']}\n" ans += f"🏢 {lesson['building']}, {lesson['auditorium']}\n" ans += f"🕑 {lesson['begin'].strftime('%H:%M')} - {lesson['end'].strftime('%H:%M')}\n" ans += f"👨‍🏫 {(lesson['lecturer'] or 'Неизвестно')}\n" if lesson.get('link', None): ans += f"🔗 {lesson['link']}\n" ans += "\n" return ans ruz = RUZ()