Ekkles' Diary

All human wisdom is summed up in two words: Wait and Hope

0%

使用Telegram bot(Flowerss)配合RSSHUB订阅RSS

RSS,RDF Site Summary,资源描述框架站点摘要,用以聚合经常发布更新数据的网站,例如博客文章、新闻、音频或视频的网摘。

rss

2019年也接近尾声了,在这个时间点再提RSS是有点怪异的,因为实际上自从2013年Google关闭Google Reader之后我就没再使用过RSS了。自从智能手机普及,移动互联网的兴起,大量的App都集成了推送功能,每天微博、知乎、微博、微信公众号、抖音等等等,大量的App每天都会给你推送各种各样的信息,RSS这种订阅方式显然已经不再流行了。当然,我的Blog依旧提供了RSS订阅功能,不过由于博客过水估计也没什么人订阅。 尽管看起来RSS已经过时了,我却在今年捡起了RSS功能,并使用聊天软件Telegram来订阅RSS,这是为什么呢?

重拾RSS

不知道你是否注意到,上文中提到的各式各样的App已经占据了我们生活中的大量时间,每天的推送几乎每10分钟就有2,3条,如果你不幸把上述App全部安装的话,那可能你一拿起手机就一两个小时过去了。现在的这些社交媒体软件为了吸引人眼球,获得用户的在线时间已经不择手段了。就以我们常用的知乎为例吧,早在6,7年前,知乎刚刚兴起的时候,那时候还是一个小众社区,App和网站以简洁为美,用户关注用户并获得更新,打开Timeline全是你关注的人按时间排序,推送也只有关注的问题,回答问题的评论等等。但是现在呢,且不说Timeline功能已经变得面目全非,和一个类似朋友圈的功能进行整合,就说热点推送和各种邀请回答吧,你一天当中会接收到无穷无尽的信息,大量的标题党信息涌入你的眼前只为博君一笑。我大概尝试过,平均每10分钟一条推送,简直不胜其扰,更不要说各种基于大数据的推送和热点合辑,简直让人烦不胜烦。而且这类App还有个特点,这种热点看似可以关闭,然而却并不生效,你永远可以看到他想推送给你的信息,这就很烦了朋友们。 因此,我重新启用RSS的一个原因就是因为RSS可以只推送给我我想知道的更新,而不会占用我大量的注意力,我可以选择在我空闲的时候轻松的看完我的订阅。 rss 另外一个原因就是,尽管互联网越来越集中化,逐渐形成相互独立的帝国对立态势,但是还是有很多小而美的博主坚持十几年如一日的写着自己的博客,RSS可以帮助我们订阅他们的更新,从而免去错过交流机会的烦恼。

RSS订阅器——Flowerss

一开始我是想用Feedly的,但是有朋友推荐使用Telegram的RSS订阅机器人来使用。毕竟,奥卡姆剃刀原理“如无必要,勿增实体”。(好啦开个玩笑) 其实主要原因还是因为懒得学习操作逻辑了,而且Telegram的确是一个非常不错的聊天软件,功能很齐全API也很开放,又不会多占用宝贵的手机空间,跨平台体验也相对不错。正好我在Github上找到了一款相当不错的RSS订阅机器人,Flowerss_bot。 FloweRSS 是一款 Go 语言编写的高性能低占用 Telegram RSS 订阅 Bot,支持为群组频道添加订阅,还支持 应用内预览、订阅源导入导出 等功能,安装也十分简单。 关于机器人的搭建我们后面再说。

RSSHUB

光有阅读器是不够的,上文曾经提到的大量新时代的互联网资源都已经不再提供RSS订阅了,我们该怎么办呢,这时候就要用到RSSHUB了。 RSSHUB官网的介绍:

RSSHub 是一个开源、简单易用、易于扩展的 RSS 生成器,可以给任何奇奇怪怪的内容生成 RSS 订阅源。RSSHub 借助于开源社区的力量快速发展中,目前已适配数百家网站的上千项内容。

rss

在这里特别感谢 DIYgod,为我们提供了如此方便的工具。 通过使用Flowerss_bot机器人,配合RSSHUB,我们就可以实现在Telegram订阅RSS了。

搭建教程

首先,你当然可以选择分别搭建Flowerss_bot机器人和RSSHUB,并对外开放进行订阅访问。这里推荐使用Docker的方式进行搭建,安装与移除都十分方便。 Flowerss地址:https://github.com/indes/flowerss-bot/tree/master/bot RSSHUB地址:https://docs.rsshub.app/install/#docker-compose-bu-shu 但是我的服务器资源有限,RSSHUB的端口并不想对外开放。而且使用Docker-compose部署的话,如果container之间有相互依赖,那么可以先后启动,这样容器之间就可以直接通过 容器名:端口 进行访问,方便快捷得多。 比如假设我分别假设Rss机器人和RSSHUB(假设地址是rss.ekkles.com,RSSHUB部署在1200端口),那么当我想通过RSS机器人进行订阅的时候,订阅地址就是https://rss.ekkles.com:1200/123456 (符合RSSHUB订阅链接规则),但是如果通过Docker Compose将他们组合在一个yml文件里,那么订阅时我只需要使用http://rsshub:1200/123456 即可。 所以,那我们正式开始

1. 申请一个Telegram bot

打开你的Telegram,在上面的搜索框中输入Botfather,打开后点击start启动Botfather,然后输入/newbot,即可创建你自己的机器人。创建后按照Botfather的提示输入你想要的机器人用户名,需要注意的是你的命名必须以_bot结尾。 此时Botfather会说Congratulations并为你生成你的RSSbot的专属链接和Token。注意保管好你的Token,它非常重要。你可以通过/help来查看相关的各种命令,包括修改机器人的名字和头像等等,在此不再赘述。 rssrss

2. 安装Docker及相关服务

我们使用的是Docker CE。Docker官方提供了安装的一键脚本。

1
curl -sSL https://get.docker.com/  sh

跑一个hello world确认一下安装正确

1
sudo docker run hello-world

其他具体安装方法可见该指南。 安装Docker-Compose

1
sudo pip install docker-compose

3. 编辑yml文件

具体Docker-Compose的介绍和详细使用指南这里就不作记录了,可以参考这里 这里只需要在docker-compose.yml内将RSSHUB和Flowerss_bot合并记录一下就可以了。需要注意这个yml文件对空格格式严格敏感,注意完整。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
version: '3'

services:
flowerss:
image: indes/flowerss-bot:latest
volumes:
- ./flowerss:/flowerss
working_dir: /flowerss
logging:
options:
max-size: '500k'
restart: always
rsshub:
image: diygod/rsshub
restart: always
ports:
- '1200:1200'
environment:
NODE_ENV: production
CACHE_TYPE: redis
REDIS_URL: 'redis://db.redis:6379/'
PUPPETEER_WS_ENDPOINT: 'ws://service.browserless:3000'
depends_on:
- db.redis
- service.browserless
service.browserless:
image: browserless/chrome
restart: always
db.redis:
image: redis
restart: always
volumes:
- redis-data:/data
volumes:
redis-data:

将docker-compose.yml保存至你服务器内的任意有权限使用的目录内,如/home/rss/。 并在/flowerss子文件夹中保存一个config.yml文件,内容如下:

1
2
3
4
5
6
7
8
bot_token: ##填写你的机器人Token,注意冒号后有空格
telegraph_token: ##填写你的Telegraph Token,获取方法见下。注意冒号后有空格
preview_text: 0
update_interval: 10
error_threshold: 100

sqlite:
path: ./data.db

获取你的Telegraph Token(用于预览你的RSS订阅)

1
curl https://api.telegra.ph/createAccount?short_name=flowerss&author_name=flowerss&author_url=https://github.com/indes/flowerss-bot

返回的 JSON 中 access_token 字段值即为 Telegraph Token。

4. 安装

使用SSH连接服务器,进入刚刚放置配置文件的目录,如/home/rss/。

1
cd /home/rss

输入命令进行安装:

1
docker-compose up -d

即可完成部署。输入docker ps -a即可查看已运行的容器。 如果需要关闭并删除,只需要

1
docker-compose down

即可。

5. 完成部署

此时即可打开Telegram并访问你刚刚创建的机器人,并使用相关的命令进行订阅了。 Flowerss使用命令如下:(也可输入/help进行查看)

1
2
3
4
5
6
7
/sub [url] 订阅(url 为可选)
/unsub [url] 取消订阅(url 为可选)
/list 查看当前订阅
/set 设置订阅
/import 导入 OPML 文件
/export 导出 OPML 文件
/help 帮助

如果遇到没有提供RSS链接的网站,即可使用我们部署好的RSSHUB进行操作,具体使用方法见https://docs.rsshub.app/ 下侧的路由指南。需要注意的是我们不需要为其绑定域名,只需要输入http://rsshub:1200/123456 这样格式即可,这里rsshub即咱们刚刚安装时RSSHUB的container名,1200为RSSHUB默认端口。 如我们要订阅微博,官方给出的示例格式为: https://rsshub.app/weibo/user/1195230310 在我们这里只需要写订阅链接为https://rsshub:1200/weibo/user/1195230310 即可,这样就避免了绑定域名的烦恼。 Example for rss-sub

小结

我已经使用这样的组合大概一个多月了,目前感觉良好,将微博知乎等App的推送功能关掉后世界清净多了,而且还关注了很多不错的博主。欢迎大家都来尝试使用RSS订阅来获取信息流更新,避免大数据将你困在信息舒适区。

参考资料

Docker从入门到实践:https://yeasy.gitbooks.io/docker_practice/ RSSHUB官网:https://docs.rsshub.app/ Flowerss_bot:https://github.com/indes/flowerss-bot Telegram——bot: https://core.telegram.org/bots