Автоматический мониторинг расписания игр на quizplease.ru через REST API с отправкой уведомлений в Telegram. Работает 24/7 как systemd-сервис, деплой через GitHub Actions.
requests, всё остальное — стандартная библиотека Pythongit fetch && git reset --hard origin/mainconfig.pyextract_classic_games.py — Парсер через api.quizplease.ru + логика сравненияtelegram_notifier.py — HTTP-клиент к Bot API (без тяжёлых SDK)get_chat_id.py — Утилита получения Chat IDconfig.py — Конфигурация (в .gitignore)requirements.txt — requests>=2.31.0Проблема: Изначально парсинг шёл через BeautifulSoup и HTML сайта. Вёрстка менялась, ломались CSS-селекторы, парсер падал.
Решение: переход на REST API
api.quizplease.ru/api/games/schedule/32 — стабильнее и быстрееrequests вместо python-telegram-botПроблема: Система должна работать надёжно и автоматически восстанавливаться после сбоев сети, сервера или API.
Решение:
Проблема: Ручное обновление кода на сервере было трудоёмким и подверженным ошибкам.
Решение: CI/CD пайплайн на GitHub Actions
git reset --hard гарантирует чистое состояниеПроблема: Избегать спама, но своевременно информировать о важных изменениях.
Решение:
chat_idsПроблема: QuizPlease иногда меняет UUID игры без изменения содержимого — парсер считал такую игру новой и слал уведомление повторно.
Решение:
дата + время + названиеПроблема: Безопасное хранение чувствительных данных (токены, chat_ids) и простая настройка.
Решение:
config.example.py для безопасного клонированияconfig.py не отслеживается в Gitget_chat_id.py для получения Chat IDСистема отправляет подробные уведомления при обнаружении новых игр или изменении статуса существующих:
Уведомление о новой игре с полной информацией
Сводка по всем доступным играм
Уведомление о записи в резерв
Язык программирования: Python 3.12
Основная библиотека: requests (единственная внешняя зависимость)
Источник данных: REST API api.quizplease.ru
Хранение данных: JSON (classic_games.json, games_history.json)
Инфраструктура: Ubuntu Server, Systemd, GitHub Actions CI/CD
Статус: Production, работает с 2025 года
Частота проверки: Каждые 30 минут
Уведомления: Telegram Bot API через HTTP (без python-telegram-bot)