144dd3cb52b10f0d17a14766d3a809f5ac003c46
Support full 2GB/2h video downloads via Local Bot API, clean VK wiki links and remove fallback links
RedAirsoft VK to Telegram & MAX Messenger Poster
Автоматизированный Docker-сервис для периодического парсинга новых постов из сообщества ВКонтакте и их одновременной публикации в Telegram и мессенджер МАКС (MAX Messenger) с отправкой отчётов администраторам в личные сообщения.
⚡ Особенности и возможности
- Telegram Rich Messages (современный формат) & Legacy fallback:
- Автоматическая сборка Rich Messages с
<tg-collage>, инлайн-фото/видео и форматированным текстом. - Поддержка облачного Telegram Bot API и локального
telegram-bot-api(для видео больше 50 МБ). - При недоступности формата Rich Message — автоматический переход на классические медиагруппы (
sendMediaGroup/sendPhoto/sendVideo).
- Автоматическая сборка Rich Messages с
- Надёжная интеграция с Мессенджером МАКС:
- Загрузка изображений и видео через
/uploads?type=.... - Полный цикл поллинга готовности видео (
/videos/{token}) перед отправкой сообщения. - Обработка
attachment.not.readyи рейтов (429 Retry-After). - Автоматическая простановка реакций (например, 👍) на первый опубликованный пост.
- Чанкинг длинных текстов (до 4000 символов).
- Загрузка изображений и видео через
- Безопасная очистка кэша и загрузок:
- Немедленное удаление временных файлов после обработки каждого поста.
- Фоновый процесс очистки старых «хвостов» (
cleaner.py), который никогда не удаляет файлы, находящиеся в процессе скачивания или отправки (благодаря реестру активных локов).
- Отчёты администраторам в ЛС Telegram:
- Поддержка одного или списка Telegram ID через запятую (
TG_ADMIN_IDS=123456,789012). - Отправка ссылок на оригинал в ВК, опубликованный пост в Telegram и МАКС.
- Поддержка одного или списка Telegram ID через запятую (
- Сохранение состояния (SQLite):
- База данных в папке
data/poster.db(монтируется в Docker volume). - Исключает повторную публикацию уже обработанных постов при перезапуске контейнера.
- База данных в папке
🛠 Быстрый старт
1. Клонирование и настройка окружения
Скопируйте пример файла конфигурации:
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
Запустите контейнер в фоновом режиме:
docker compose up -d --build
Просмотр логов:
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
Description
Languages
Python
97.7%
Dockerfile
1.4%
Shell
0.9%