Code Monkey home page Code Monkey logo

repost-vk-2-tg's Introduction

Авто-репост из Vkontakte в Telegram

Alt Text

Как это работает?

Бот парсит последние (поумолчанию 10) посты у группы из ВКонтакте. Если пост содержит "ключевой тег", который задаётся пользователем в настройках, то будут скачаны вложения поста, а текст будет распарсен, отрефакторен и после этого отправлен в телеграмм канал со всеми вложениями. Также ID отправленных постов будут сохранены в файле, поэтому при перезапуске бота он не будет заново отправлять уже обработанные посты. Цель бота - отказоустойчивость, поэтому при ошибках анализа постов (которые могут чаще всего произойти во вложениях), бот просто пропустит эти данные и запишет Warning в лог-файл assets/warnings.log

  • Как запустить бота? Укажите свои настройки в файле config.py, а затем в терминале выполните команду
python3 main.py
  • Как очистить хранилище обработанных постов? Вы можете удалить файл assets/ids.bin. Либо же выполнить данный пайтон код:
from assets.storage import Store

Store('ids').clear()
  • Как мне делать репост всех постов, а не только по ключевому-тегу? Просто оставьте поле key_tag в файле настроек config.py равным пустой строке

Зависимости

pip install -r requirements.txt

Также понадобится библиотека FFMPEG для сжатия видео. На Linux:

sudo apt install ffmpeg

Мой pull request на pyTelegramBotAPI уже мерджанули, но релизная версия не вышла. Поэтому telebot надо устанавливать напрямую из их github репозитория

pip install git+https://github.com/eternnoir/pyTelegramBotAPI#egg=telebot

Остальное

TODO

  • Pull Request бибилиотеки pyTelegramBotAPI, где добавить в метод send_animations параметры width и height (и внести эти изменения в метод обработки GIF)
  • Улучшить связность метода text_contains_link_of_attached_video в классе Post
  • Метод create_telegram_attachments у класса Sender попробовать реализовать сразу в методе parse_attachments у класса Post
  • Добавить авто-тесты для класса Sender

Тесты

Запускаются из главной директории проекта командой pytest

repost-vk-2-tg's People

Contributors

aragroth avatar dependabot[bot] avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

Forkers

tatarinovms

repost-vk-2-tg's Issues

KeyError: 'attachments'

Добрый день.
Очень сильно за интересовал ваш проект!Но к сожалению возникла одна проблема которую я не могу решить. Установив все по инструкции все относительно работало. Если я постил фото или видео и запускал скрипт, то он отсылал в ТГ паблик фото\видео, но потом сразу же выдавал ошибку :

  File "D:\Bot\repost-vk-2-tg-master\models\post_creator.py", line 80, in parse_attachments
    for element in self.raw_post['attachments']:
KeyError: 'attachments'

И чтобы снова получить желаемый результат необходимо снова запустить скрипт, но каждый раз вылетает с этой ошибкой. Можно ли как-то это исправить? Буду благодарен за любую помощь!

И я бы хотел уточнить у Вас еще один момент, а именно при отправке двух разных видео он загружал в ТГ два одинаковых первых видео.
Так же если отправить просто фото без текста, то он выдает ошибку :

D:\Bot\repost-vk-2-tg-master>python main.py
Traceback (most recent call last):
  File "D:\Bot\repost-vk-2-tg-master\main.py", line 29, in <module>
    telegram_sender.send_post_as_messages(post)
  File "D:\Bot\repost-vk-2-tg-master\models\sender.py", line 38, in send_post_as_messages
    self.send_with_no_text()
  File "D:\Bot\repost-vk-2-tg-master\models\sender.py", line 169, in send_with_no_text
    InputMediaPhoto(file[PHOTO]) if PHOTO in file.keys()[0] else InputMediaVideo(
TypeError: 'dict_keys' object is not subscriptable

Я буду очень благодарен если будет возможность исправить эти исключения.
Спасибо!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.