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

от автора

Я подписан на несколько (больше 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


ссылка на оригинал статьи https://habr.com/ru/articles/860896/


Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *