mirror of
https://github.com/EDeev/npr_meteobot.git
synced 2026-06-15 19:11:06 +03:00
6.1 KiB
6.1 KiB
NPR MeteoBot
Автоматизированная система мониторинга метеорологических условий и уведомлений об актировках учебных занятий для Норильского промышленного района (НПР).
📋 Описание проекта
NPR MeteoBot представляет собой интеллектуальную систему на базе Telegram-бота, предназначенную для:
- Мониторинга погодных условий в четырех районах НПР
- Автоматического отслеживания актировок учебных занятий
- Персонализированных уведомлений пользователей
- Предоставления детализированных метеорологических данных
Основные возможности:
- Персонализация: Настройка по смене обучения и району проживания
- Автоматизация: Регулярный мониторинг официальных источников
- Уведомления: Система подписок с гибкими настройками
- Актуальность: Интеграция с Gismeteo и официальным сайтом города
🏗️ Архитектура системы
Компоненты:
bot.py- Основной модуль Telegram-бота с обработкой командsql.py- Модуль работы с базой данных SQLiteinfo.py- Парсинг данных с внешних источниковconfig.py- Конфигурационные параметры системы
Структура базы данных:
- users: Профили пользователей с настройками
- weather: Кэш метеорологических данных
- parts: Данные об актировках по сменам
- data: Системная информация
🛠️ Технологический стек
Backend:
- Python 3.7+ - Основной язык разработки
- aiogram 2.x - Фреймворк для Telegram Bot API
- SQLite - Локальная база данных
- asyncio - Асинхронное программирование
Парсинг данных:
- Selenium WebDriver - Автоматизация браузера
- BeautifulSoup4 - HTML-парсинг
- requests - HTTP-запросы
Обработка данных:
- pymorphy2 - Морфологический анализ русского языка
🚀 Установка и настройка
Предварительные требования:
# Установка ChromeDriver для Selenium
# Ubuntu/Debian:
sudo apt-get install chromium-chromedriver
# Windows: загрузить с https://chromedriver.chromium.org/
Установка зависимостей:
pip install -r requirements.txt
Конфигурация:
- Получите токен бота в @BotFather
- Обновите
API_TOKENвconfig.py - Создайте структуру базы данных SQLite
Запуск:
python bot.py
📊 Функциональные возможности
Команды бота:
/start- Инициализация и настройка профиля/town- Изменение города и смены обучения/acta- Просмотр текущих актировок/weather- Детализированный прогноз погоды/storm- Штормовые предупреждения/letter- Управление подпиской на уведомления/notice- Настройка типа уведомлений
Автоматические процессы:
- timer() - Мониторинг актировок (каждую минуту)
- wind() - Обновление погодных данных (каждые 20 минут)
- clear() - Очистка устаревших данных (каждые 5 минут)
🎯 Целевые районы
Система обслуживает четыре района НПР:
- Центральный район (Норильск)
- Район Талнах
- Район Оганер
- Район Кайеркан
🔧 Конфигурационные параметры
Временные интервалы мониторинга:
- Прогноз погоды: 1, 4, 7, 10, 13, 16, 19, 22 часа
- Проверка актировок: ежеминутно
- Обновление погоды: каждые 20 минут
Источники данных:
- Актировки: norilsk-city.ru/meteo
- Погода: gismeteo.ru
📈 Масштабируемость
Система спроектирована для:
- Обработки 17,000+ активных пользователей
- Асинхронной обработки запросов
- Отказоустойчивой работы с внешними API
⚠️ Ограничения
- Зависимость от доступности внешних источников данных
- Требует настройки ChromeDriver для корректного парсинга
- Локальная SQLite база данных (не подходит для кластерного развертывания)
📝 Лицензия
Проект разработан для образовательных и некоммерческих целей.
👤 Автор
Деев Егор Викторович
- GitHub: @DeevEV
- Email: egor@deev.space
- Telegram: @Egor_Deev
Создано с ❤️ от вашего дорогого - deev.space ©