部署RSSHub并使用Telegram-bot推送

7/8/2021 RSSHubRSS-proxyRSS订阅Telegram-botFlowerss

# 1. 基本概念

# 1.1 RSS简介

RSS(Really Simple Syndication):简易信息聚合,当网站内容更新时,可以通过订阅RSS源在Telegram Bot、RSS阅读器上获取更新的信息。可以打造自己的订阅生态圈,以保证内容的高质量。

RSS源:一些个人博客网站大多都有主动提供,而主流的社交媒体网站为了打造自己的内容闭环,通常主动不提供,可以通过RSSHub抓取生成。

# 1.2 RSSHub简介

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

项目地址:https://github.com/DIYgod/RSSHub (opens new window)

# 1.3 Telegram Bot简介

Telegram Bot 是基于 Telegram 客户端的第三方程序。 用户可以通过向Bot发送信息、照片、指令、在线请求等一系列的方式与Bot互动。 Bot的所有者通过 Bot 的API 访问并请求Telegram Server的信息。

# 1.4 Flowerss Bot 简介

flowerss bot 是一个支持应用内即时预览的 Telegram RSS Bot,有着丰富的订阅设置,可以作为个人订阅和频道订阅。

项目地址:https://github.com/indes/flowerss-bot (opens new window)

# 1.5 成品展示

RSSBot订阅成品

# 2. 部署前的准备工作

以下所有服务均选择自建,我将采用Docker部署的方式,VPS系统用的是Debian 11 x86_64。

# 2.1 Docker环境搭建

$ apt-get update -y && apt-get install curl -y  # 安装curl
$ curl https://get.docker.com | sh -   # 安装docker
$ sudo systemctl start docker  # 启动docker服务
$ docker version # 查看docker版本(客户端要与服务端一致)
1
2
3
4

# 2.2 Docker-MySQL环境搭建

# 2.2.1 拉取镜像创建实例容器并运行

$ docker pull mysql:5.7
$ docker run -p 3306:3306 --name mysql \
-e TZ=Asia/Shanghai \
-v /mydocker/mysql/conf:/etc/mysql/conf.d \
-v /mydocker/mysql/logs:/var/log/mysql \
-v /mydocker/mysql/data:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=[password] \
-d mysql:5.7 --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
$ docker update mysql --restart=always
1
2
3
4
5
6
7
8
9

命令解释说明:

-p 3306:3306:将主机的3306端口映射到docker容器的3306端口。
--name mysql:运行服务名字
-e TZ=Asia/Shanghai:时区是使用了世界标准时间(UTC)。因为在中国使用,所以需要把时区改成东八区的。
-e MYSQL_ROOT_PASSWORD=[password]:初始化 root 用户的密码。
-d mysql:5.7 : 后台程序运行mysql5.7
--character-set-server=utf8mb4 :设置字符集
--collation-server=utf8mb4_unicode_ci:设置校对集
1
2
3
4
5
6
7

说明:如果是挂载已有的其他服务器数据,可能会出现用户权限问题,如果网络是通的,建议使用Navicat的数据传输功能(工具——数据传输——配置源与目标链接——选择需要传输的数据表即可),数据传输速度很快。

# 2.2.2 创建数据库及用户

在本地使用Navicat工具使用root用户连接上该数据库,使用如下四条命令创建数据库及用户。

--创建新的数据库,并设置数据库编码
$ CREATE DATABASE 你的数据库名 DEFAULT CHARSET=utf8 DEFAULT COLLATE utf8_unicode_ci;

--创建新的用户
$ CREATE USER '你的用户名'@'你的服务器IP' IDENTIFIED BY '你的密码';

--把数据库的管理权限给予刚刚创建的MySQL用户
$ GRANT ALL PRIVILEGES ON *.* TO '你的用户名'@'%' IDENTIFIED BY '你的密码' WITH GRANT OPTION;

--刷新权限,使用设置生效
$ FLUSH PRIVILEGES;
1
2
3
4
5
6
7
8
9
10
11

注:如果连接数据库时出现Access denied for user '用户名'@'某IP' (using password: YES)问题,则是第三句授权出了问题,你的本地外网IP被拦截了,那个'%'代表的是访问IP不受限制。

# 2.3 申请Telegram Bot

# 2.3.1 申请 Telegram Bot

找 BotFather 官方机器人申请自己的 Telegram Bot,需要记录下:BotName、TOKEN、CHATID等信息。

  • Step1:在Telegram中添加BotFather这个账号,然后依次发送/start/newbot,按照提示即可创建一个新的机器人。记下来给你生成的token。
  • Step2:搜索刚刚创建的机器人的名字,并给它发送一条消息。(注意:需要先与机器人之间创建会话,机器人才能下发消息,否则机器人无法主动发送消息)
  • Step3:在Telegram中搜索userinfobot,并给它发送一条消息,它会返回给你chatid,将它也记下来。

# 2.3.2 修改 Telegram Bot 头像

还是找 BotFather 官方机器人,先发送/setuserpic,它会让你选择为哪个Bot修改,选择完之后发送头像图片给它即可。

注:头像以图片的形式发送,不要以文件的形式发送(发送时点上那个压缩图片即为图片的形式发送)

# 3. 部署RSSHub制作RSS源

官方提供的服务是https://rsshub.app/,用的人太多,容易失效,强烈建议自己部署 RSSHub 服务。

# 3.1 使用Docker部署RSSHub

以下我采用了最简的部署方式,一些高级配置我都没有配,会导致部分服务用不了,详见官方文档:https://docs.rsshub.app/en/install/ (opens new window)

# 3.1.1 拉取镜像并部署RSSHub

依次执行以下三条命令,拉取镜像并部署RSSHub,然后设置了开机自启

$ docker pull diygod/rsshub
$ docker run -d --name rsshub -p 1200:1200 diygod/rsshub
$ docker update rsshub --restart=always
1
2
3

这时我们用Chrome打开http://ip:1200/路径,即可看到以下页面,说明部署成功。

RSSHub部署成功

# 3.1.2 设置反向代理并开启HTTPS

使用OneinStack搭建Nginx并配置反向代理及HTTPS,具体操作步骤此处不再赘述。

# 3.2 使用RSSHub制作RSS源

# 3.2.1 根据官方文档手工制作

RSSHUB的使用方法非常简单,查看 RSSHub使用手册 (opens new window) 拼接出对应服务的订阅地址即可。

RSSHub生成的RSS订阅地址基本模板为:RSSHub服务地址/订阅的网站路由/订阅页面id

说明:RSSHub服务地址就是你刚才搭建的那个服务地址,把它替换掉官方的https://rsshub.app/,订阅的网站路由查看官方文档,订阅页面id去目标网站获取。

RSSHub支持的平台非常之多,几乎你能想象到的都支持,要么怎么叫万物皆可RSS呢,下面给出几个我常用的,摘自官方文档。

[1] Bilibili UP主投稿
举例: https://rsshub.app/bilibili/user/video/2267573 
路由: /bilibili/user/video/:uid/:disableEmbed?
参数:
uid, 必选 - 用户 id, 可在 UP 主主页中找到
disableEmbed, 可选 - 默认为开启内嵌视频, 任意值为关闭

[2] 知乎热榜
举例: https://rsshub.app/zhihu/hotlist 
路由: /zhihu/hotlist
参数: 无

[3] 知乎用户动态
举例: https://rsshub.app/zhihu/people/activities/diygod 
路由: /zhihu/people/activities/:id
参数:
id, 必选 - 作者 id, 可在用户主页 URL 中找到

[4] 豆瓣 正在上映的高分电影
举例: https://rsshub.app/douban/movie/playing/7.5 
路由: /douban/movie/playing/:score
参数:
score, 必选 - 返回大于等于这个分数的电影

[5] 豆瓣 即将上映的电影
举例: https://rsshub.app/douban/movie/later 
路由: /douban/movie/later
参数: 无

[6] Github Trending
举例: https://rsshub.app/github/trending/daily/javascript 
路由: /github/trending/:since/:language?
参数:
since, 必选 - 时间跨度, 可在 Trending 页 URL 中找到, 可选 daily weekly monthly
language, 可选 - 语言, 可在 Trending 页 URL 中找到

[7] 腾讯视频 播放列表
举例: https://rsshub.app/tencentvideo/playlist/jx7g4sm320sqm7i 
路由: /tencentvideo/playlist/:id
参数:
id, 必选 - 播放列表 ID,可以在 URL 中找到

[8] 原神 动态
举例: https://rsshub.app/yuanshen 
路由: /yuanshen/:location?/:category?
参数:
location, 可选 - 区域,可选 zh_CN 或 zh_TW
category, 可选 - 分类,(最新:latest、新闻:news、公告:notice、活动:activity),默认为最新
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
36
37
38
39
40
41
42
43
44
45
46
47
48

注:有些服务可能用不了,因为在部署服务时略过了一些高级配置,非要用的话去看官方文档自己研究一下对应的配置。

# 3.2.2 使用RSSHub-Radar自动生成

RSSHub-Radar (opens new window) 是 RSSHub 的衍生项目,是一个可以帮助你快速发现和订阅当前网站 RSS 和 RSSHub 的浏览器扩展。

  • 快速发现和订阅当前页面自带的 RSS
  • 快速发现和订阅当前页面支持的 RSSHub
  • 快速发现当前网站支持的 RSSHub
  • 支持一键订阅 RSS 到 Tiny Tiny RSS、Miniflux、FreshRSS、Nextcloud News、Feedly、Inoreader、Feedbin、The Old Reader、Feeds.Pub、BazQux Reader、本地阅读器

RSSHub-Radar

Chrome商店安装:https://chrome.google.com/webstore/detail/kefjpfngnndepjbopdmoebkipbgkggaa (opens new window)

压缩包解压安装:https://github.com/DIYgod/RSSHub-Radar/releases (opens new window)

# 3.3 使用 RSS-proxy 制作订阅源

除了 RSSHub 之外,还可使用 RSS-proxy 来制作订阅源,作为前者补充使用,但后者也有些网站不支持生成RSS订阅。

# 3.3.1 RSS-proxy简介

简介:RSS-proxy 是一个工具,它允许您创建几乎任何网站的 RSS/ATOM 或 JSON 提要,仅通过分析静态 HTML 结构。

项目地址:https://github.com/damoeb/rss-proxy (opens new window)

# 3.3.2 RSS-proxy部署

部署方式:通过Docker进行部署。

$ docker pull damoeb/rss-proxy
$ docker run -itd -p 3000:3000 --name rss-proxy damoeb/rss-proxy
$ docker update rss-proxy --restart=always
1
2
3

Chrome打开 http://ip:3000 进行访问,至于反向代理与开启HTTPS同上,就不赘述了。

# 3.3.3 RSS-proxy使用

打开RSS-proxy页面,在左边的输入框粘贴上订阅地址,点击Show Feeds,然后

RSS-proxy制作订阅源

# 4. 部署 Flowerss Bot 订阅 RSS

Flowerssr bot支持多种部署方式,下面我将以 Docker 的方式部署 Flowerssr bot,数据库选择的是MySQL,VPS系统用的是Debian 10 x86_64。其他方式见:Flowerssr bot 使用文档 (opens new window)

# 4.1 Docker部署Flowerssr bot

Step1:下载配置文件,在项目目录下新建 config.yml 文件

$ mkdir ~/flowerss &&\
wget -O ~/flowerss/config.yml \
    https://raw.githubusercontent.com/indes/flowerss-bot/master/config.yml.sample
1
2
3

Step2:修改配置文件(主要是填写Telegram bot Token和数据库信息,其他的按需修改即可)

bot_token: 你的Telegram Bot Token(必填)
telegraph_token:
telegraph_account:
telegraph_author_name:
telegraph_author_url:
socks5:
update_interval: 10
user_agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.103 Safari/537.36

mysql:
  host: 数据库IP(必填)
  port: 数据库端口号(必填)
  user: 数据库用户(必填)
  password: 数据库密码(必填)
  database: 数据库名称(必填)

telegram:
  endpoint:

log:
  level: release
  db_log: false # 打印数据库日志,false则只会打印数据库错误日志

sqlite:
  path: ./data.db

allowed_users:
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

配置说明:

Flowerssr-bot配置说明

Step3:创建实例容器并运行

$ docker run -d --name rssbot -v ~/flowerss:/root/.flowerss indes/flowerss-bot  
$ docker update rssbot --restart=always
1
2

正常的话就可以使用了,如果没有部署成功,可以用下面命令看一下日志

$ docker logs -f rssbot --tail 100
1

# 4.2 Flowerssr bot 的使用

主要分为个人订阅(在Bot里推送)和频道订阅(在频道里推送)flowerss-bot,具体使用可以在 Flowerssr bot 里面使用/help命令查看帮助。

[1] 个人订阅

/sub [url] 订阅(url 为可选)
/unsub [url] 取消订阅(url 为可选)
/list 查看当前订阅
/set 设置订阅
/check 检查当前订阅
/setfeedtag [sub id] [tag1] [tag2] 设置订阅标签(最多设置三个Tag,以空格分隔)
/setinterval [interval] [sub id] 设置订阅刷新频率(可设置多个sub id,以空格分隔)
/activeall 开启所有订阅
/pauseall 暂停所有订阅
/import 导入 OPML 文件
/export 导出 OPML 文件
/unsuball 取消所有订阅
/help 帮助
1
2
3
4
5
6
7
8
9
10
11
12
13

[2] 频道订阅

Step1:将 Bot 添加为 Channel 管理员

Step2:发送相关命令给 Bot

/sub @ChannelID [url] 订阅
/unsub @ChannelID [url] 取消订阅
/list @ChannelID 查看当前订阅
/check @ChannelID 检查当前订阅
/unsuball @ChannelID 取消所有订阅
/activeall @ChannelID 开启所有订阅
/setfeedtag @ChannelID [sub id] [tag1] [tag2]  设置订阅标签(最多设置三个Tag,以空格分隔)
/import 导入 OPML 文件
/export @ChannelID 导出 OPML 文件
/pauseall @ChannelID 暂停所有订阅
1
2
3
4
5
6
7
8
9
10

注:ChannelID 只有设置为 Public Channel 才有。如果是 Private Channel,可以暂时设置为 Public,订阅完成后改为 Private,不影响 Bot 推送消息。

# 5. 参考资料

[1] RSSHub项目地址 from Github (opens new window)

[2] RSSHub部署 from 官方文档 (opens new window)

[3] RSSHub使用手册 from 官方文档 (opens new window)

[4] Telegram Bot 使用文档 from cnblogs (opens new window)

[5] Telegram RSS机器人 Flowerssr bot from 勿埋我心 (opens new window)

[6] flowerss-bot项目地址 from Github (opens new window)

[7] flowerss-bot使用说明 from 官方文档 (opens new window)

[8] 简化查找和订阅 RSS 和 RSSHub 的浏览器扩展 from Github (opens new window)

Last Updated: 10/18/2024, 8:44:26 AM