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

в 14:54, , рубрики: email, rss, RSS-Bridge

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

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

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

Потом настал аврал на работе и я забыл об этой идее. Но недавно ко мне подошла жена со странным вопросом: "Как мне переслать сообщения из Телеграм-канала на электронную почту и куда-то еще, где я могу почитать дайджест сообщений за день?". Я от неожиданности сел и спросил "Дорогая, откуда ты знаешь такие слова, кто тебя им научил и зачем это тебе, вообще, надо?"

Жена открыла лаптоп, ткнула пальцем в несколько каналов на клиенте Телеграм:

- Вот этот канал - кулинарные рецепты. А вот этот - скидки. У меня нет времени все это читать, но я хочу с одной стороны сохранять все рецепты на email-e, чтобы прочитать позднее, а с другой стороны - хочу просматривать скидки раз в день, чтобы решить, что надо, а что нет. 90% - точно не надо, но я хочу видеть весь список (тут я вспомнил "Огласите весь список, пожалуйста").Владелец канала скидок мне что-то ответила про RSS, но я не знаю, что это такое.

В этот момент я понял, что лучше решить проблему по-быстрее.

Как я уже сказал , Телеграм не предоставляет средств интеграции с RSS и электронной почтой для произвольных каналов.

Поиск в интернете выдал несколько платных решений типа 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://<myprиvatevpsserver.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 myemail@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

Автор: Kiborg777

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js