{"id":24776804,"url":"https://github.com/dub1401/vk-telegram-poster","last_synced_at":"2025-10-12T00:32:04.811Z","repository":{"id":151250658,"uuid":"550354805","full_name":"DUB1401/VK-Telegram-Poster","owner":"DUB1401","description":"Автоматический постинг записей из сообществ ВКонтакте в каналы и группы Telegram.","archived":false,"fork":false,"pushed_at":"2025-01-28T18:12:41.000Z","size":6829,"stargazers_count":5,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-01-28T19:25:17.887Z","etag":null,"topics":["callback-api","open-api","posting","systemd","telegram","vk"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/DUB1401.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-10-12T16:09:53.000Z","updated_at":"2025-01-28T18:12:45.000Z","dependencies_parsed_at":"2023-09-24T09:43:05.944Z","dependency_job_id":"8c48e183-c6a5-4c47-be5b-41e6d2c42c97","html_url":"https://github.com/DUB1401/VK-Telegram-Poster","commit_stats":null,"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DUB1401%2FVK-Telegram-Poster","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DUB1401%2FVK-Telegram-Poster/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DUB1401%2FVK-Telegram-Poster/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DUB1401%2FVK-Telegram-Poster/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DUB1401","download_url":"https://codeload.github.com/DUB1401/VK-Telegram-Poster/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":236144356,"owners_count":19101968,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["callback-api","open-api","posting","systemd","telegram","vk"],"created_at":"2025-01-29T07:22:28.353Z","updated_at":"2025-10-12T00:31:58.539Z","avatar_url":"https://github.com/DUB1401.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# VK-Telegram Poster\n**VK-Telegram Poster** – это инструмент автопостинга записей из сообществ ВКонтакте в каналы и группы Telegram с возможностью настройки пользовательского скрипта обработки постов. Поддерживается как [Callback API](https://dev.vk.com/ru/api/callback/getting-started), так и [Open API](https://dev.vk.com/ru/api/open-api/getting-started).\n\nДля отправки сообщений используется буфер ожидания, что позволяет автопостеру корректно работать с включённым медленным режимом группы (чтобы игнорировать медленный режим или отправлять сообщения в канал, бот должен иметь права администратора). Также в скрипт внедрена возможность автоматического решения каптчи с использованием AI-сервисов.\n\nАвтопостер поддерживает пересылку следующих [типов](https://dev.vk.com/reference/objects/attachments-wall) вложений: _doc_, _photo_, _video_. Для вложений типа _photo_ максимальное разрешение на данный момент составляет 2560x2048px.\n\n## Порядок установки и использования | Callback API\n1. Скачать и распаковать последний релиз.\n2. Убедиться в доступности Python версии не старше 3.10.\n3. В среду исполнения установить зависимости при помощи следующей команды, выполненной из директории с исполняемым файлом.\n```\npip install -r requirements.txt\n```\n4. Создать в директории _Config_ файл конфигурации по предоставленному примеру (см. [здесь](#callback-api)).\n5. Произвести настройку путём редактирования файла _Settings.json_ и пользовательского скрипта обработки постов _MessageEditor.py_.\n6. При необходимости, например в случае использования скрипта на хостинге активного сервиса, настроить переадресацию [nginx](https://nginx.org/) на свободный порт по образцу ниже.\n```nginx\nlocation /vtp/ {\n\tproxy_set_header Host $server_name;\n\tproxy_set_header X-Real-IP $remote_addr;\n\tproxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;\n\tproxy_set_header X-Forwarded-Proto $scheme;\n\tproxy_pass http://{IP}:{PORT}; # Поместите сюда IP и порт вашего сервера.\n\tproxy_read_timeout 30;\n\tproxy_connect_timeout 30;\n\tproxy_request_buffering off;\n\tproxy_buffering off;\n\tproxy_redirect off;\n}\n```\n7. Провести валидацию сервера согласно данному [руководству](https://dev.vk.com/api/callback/getting-started#%D0%9F%D0%BE%D0%B4%D0%BA%D0%BB%D1%8E%D1%87%D0%B5%D0%BD%D0%B8%D0%B5%20Callback%20API). Код подтверждения перед верификацией занести в файл настроек _Settings.json_.\n8. Запустить команду `uvicorn main:App --host {IP} --port {PORT}` из директории скрипта, подставив указанные значения.\n9. Для автоматического запуска рекомендуется провести инициализацию сервиса через [systemd](systemd/README.md) на Linux или путём добавления его в автозагрузку на Windows.\n\n## Порядок установки и использования | Open API\n1. Скачать и распаковать последний релиз.\n2. Убедиться в доступности Python версии не старше 3.10.\n3. В среду исполнения установить зависимости при помощи следующей команды, выполненной из директории с исполняемым файлом.\n```\npip install -r requirements.txt\n```\n4. Создать в директории _Config_ файл конфигурации по предоставленному примеру (см. [здесь](#open-api)). Настоятельно рекомендуется использовать постоянный токен доступа.\n5. Произвести настройку путём редактирования файла _Settings.json_ и пользовательского скрипта обработки постов _MessageEditor.py_.\n6. Запустить команду `uvicorn main:App` из директории скрипта, подставив указанные значения (если используются оба типа API, тогда в качестве параметров команде необходимо задать IP и порт по аналогии с [этим](#порядок-установки-и-использования--callback-api) руководством).\n7. Для автоматического запуска рекомендуется провести инициализацию сервиса через [systemd](systemd/README.md) на Linux или путём добавления его в автозагрузку на Windows.\n\n## Версии поставляемых бинарных файлов\n| Файл    | Версия                        | Источник                                                           |\n|---------|-------------------------------|--------------------------------------------------------------------|\n| yt-dlp  | _2024.04.09_                  | [ссылка](https://github.com/yt-dlp/yt-dlp/releases/tag/2024.04.09) |\n\n# Конфигурация источника\nСервис предоставляет поддержку как [Callback API](https://dev.vk.com/ru/api/callback/getting-started), так и [Open API](https://dev.vk.com/ru/api/open-api/getting-started). Ниже приведено их сравнение.\n\n| Признак           | Callback API                                                             | Open API                                                                                   |\n|-------------------|--------------------------------------------------------------------------|--------------------------------------------------------------------------------------------|\n| Тип запросов      | Запросы отправляет сервер ВКонтакте по заданному URL.                    | Скрипт сам отправляет запросы к серверам ВКонтакте и получает ответ.                       |\n| Требуемые права   | Для верификации сервера требуются права администратора в сообществе.     | Права администратора не требуются.                                                         |\n| Скорость отправки | Посты пересылаются практически моментально.                              | Посты запрашиваются с определённым интервалом, не менее 1 минуты.                          |\n| Особенности       | Часто требуется дополнительная настройка [nginx](https://nginx.org/).    | Требуется аккаунт ВКонтакте с отключённой двухфакторной аутентификацией.                   |\n\n\u003e [!IMPORTANT]  \n\u003e Для пересылки вложений типа _video_ необходимо, чтобы в сообществе ВКонтакте для раздела «Видео» было установленно значение _Открытые_ или _Ограниченные_.\n\n## Callback API\nДля добавления новой конфигурации создайте копию файла _# Callback API Example.json_ и переименуйте её согласно источнику. Источник указывает конечную часть URI, использующегося для прослушивания Callback-запросов. \n\n**Пример:** `{HOST}/vtp/{SOURCE}`\n___\n```JSON\n\"api\": \"Callback\"\n```\nУказывает тип используемого API.\n___\n```JSON\n\"token\": \"\"\n```\nСюда необходимо занести токен бота Telegram (можно получить у [BotFather](https://t.me/BotFather)).\n___\n```JSON\n\"target\": \"\"\n```\nСюда необходимо занести ID группы или канала Telegram (можно получить у [Chat ID Bot](https://t.me/chat_id_echo_bot)).\n___\n```JSON\n\"clean-tags\": true\n```\nЕсли включено, скрипт будет удалять упоминания из тегов ВКонтакте (_#tag@mention_ → _#tag_). Рекомендуется к активации, так как Telegram не поддерживает подобный формат.\n___\n```JSON\n\"parse-mode\": null\n```\nУказывает способ форматирования сообщения, отправляемого в группу Telegram. \n\nПоддерживаются: _MarkdownV2_, _HTML_.\n___\n```JSON\n\"disable-web-page-preview\": true\n```\nЕсли включено, для ссылок, в том числе форматированных, не будет отображаться предпросмотр веб-содержимого под сообщениями.\n___\n```JSON\n\"blacklist\": []\n```\nЗдесь можно перечислить регулярные выражения, при наличии совпадений с которыми сообщение будет игнорироваться. Проверка нечувствительна к регистру.\n___\n```JSON\n\"attachments\": {\n\t\"doc\": true,\n\t\"photo\": true,\n\t\"video\": true\n}\n```\nВ данной секции можно указать, какие типы вложений требуется пересылать в Telegram.\n\n## Open API\nДля добавления новой конфигурации создайте копию файла _# Open API Example.json_ и переименуйте её. Имя файла может быть любым, но рекомендуется использовать алиас сообщества ВКонтакте, указанный в адресной строке.\n___\n```JSON\n\"api\": \"Open\"\n```\nУказывает тип используемого API.\n___\n```JSON\n\"token\": \"\"\n```\nСюда необходимо занести токен бота Telegram (можно получить у [BotFather](https://t.me/BotFather)).\n___\n```JSON\n\"target\": \"\"\n```\nСюда необходимо занести ID группы или канала Telegram (можно получить у [Chat ID Bot](https://t.me/chat_id_echo_bot)).\n___\n```JSON\n\"wall-id\": 0\n```\nСюда необходимо занести ID сообщества ВКонтакте. Быстро узнать его можно при помощи [этого](https://regvk.com/id/) сайта.\n___\n```JSON\n\"clean-tags\": true\n```\nЕсли включено, скрипт будет удалять упоминания из тегов ВКонтакте (_#tag@mention_ → _#tag_). Рекомендуется к активации, так как Telegram не поддерживает подобный формат.\n___\n```JSON\n\"parse-mode\": null\n```\nУказывает способ форматирования сообщения, отправляемого в группу Telegram. \n\nПоддерживаются: _MarkdownV2_, _HTML_.\n___\n```JSON\n\"disable-web-page-preview\": true\n```\nЕсли включено, для ссылок, в том числе форматированных, не будет отображаться предпросмотр веб-содержимого под сообщениями.\n___\n```JSON\n\"blacklist\": []\n```\nЗдесь можно перечислить регулярные выражения, при наличии совпадений с которыми сообщение будет игнорироваться. Проверка нечувствительна к регистру.\n___\n```JSON\n\"attachments\": {\n\t\"doc\": true,\n\t\"photo\": true,\n\t\"video\": true\n}\n```\nВ данной секции можно указать, какие типы вложений требуется пересылать в Telegram.\n___\n```JSON\n\"last-post-id\": null\n```\nСюда скрипт заносит ID последнего пересланного поста. Не рекомендуется вручную изменять это значение, если вы не уверены в том, что делаете.\n\n# Settings.json\n```JSON\n\"login\": \"\"\n```\nЛогин аккаунта ВКонтакте. Указываемый аккаунт должен иметь отключённую двухфакторную аутентификацию.\n___\n```JSON\n\"password\": \"\"\n```\nПароль аккаунта ВКонтакте.\n___\n```JSON\n\"app-id\": 6121396\n```\nУказывает ID приложения для доступа к API. Не рекомендуется изменять.\n___\n```JSON\n\"vk-access-token\": \"\"\n```\nЕсли ВКонтакте блокирует вашу авторизацию, а каптчу не удаётся решить при помощи AI, вы можете вручную получить постоянный токен доступа для вашего аккаунта и проводить запросы с его использованием. Для этого необходимо выполнить нижеперечисленные шаги:\n\n1. В любом браузере, поддерживающем расширения [Chromium](https://github.com/chromium/chromium), авторизуйтесь в ВКонтакте.\n2. Если вы планируете использовать автопостер на устройстве, IP которого отличается от вашего текущего (например, на собственном сервере), выполняйте шаги по порядку, иначе можете сразу переходить к пункту №8.\n3. Установите на серевере [Squid](https://github.com/squid-cache/squid). Далее пример будет приводиться для CentOS, а дополнительную информацию вы сможете найти [здесь](https://winitpro.ru/index.php/2022/03/17/ustanovka-nastrojka-squid-proxy/).\n4. Настройте [Squid](https://github.com/squid-cache/squid) для приёма пакетов со всех IP путём добавления в файл конфигурации _/etc/squid/squid.conf_ следующих строк:\n```\nacl all src 0.0.0.0/0\nhttp_access allow all\n```\n5. Перезапустите службу [Squid](https://github.com/squid-cache/squid): `systemctl restart squid`.\n6. Установите в браузер [это](https://chromewebstore.google.com/detail/proxycontrol-%D0%BC%D0%B5%D0%BD%D0%B5%D0%B4%D0%B6%D0%B5%D1%80-%D0%B4%D0%BB%D1%8F/hjocpjdeacglfchomobaagbmipeggnjg) расширение и в его настройки занесите IP вашего сервера и стандартный прослушиваемый порт – **3128**. Включите установленный прокси.\n7. Откройте в браузере любой [сервис](https://whoer.net/ru), определяющий ваш IP, и убедитесь в том, что прокси работает.\n8. Перейдите по [ссылке](https://oauth.vk.com/authorize?client_id=6121396\u0026display=page\u0026redirect_uri=https://oauth.vk.com/blank.html\u0026scope=offline,wall\u0026response_type=token\u0026v=5.154), подтвердите предоставление прав и скопируйте токен из адресной строки браузера начиная от **token=** до **\u0026expires_in=0**.\n\n\u003e [!WARNING]  \n\u003e Помните, что токен выдаётся для одного IP адреса, при смене которого процедуру необходимо повторить.\n___\n```JSON\n\"openapi-period\": 60\n```\nУказывает интервал запроса обновлений по Open API в минутах.\n___\n```JSON\n\"use-supervisor\": true\n```\nЕсли включено, то для Open API будет создан поток-надзиратель, следящий за работой основного потока проверки обновлений. Повышает стабильность работы скрипта.\n___\n```JSON\n\"confirmation-code\": \"\"\n```\nУказывает код подтверждения, необходимый для валидации прослушивающего сервера Callback API.\n___\n```JSON\n\"autoclean\": true\n```\nУказывает, следует ли удалять вложения после отправки поста в Telegram.\n___\n```JSON\n\"logging\": true\n```\nЕсли включено, скрипт будет вести логи инициализации и обработки новых постов.\n___\n```JSON\n\"debug\": false\n```\nВключает отладочный режим логгирования.\n\n# Благодарность\n* [@yt-dlp](https://github.com/yt-dlp) – библиотека загрузки потокового видео;\n* [@python273](https://github.com/python273/vk_api) – имплементация Open API [ВКонтакте](https://vk.com/).\n\n_Copyright © DUB1401. 2022-2025._\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdub1401%2Fvk-telegram-poster","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdub1401%2Fvk-telegram-poster","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdub1401%2Fvk-telegram-poster/lists"}