Когда я начал свой путь в парсинге, мне в голову сразу пришла идея написать клиент для удобного взаимодействия со школьным дневником. В последствии я решил оформить его в виде Telegram-бота.

Основные проблемы, возникающие во время использования оригинального электронного дневника, которые я постараюсь решить:
Проблема |
Соотношение, % |
Падение серверов при нагрузке (конец четвертей) |
45,5 |
Отсутствие уведомлений |
20,5 |
Сайт не адаптирован для мобильных устройств |
20,5 |
Дизайн мобильного приложения |
18,2 |
Отсутствие кастомизации интерфейса приложения/сайта (темная тема) |
13,6 |
Защита данных/конфиденциальность |
11,4 |
1. Выбор базы данных
В качестве базы данных для бота на первое время был выбран простой JSON файл, это решение обусловлено следующими параметрами:
-
Простота
-
Скорость и удобство разработки
-
Наглядность
-
Больше опыта работы
Однако, в будущем планируется переход на обычную базу данных (sqlite3 или PostgreSQL).
2. Парсинг дневника
Спарсить сам дневник оказалось достаточно просто: для успешного получения ответа не нужна даже подмена заголовков запроса (headers), нужна только авторизация (cookie).
На данный момент я переписал чужой проект, по работе с API дневника (barsapi), перевёл его на aiohttp, значительно ускорил скорость работы. В скором времени планирую перевести бота на использование этой библиотеки.
3. Выбор библиотеки для взаимодействия с Telegram-Bot-API
Бот написан на aiogram, т. к. у них понятная документация.
4. Уведомления
Официально уведомления как-будто бы есть... Но на деле (по крайней мере в моём регионе) они не функционируют.
Уведомления в боте реализованы "в лоб": раз в определенный промежуток времени бот запрашивает оценки с сервера, сравнивает их с оценками записанными в базу данных при предыдущем запросе. И в случае обнаружения изменений отправляет их пользователю в телеграмме.


Заключение
Пройдёмся по проблемам, указанным в начале:
-
Падение серверов при нагрузке (конец четвертей)
Интересно то, что во время большой нагрузки за частую не получается именно авторизоваться. В свою очередь API остаётся в прежнем состоянии и бот будет выдавать информацию, когда сайт и приложение не смогут.
Но это не принесёт большого смысла, т. к. учителя тоже не смогут войти и проставить оценки(
-
Отсутствие уведомлений
Решено в полной мере.
-
Сайт не адаптирован для мобильных устройств
Информация в боте отлично отображается как на компьютере, так и на телефоне.
-
Дизайн мобильного приложения и отсутствие кастомизации интерфейса приложения/сайта (темная тема)
Пользователь сам в праве решить каким интерфейсом ему пользоваться, он может настроить тему в Telegram под себя или выбрать из большого количества готовых.
-
Защита данных/конфиденциальность
Нельзя отследить куда уходят запросы (как в браузере через вкладку параметры для разработчиков) => перечень возможных атак существенно снижается;
Подведу небольшой итог, по проекту:
-
На данный момент в боте 7 пользователей(
-
Поднят с колен пакет для взаимодействия с API (barsapi)
-
Написан пакет для взаимодействия с API разговоров о важном (для раздела о классных часах), conversations-about-important-api
-
В репозитории на GitHub 3 звезды
Проект является некоммерческим (работает не ради дохода, сделан ради пользователей), вот ссылки:
-
GitHub проекта - pars-diary
-
Бот в Telegram - pars_diary_bot
Благодарю, за прочтение :-)
Автор: imalostshe