3.5 KiB
VodokanalParser
Запуск TG интеграции в Docker
docker volume create vodokanal_bot_data
docker run -d --name VodokanalBot \
--restart=always \
-v vodokanal_bot_data:/app/data \
-e TZ='Europe/Moscow' \
-e TELEGRAM_TOKEN='TOKEN' \
-e TELEGRAM_CHANNEL='CHAT_ID' \
ghcr.io/serega404/vodokanalbot:main
Запуск в Docker Compose
Укажи TELEGRAM_TOKEN и TELEGRAM_CHANNEL в docker-compose.yml, затем запусти:
docker compose up -d --build
Запуск с MeshCore + Home Assistant
Вариант для MeshCore отправляет новые сообщения в webhook Home Assistant, а Home Assistant пересылает их в канал MeshCore.
- Добавь в Home Assistant автоматизацию
Webhook to MeshCore channel. - Замени
CHANGE_ME_RANDOM_WEBHOOK_IDв автоматизации на случайную строку.
docker volume create vodokanal_bot_data
docker run -d --name VodokanalBot \
--restart=always \
-v vodokanal_bot_data:/app/data \
-e TZ='Europe/Moscow' \
-e HOME_ASSISTANT_WEBHOOK_ID='CHANGE_ME_RANDOM_WEBHOOK_ID' \
-e HOME_ASSISTANT_URL='http://homeassistant.local:8123' \
-e HOME_ASSISTANT_WEBHOOK_CHANNEL='0' \
-e MESHCORE_MESSAGE_LIMIT_BYTES='133' \
-e MESHCORE_CYR2LAT_MODE='soft' \
-e MESHCORE_CHUNK_DELAY_MS='0' \
ghcr.io/serega404/vodokanalbot-meshcore-ha:main
Перед отправкой в MeshCore текст транслитерируется и делится на части по MESHCORE_MESSAGE_LIMIT_BYTES байт. По умолчанию используется лимит 133 и мягкий режим MESHCORE_CYR2LAT_MODE=soft, где заменяются только похожие буквы. Для полной транслитерации укажи MESHCORE_CYR2LAT_MODE=full, для отключения транслитерации — MESHCORE_CYR2LAT_MODE=off. Задержку между частями можно задать через MESHCORE_CHUNK_DELAY_MS в миллисекундах, по умолчанию 0.
Запуск в Docker Compose
Укажи HOME_ASSISTANT_WEBHOOK_ID и HOME_ASSISTANT_WEBHOOK_CHANNEL в docker-compose.ha.yml, затем запусти:
docker compose up -d --build -f docker-compose.ha.yml
Интеграции
Общая логика парсинга, работы с data/db.json и поиска новых сообщений вынесена в parser.py.
Для новой интеграции достаточно создать свой адаптер отправки и передать его в publish_new_posts:
from parser import create_session, publish_new_posts
session = create_session()
publish_new_posts(
send_message=lambda message: print(message),
session=session,
url="http://www.tgnvoda.ru/avarii.php",
)
Библиотеки
Лицензия
Распространяется под MIT License. Смотри файл LICENSE для того что бы узнать подробности.