Пересылка сообщений из любого публичного Телеграм-канала на 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

Workaround for synchronization error of Microsoft hotmail.com/outlook.com account on W10M Lumia

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