RSSHub规则化架构设计
2023-3-30 16:11:58 Author: blog.xlab.app(查看原文) 阅读量:32 收藏

最近Feed43凉了,替代品似乎也不多,为什么不能把RSSHub变成Feed43呢

https://github.com/DIYgod/RSSHub

曾经也给RSSHub贡献过一点代码,大部分的路由实现的套路都差不多

  1. 从网页/API接口上抓取数据
  2. 根据一定的规则,提取RSS需要的字段
  3. 构建RSS

其中最核心部分有两个

  1. 从哪里获取数据
  2. 数据如何转换成需要的字段

核心部分都是通过js代码实现,想要支持一个新的RSS成本比较高

装环境,部署调试,提交pr,pr合并,更新自己的RSSHub,订阅新的RSS

有很多很多次,我想加一个RSS,都是因为这个功能Feed43也能实现,只要在网页上点几下就能制作好,而放弃RSSHub

这其实也不利于RSSHub的发展,扩充支持站点

https://github.com/damoeb/rss-proxy

是一个比较理想的Feed43替代品

获取数据的地址和提取规则都是通过url传递,实时处理

增加新的RSS成本很低,但处理规则没有固化和分享

缝合

为什么不把RSSHub和RSS-proxy结合起来呢

将RSSHub处理路由和提取数据,参考RSS-proxy的模式,规则化

1
2
3
4
5
1. 输入地址
2. 链接转换成对应的API接口
3. 发起网络请求
4. 根据规则提取数据
5. 输出RSS

举一个例子

1
2
3
4
5
6
7
8
输入 https://a.com/users/tttmr
转换成 https://a.com/api/users/news?user=tttmr
发起网络请求,拿到json数据
提取数据
- .items得到数据列表
- .title得到标题
- .link得到链接
然后构建RSS

结构化描述步骤2和4,就是一个规则

RSSHub引擎负责执行这个规则就好

而且2中规则还可以复用给Radar,来告知哪些可以订阅

这样新支持一个RSS会非常简单,把规则随便扔给一个实例测一下,没问题就可以直接用了

用户的实例订阅官方规则库,自动同步更新

至于规则如何定义和实现,可以参考XPath,CSS选择器,正则表达式,JSONPath等,或者cel

RSSHub自己定义实现也不是不行


文章来源: https://blog.xlab.app/p/9c76cef/
如有侵权请联系:admin#unsafe.sh