Автоматичний моніторинг планових та аварійних відключень електроенергії для Старокостянтинівської міської територіальної громади.
Парсер збирає дані з офіційного сайту hoe.com.ua, фільтрує лише населені пункти громади (місто Старокостянтинів та 66 сіл), зберігає їх, а потім за допомогою ШІ (Gemini 2.0 Flash) генерує інформаційну стрічку та пости для Telegram.
Особливості
- Два блоки: Збирач (без ШІ) та Оформлювач (з Gemini).
- Повністю безкоштовне розгортання на GitHub Pages + GitHub Actions.
- Ковзне вікно публікацій: стрічка завжди містить інформацію на сьогодні та завтра; Telegram-пости генеруються окремо на кожен день (до 5 днів наперед).
- Приватна адмінка з паролем для безпечного перегляду.
- Автоматичне очищення бази повідомлень після 7 днів.
- Інтерактивна адмінка: бігуча стрічка з ефектом "прилипання", розумне групування вулиць, таблиця сирих даних із деталізацією номерів будинків.
- Захист від помилок на сайті-джерелі (перевірка структури HTML, логування).
- Валідація результатів ШІ, щоб уникнути вигаданих даних.
Швидкий старт (локальна розробка)
- Клонуйте репозиторій або відкрийте теку проекту в VS Code.
- Встановіть залежності:
pip install -r requirements.txt - Отримайте API-ключ Gemini на Google AI Studio та встановіть змінну середовища
GEMINI_API_KEY. - Запустіть збір даних:
python collector.pyПеревіртеdata/outages_snapshot.json. - Згенеруйте повідомлення:
python formatter.pyВідкрийтеadmin.htmlу браузері (локально), щоб переглянути результати.
Розгортання на GitHub
- Створіть публічний репозиторій на основі цього шаблону.
- Додайте секрети у Settings → Secrets and variables → Actions:
GEMINI_API_KEYтаADMIN_PASSWORD. - Увімкніть GitHub Pages: Deploy from branch
main→/ (root). - Запустіть Workflow вручну або дочекайтеся розкладу.
Адмінка:
https://yourusername.github.io/repo-name/admin.html
Розклад виконання
- Збір даних: щогодини (cron
0 * * * *). Оновлюєoutages_snapshot.jsonлише за наявності змін. - Форматування: о 06:00 за Києвом (cron
0 6 * * *). Генерує стрічку (сьогодні+завтра) та Telegram-пости (на кожен день).
Файли адмінки
feed.html– публічна біжуча стрічка (можна вбудувати на сайт).admin.html– закрита панель для перегляду стрічки та постів (без можливості редагування).
Ліцензія MIT
Підтримка При виявленні проблем створюйте Issue у репозиторії.