diff --git a/Errors.py b/Errors.py new file mode 100644 index 0000000..6eec9ae --- /dev/null +++ b/Errors.py @@ -0,0 +1,25 @@ +class BaseError(Exception): + '''Base class error for init error Classes''' + def __init__(self, error): + self.error = error + super().__init__(self.error) + + +class ForbiddenError(BaseError): + '''Raises when browser attract 403 error''' + + def __init__(self, error): + super().__init__(error) + + def __str__(self): + return f'Упс, возникла проблема с полуением данных :(\nОшибка: {self.error}' + + +class LostTaskError(BaseError): + '''Raises when search_tasks function can't get result''' + + def __init__(self, error): + super().__init__(error) + + def __str__(self): + return f'Упс, не удалось найти задачу :(\nОшибка: {self.error}' diff --git a/methods.py b/methods.py index 98deb7e..f7844f2 100644 --- a/methods.py +++ b/methods.py @@ -81,7 +81,8 @@ def get_lesson_info(s, lesson_id, group_id, course_id): def get_all_lessons(s, course_id, group_id): url = 'https://lyceum.yandex.ru/api/student/lessons' params = {'courseId': course_id, - 'groupId': group_id} + 'groupId': group_id, + 'code': 200} return s.get(url, params=params).json() diff --git a/search.py b/search.py index 232d27b..c67e563 100644 --- a/search.py +++ b/search.py @@ -1,4 +1,5 @@ from methods import * +from Errors import (ForbiddenError, LostTaskError) def search_tasks(lessons, search_part): @@ -21,6 +22,8 @@ def prepare(s, course_id, group_id): lessons = [] print("Получаю информацию об уроках, это занимает примерно 5-10 секунд...") lessons_info = get_all_lessons(s, course_id, group_id) + if lessons_info['code'] != 200: + raise ForbiddenError(lessons_info['code']) for lesson in lessons_info: lesson_title = lesson['title'] lesson_id = lesson['id'] @@ -44,7 +47,7 @@ def prepare(s, course_id, group_id): while search_part != r'\\': fd = search_tasks(lessons, search_part) if not fd: - print('Не удалось найти задачу') + raise LostTaskError("Task can't found") else: for lesson_name, task_title_full, is_solved in fd: print(f'Урок: "{lesson_name}", Задача: "{task_title_full}" '