Files
redairsoft_vk_gt_max_sender/README.md
T

84 lines
5.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# RedAirsoft VK to Telegram & MAX Messenger Poster
Автоматизированный Docker-сервис для периодического парсинга новых постов из сообщества ВКонтакте и их одновременной публикации в **Telegram** и мессенджер **МАКС** (MAX Messenger) с отправкой отчётов администраторам в личные сообщения.
---
## ⚡ Особенности и возможности
1. **Telegram Rich Messages (современный формат) & Legacy fallback**:
- Автоматическая сборка Rich Messages с `<tg-collage>`, инлайн-фото/видео и форматированным текстом.
- Поддержка облачного Telegram Bot API и локального `telegram-bot-api` (для видео больше 50 МБ).
- При недоступности формата Rich Message — автоматический переход на классические медиагруппы (`sendMediaGroup` / `sendPhoto` / `sendVideo`).
2. **Надёжная интеграция с Мессенджером МАКС**:
- Загрузка изображений и видео через `/uploads?type=...`.
- Полный цикл поллинга готовности видео (`/videos/{token}`) перед отправкой сообщения.
- Обработка `attachment.not.ready` и рейтов (429 Retry-After).
- Автоматическая простановка реакций (например, 👍) на первый опубликованный пост.
- Чанкинг длинных текстов (до 4000 символов).
3. **Безопасная очистка кэша и загрузок**:
- Немедленное удаление временных файлов после обработки каждого поста.
- Фоновый процесс очистки старых «хвостов» (`cleaner.py`), который **никогда** не удаляет файлы, находящиеся в процессе скачивания или отправки (благодаря реестру активных локов).
4. **Отчёты администраторам в ЛС Telegram**:
- Поддержка одного или списка Telegram ID через запятую (`TG_ADMIN_IDS=123456,789012`).
- Отправка ссылок на оригинал в ВК, опубликованный пост в Telegram и МАКС.
5. **Сохранение состояния (SQLite)**:
- База данных в папке `data/poster.db` (монтируется в Docker volume).
- Исключает повторную публикацию уже обработанных постов при перезапуске контейнера.
---
## 🛠 Быстрый старт
### 1. Клонирование и настройка окружения
Скопируйте пример файла конфигурации:
```bash
cp .env.example .env
```
Заполните переменные в файле `.env`:
- `VK_ACCESS_TOKEN`: ваш токен ВКонтакте.
- `VK_SOURCE`: ссылка, короткое имя или ID группы ВК (например, `redairsoft` или `https://vk.com/redairsoft`).
- `TG_BOT_TOKEN`: токен бота Telegram (от `@BotFather`).
- `TG_CHAT_ID`: ID канала/группы Telegram (например, `-1001234567890`).
- `TG_ADMIN_IDS`: ID администраторов через запятую для отчётов.
- `MAX_BOT_TOKEN`: токен бота в мессенджере МАКС.
- `MAX_CHAT_ID`: ID чата в МАКС.
### 2. Запуск через Docker Compose
Запустите контейнер в фоновом режиме:
```bash
docker compose up -d --build
```
Просмотр логов:
```bash
docker compose logs -f
```
---
## 📁 Структура проекта
```
├── src/
│ ├── config.py # Загрузка и валидация настроек из .env
│ ├── database.py # SQLite хранилище опубликованных постов
│ ├── vk_client.py # Клиент VK API (wall.get, resolve, media extraction)
│ ├── media_processor.py # Загрузчик фото/видео (yt-dlp, ffmpeg) с защитой активных файлов
│ ├── text_formatter.py # Форматирование текста (HTML, заголовки, хештеги)
│ ├── tg_poster.py # Публикация в Telegram (Rich Message + Legacy)
│ ├── max_poster.py # Публикация в MAX Messenger (Uploads + Messages + Reactions)
│ ├── cleaner.py # Фоновая очистка зависшего кэша
│ ├── admin_notifier.py # Отправка отчетов администраторам
│ └── main.py # Главный цикл оркестрации
├── Dockerfile # Мультистейдж образ с ffmpeg и сертификатами
├── docker-compose.yml # Конфигурация Docker Compose
├── docker-entrypoint.sh # Скрипт запуска и опционального поднятия local bot api
├── requirements.txt # Зависимости Python
├── .env.example # Шаблон переменных окружения
└── README.md
```