From abb5654fab3248a52c1304828da2d3f985c1056a Mon Sep 17 00:00:00 2001 From: "Arkadiy KLeymenov :)" Date: Fri, 25 Mar 2022 20:54:05 +0300 Subject: [PATCH 1/3] added catch forbidden errors --- Errors.py | 6 ++++++ methods.py | 3 ++- search.py | 4 +++- 3 files changed, 11 insertions(+), 2 deletions(-) create mode 100644 Errors.py diff --git a/Errors.py b/Errors.py new file mode 100644 index 0000000..6d421f9 --- /dev/null +++ b/Errors.py @@ -0,0 +1,6 @@ +class ForbiddenError(Exception): + def __init__(self, error): + self.error = 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..0e56f3a 100644 --- a/search.py +++ b/search.py @@ -1,5 +1,5 @@ from methods import * - +from Errors import (ForbiddenError) def search_tasks(lessons, search_part): found = [] @@ -21,6 +21,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'] From 16ba2840e30aad2e90cf3ba3d8063beaac428c31 Mon Sep 17 00:00:00 2001 From: "Arkadiy KLeymenov :)" Date: Fri, 25 Mar 2022 21:03:30 +0300 Subject: [PATCH 2/3] added catch forbidden errors --- search.py | 1 + 1 file changed, 1 insertion(+) diff --git a/search.py b/search.py index 0e56f3a..8257f3b 100644 --- a/search.py +++ b/search.py @@ -1,6 +1,7 @@ from methods import * from Errors import (ForbiddenError) + def search_tasks(lessons, search_part): found = [] search_part = search_part.lower() From 82650912290db4a877dfbb6bbddce61929ef2936 Mon Sep 17 00:00:00 2001 From: "Arkadiy KLeymenov :)" Date: Fri, 25 Mar 2022 21:28:42 +0300 Subject: [PATCH 3/3] added losttaskerror, baseerror and raise this errors in code --- Errors.py | 21 ++++++++++++++++++++- search.py | 4 ++-- 2 files changed, 22 insertions(+), 3 deletions(-) diff --git a/Errors.py b/Errors.py index 6d421f9..6eec9ae 100644 --- a/Errors.py +++ b/Errors.py @@ -1,6 +1,25 @@ -class ForbiddenError(Exception): +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/search.py b/search.py index 8257f3b..c67e563 100644 --- a/search.py +++ b/search.py @@ -1,5 +1,5 @@ from methods import * -from Errors import (ForbiddenError) +from Errors import (ForbiddenError, LostTaskError) def search_tasks(lessons, search_part): @@ -47,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}" '