VK-Telegram Poster – это инструмент автопостинга записей из сообществ ВКонтакте в каналы и группы Telegram с возможностью настройки пользовательского скрипта обработки постов. Поддерживается как Callback API, так и Open API.
Для отправки сообщений используется буфер ожидания, что позволяет автопостеру корректно работать с включённым медленным режимом группы (чтобы игнорировать медленный режим или отправлять сообщения в канал, бот должен иметь права администратора). Также в скрипт внедрена возможность автоматического решения каптчи с использованием AI-сервисов.
Автопостер поддерживает пересылку следующих типов вложений: doc, photo, video. Для вложений типа photo максимальное разрешение на данный момент составляет 2560x2048px.
- Скачать и распаковать последний релиз.
- Убедиться в доступности Python версии не старше 3.10.
- В среду исполнения установить зависимости при помощи следующей команды, выполненной из директории с исполняемым файлом.
pip install -r requirements.txt
- Создать в директории Config файл конфигурации по предоставленному примеру (см. здесь).
- Произвести настройку путём редактирования файла Settings.json и пользовательского скрипта обработки постов MessageEditor.py.
- При необходимости, например в случае использования скрипта на хостинге активного сервиса, настроить переадресацию nginx на свободный порт по образцу ниже.
location /vtp/ {
proxy_set_header Host $server_name;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_pass http://{IP}:{PORT}; # Поместите сюда IP и порт вашего сервера.
proxy_read_timeout 30;
proxy_connect_timeout 30;
proxy_request_buffering off;
proxy_buffering off;
proxy_redirect off;
}
- Провести валидацию сервера согласно данному руководству. Код подтверждения перед верификацией занести в файл настроек Settings.json.
- Запустить команду
uvicorn main:App --host {IP} --port {PORT}
из директории скрипта, подставив указанные значения. - Для автоматического запуска рекомендуется провести инициализацию сервиса через systemd на Linux или путём добавления его в автозагрузку на Windows.
- Скачать и распаковать последний релиз.
- Убедиться в доступности Python версии не старше 3.10.
- В среду исполнения установить зависимости при помощи следующей команды, выполненной из директории с исполняемым файлом.
pip install -r requirements.txt
- Создать в директории Config файл конфигурации по предоставленному примеру (см. здесь). Настоятельно рекомендуется использовать постоянный токен доступа.
- Произвести настройку путём редактирования файла Settings.json и пользовательского скрипта обработки постов MessageEditor.py.
- Запустить команду
uvicorn main:App
из директории скрипта, подставив указанные значения (если используются оба типа API, тогда в качестве параметров команде необходимо задать IP и порт по аналогии с этим руководством). - Для автоматического запуска рекомендуется провести инициализацию сервиса через systemd на Linux или путём добавления его в автозагрузку на Windows.
Файл | Версия | Источник |
---|---|---|
yt-dlp | 2024.04.09 | ссылка |
Сервис предоставляет поддержку как Callback API, так и Open API. Ниже приведено их сравнение.
Признак | Callback API | Open API |
---|---|---|
Тип запросов | Запросы отправляет сервер ВКонтакте по заданному URL. | Скрипт сам отправляет запросы к серверам ВКонтакте и получает ответ. |
Требуемые права | Для верификации сервера требуются права администратора в сообществе. | Права администратора не требуются. |
Скорость отправки | Посты пересылаются практически моментально. | Посты запрашиваются с определённым интервалом, не менее 1 минуты. |
Особенности | Часто требуется дополнительная настройка nginx. | Требуется аккаунт ВКонтакте с отключённой двухфакторной аутентификацией. |
Important
Для пересылки вложений типа video необходимо, чтобы в сообществе ВКонтакте для раздела «Видео» было установленно значение Открытые или Ограниченные.
Для добавления новой конфигурации создайте копию файла # Callback API Example.json и переименуйте её согласно источнику. Источник указывает конечную часть URI, использующегося для прослушивания Callback-запросов.
Пример: {HOST}/vtp/{SOURCE}
"api": "Callback"
Указывает тип используемого API.
"token": ""
Сюда необходимо занести токен бота Telegram (можно получить у BotFather).
"target": ""
Сюда необходимо занести ID группы или канала Telegram (можно получить у Chat ID Bot).
"clean-tags": true
Если включено, скрипт будет удалять упоминания из тегов ВКонтакте (#tag@mention → #tag). Рекомендуется к активации, так как Telegram не поддерживает подобный формат.
"parse-mode": null
Указывает способ форматирования сообщения, отправляемого в группу Telegram.
Поддерживаются: MarkdownV2, HTML.
"disable-web-page-preview": true
Если включено, для ссылок, в том числе форматированных, не будет отображаться предпросмотр веб-содержимого под сообщениями.
"blacklist": []
Здесь можно перечислить регулярные выражения, при наличии совпадений с которыми сообщение будет игнорироваться. Проверка нечувствительна к регистру.
"attachments": {
"doc": true,
"photo": true,
"video": true
}
В данной секции можно указать, какие типы вложений требуется пересылать в Telegram.
Для добавления новой конфигурации создайте копию файла # Open API Example.json и переименуйте её. Имя файла может быть любым, но рекомендуется использовать алиас сообщества ВКонтакте, указанный в адресной строке.
"api": "Open"
Указывает тип используемого API.
"token": ""
Сюда необходимо занести токен бота Telegram (можно получить у BotFather).
"target": ""
Сюда необходимо занести ID группы или канала Telegram (можно получить у Chat ID Bot).
"wall-id": 0
Сюда необходимо занести ID сообщества ВКонтакте. Быстро узнать его можно при помощи этого сайта.
"clean-tags": true
Если включено, скрипт будет удалять упоминания из тегов ВКонтакте (#tag@mention → #tag). Рекомендуется к активации, так как Telegram не поддерживает подобный формат.
"parse-mode": null
Указывает способ форматирования сообщения, отправляемого в группу Telegram.
Поддерживаются: MarkdownV2, HTML.
"disable-web-page-preview": true
Если включено, для ссылок, в том числе форматированных, не будет отображаться предпросмотр веб-содержимого под сообщениями.
"blacklist": []
Здесь можно перечислить регулярные выражения, при наличии совпадений с которыми сообщение будет игнорироваться. Проверка нечувствительна к регистру.
"attachments": {
"doc": true,
"photo": true,
"video": true
}
В данной секции можно указать, какие типы вложений требуется пересылать в Telegram.
"last-post-id": null
Сюда скрипт заносит ID последнего пересланного поста. Не рекомендуется вручную изменять это значение, если вы не уверены в том, что делаете.
"login": ""
Логин аккаунта ВКонтакте. Указываемый аккаунт должен иметь отключённую двухфакторную аутентификацию.
"password": ""
Пароль аккаунта ВКонтакте.
"app-id": 6121396
Указывает ID приложения для доступа к API. Не рекомендуется изменять.
"vk-access-token": ""
Если ВКонтакте блокирует вашу авторизацию, а каптчу не удаётся решить при помощи AI, вы можете вручную получить постоянный токен доступа для вашего аккаунта и проводить запросы с его использованием. Для этого необходимо выполнить нижеперечисленные шаги:
- В любом браузере, поддерживающем расширения Chromium, авторизуйтесь в ВКонтакте.
- Если вы планируете использовать автопостер на устройстве, IP которого отличается от вашего текущего (например, на собственном сервере), выполняйте шаги по порядку, иначе можете сразу переходить к пункту №8.
- Установите на серевере Squid. Далее пример будет приводиться для CentOS, а дополнительную информацию вы сможете найти здесь.
- Настройте Squid для приёма пакетов со всех IP путём добавления в файл конфигурации /etc/squid/squid.conf следующих строк:
acl all src 0.0.0.0/0
http_access allow all
- Перезапустите службу Squid:
systemctl restart squid
. - Установите в браузер это расширение и в его настройки занесите IP вашего сервера и стандартный прослушиваемый порт – 3128. Включите установленный прокси.
- Откройте в браузере любой сервис, определяющий ваш IP, и убедитесь в том, что прокси работает.
- Перейдите по ссылке, подтвердите предоставление прав и скопируйте токен из адресной строки браузера начиная от token= до &expires_in=0.
Warning
Помните, что токен выдаётся для одного IP адреса, при смене которого процедуру необходимо повторить.
"openapi-period": 60
Указывает интервал запроса обновлений по Open API в минутах.
"use-supervisor": true
Если включено, то для Open API будет создан поток-надзиратель, следящий за работой основного потока проверки обновлений. Повышает стабильность работы скрипта.
"confirmation-code": ""
Указывает код подтверждения, необходимый для валидации прослушивающего сервера Callback API.
"autoclean": true
Указывает, следует ли удалять вложения после отправки поста в Telegram.
"logging": true
Если включено, скрипт будет вести логи инициализации и обработки новых постов.
"debug": false
Включает отладочный режим логгирования.
- @yt-dlp – библиотека загрузки потокового видео;
- @python273 – имплементация Open API ВКонтакте.
Copyright © DUB1401. 2022-2024.