Пересылка сообщений из любого публичного Телеграм-канала на RSS и Email
Я подписан на несколько (больше 10) Телеграм каналов. Некоторые просматриваю достаточно часто, некоторые - два раза в день (утром и после работы). Из-за этого хотелось бы получать "выжимку" всех сообщений, чтобы, для начала, понять, о чем идет речь и нужно ли читать все эти сообщения.
С моей точки зрения, RSS-лента идеально подходила бы для этого, но... Телеграм не предоставляет позможность интеграции "из коробки" произвольного Телеграм-канала (т.е. канала, где у вас нет административного доступа) с RSS и другими спредствами обмена информацией (email, в первую очередь).
Есть достаточно много решений на основе Телеграм ботов, но все они требуют административного доступа к каналу. Следующий вариант - использовать один из серверов, построенных на основе MadelineProto и изменить исходный код таким образом, чтобы он создавал RSS-ленту при появлении нового сообщения в ТГ-канале. Идея была отвергнута из-за нежелания менять php-код и поддерживать сервер.
Поиск в интернете выдал несколько платных решений типа rss.app, позволяющих генерировать RSS фиды из Телеграм каналов, но платить $10 в месяц за возможность обновления ленты раз в 4-8 часов мне не хотелось.
Нашел и бесплатные решения для RSS - rss-bridge.org, rsshub.app. Идея этих сервисов - скармливаешь имя Телеграм канала, а они генерируют URL RSS-фида.
Их основной недостаток - большой интервал обновления фидов - 6-8 часов. Для жены годится (нет проблем архивировать сообщения раз в день с ее каналов), но для меня (новости) все-же лучше иметь более частые обновления.
Учитывая, что rss-bridge.org - решение на основе open source, было решено использовать его.
Купил за 2.5 евро VPS (Ubuntu 22.04) и стал устанавливать этот rss-bridge по инструкциям отсюда https://github.com/RSS-Bridge/rss-bridge
По неизвестной причине, установка напрямую на сервер не привела к желаемому результату: в инструкции отсутствует какая-то часть, ответственная за интеграцию с nginx. Даже ChatGPT не помог.
Но установка через докер сработала:
sudo apt-get purge -y docker-engine docker docker.io docker-ce docker-ce-cli docker-compose-plugin sudo apt-get update sudo apt-get install ca-certificates curl sudo install -m 0755 -d /etc/apt/keyrings sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc sudo chmod a+r /etc/apt/keyrings/docker.asc echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt-get update docker create --name=rss-bridge --publish 3000:80 --volume $(pwd)/config:/config rssbridge/rss-bridge sudo docker create --name=rss-bridge --publish 3000:80 --volume $(pwd)/config:/config rssbridge/rss-bridge sudo docker start rss-bridge
Теперь при заходе на http://<myprivatevpsserver.com>:3000 выдается картинка, аналогичная публичному инстансу https://rss-bridge.org/bridge01/, только с интервалом обновления фидов 30 минут, вместо 4-8 часов.
Сам RSS Feed имеет вид
http://<myprivatevpsserver.tld>:3000/?action=display&bridge=TelegramBridge&username=%40ChannelName&format=Atom
Первая часть проблемы решена (RSS) и осталось решить вторую часть (интеграция с email).
Тут все оказалось проще. Инструкции по установке, конфигурации и сам пакет здесь https://github.com/rss2email/rss2email
sudo apt install rss2email # config file located at cd ~/.config/rss2email.cfg #setup target email address r2e new myprivateemail@domain.tld #setup feed for Wall Street Journal r2e add WSJ https://feeds.a.dj.com/rss/RSSWorldNews.xml #setup feed for Telegram channel generated by my rss-bridge instance r2e add TЕлеграмChannelFeedName "http://<myprиvatevpsserver.tld>:3000/?action=display&bridge=TelegramBridge&username=%40ChannelName&format=Atom"
Конфигурируем SMTP сервер в ~/.config/rss2email.cfg
[DEFAULT] from = myprivateemail@domain.tld ...... email-protocol = smtp ..... html-mail = True ..... smtp-auth = True smtp-username = myprivateemail@domain.tld smtp-password = password_for_myprivateemail@domain.tld smtp-server = smtp.domain.tld smtp-port = 465 smtp-ssl = True .............
Дальше вписываем в crontab что-то вроде
0 * * * * r2e run
и получаем нужный результат.
Раз в час все сообщения в фидах, сгенеририванных моим инстансом rss-bridge и любых других фидах, добавленных в конфиг rss2email пересылаются на мой email myprivateemail@domain.tld
Comments
Post a Comment