Пересылка сообщений из любого публичного Телеграм-канала на RSS и Email

 Я подписан на несколько (больше 10) Телеграм каналов. Некоторые просматриваю достаточно часто, некоторые - два раза в день (утром и после работы). Из-за этого хотелось бы получать "выжимку" всех сообщений, чтобы, для начала, понять, о чем идет речь и нужно ли читать все эти сообщения.


С моей точки зрения, RSS-лента идеально подходила бы для этого, но... Телеграм не предоставляет позможность интеграции "из коробки" произвольного Телеграм-канала (т.е. канала, где у вас нет административного доступа) с RSS и другими спредствами обмена информацией (email, в первую очередь).

Есть достаточно много решений на основе Телеграм ботов, но все они требуют административного доступа к каналу. Следующий вариант - использовать один из серверов, построенных на основе MadelineProto и изменить исходный код таким образом, чтобы он создавал RSS-ленту при появлении нового сообщения в ТГ-канале. Идея была отвергнута из-за нежелания менять php-код и поддерживать сервер.


Поиск в интернете выдал несколько платных решений типа rss.app, позволяющих генерировать RSS фиды из Телеграм каналов, но платить $10 в месяц за возможность обновления ленты раз в 4-8 часов мне не хотелось.


Нашел и бесплатные решения для RSS - rss-bridge.orgrsshub.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

Popular posts from this blog

IMAP, POP and SMTP settings of email providers for legacy email clients without OAUTH2 support

Инструкция по раскирпичиванию устройств Lumia без программатора.

Настройки IMAP, POP and SMTP для устаревших email клиентов без поддержки OAUTH2