RSSHub 上手

一直以来就是RSS这一逐渐式微的技术的用户,眼看着RSS越来越小众的从当年的百花齐放变成了需要一定的门槛才能用的技术(更不用说比起国外来说,目前国内几乎已经不存在真正意义上的RSS阅读服务了),未免有些唏嘘。

就我个人来说,目前我的客户端已经很彻底的脱离了线上服务,开始依靠本地的客户端。而再三寻觅之后,目前已经使用了相当长时间的就是浏览器端的Feedbro ,可以说,除了不是云端之外,已经很合我心意。但是RSS的Feed侧,那就只有看提供者的态度了——直到我看到了RSSHub.

RSShub的文档已经很棒了,感兴趣的话,完全从它的在线文档就可以读到使用它的方方面面,简单讲就是:

RSSHub 是一个开源、简单易用、易于扩展的 RSS 生成器,可以给任何奇奇怪怪的内容生成 RSS 订阅源。RSSHub 借助于开源社区的力量快速发展中.目前已适配数百家网站的上千项内容.可以配合浏览器扩展 RSSHub Radar 和 移动端辅助 App RSSBud (iOS) 与 RSSAid (Android) 食用

虽然在国内,没法使用rsshub.app的原始服务,但是它有很多国内的镜像服务,只要你通过替换前缀,那就可以通过这些服务来实现定制化的RSS阅读需求。具体方法也就不赘述了。

我这里重点是来大致聊一聊我从0开始使用、搭建和提交RSS订阅源的过程,姑且抛砖引玉,为其他感兴趣的人提供点线索。

使用RSSHub

如果你只是想使用借助已有的源, 如前所述,你不需要做任何特别的事情,只要搭配你最习惯的RSS阅读器客户端,外加一个RSS嗅探器就可以了,虽然有人推荐其他第三方的工具,但是我觉得最好的整合恐怕还是RSSHub官方出品的浏览器扩展RSS Radar Edge Store / GitHub;重点是按照规范,毕竟各个源的作者在适配源的同时,多少会按照官方要求来同时源码级别适配RSS Radar来映射source和target的关系。

搭建部署

假如用户不满足于已有的RSS源,而是想自己定制一些,甚至是想回馈社区提交新的订阅,那么就需要自己部署一下,部署的guidance也很详细 ,因为涉及到定制,那么毫无疑问要选择手动部署 。 本身并不复杂,但是因为更新Yarn、Node等等,反而折腾了不少时间。

开发细节

首先,如果是想正式提交的话,要从官方github做一个fork。

依然从官方文档开始, 这里有着比较详细的说明,但是稍微有几句个人出发的理解分享如下:

针对不同的源,可能创建或者修改的包括 /lib/v2/xxxx下的文件,以及 /doc/xxxx下的文档(这里的文件名取决于你的网站源的分类前者是涉及到RSSHub的解析抓取和RSS Radar支持的相关实现,后者是实现文档的更新。

建议选一个典型的目录参考读一下,应该上手不难:

具体来说:/lib/v2/xxxx/router.js是决定如何路由到相应实现代码(举例):

module.exports = (router) => {
    router.get('/thread/:tid', require('./thread'));
    router.get('/digest/:tid', require('./digest'));
};

然后具体实现,则需要按照范例继续做实现,这部分官方文档写的就比较详细了,完全可以按图索骥—— 有心自行扩展的人,自然不在话下。

修改之后,当然应该按照guide在自己的服务器上试着跑一下看看效果,确认没有问题之后,再试着给RSSHub提交一个Pull Request。

提交代码

填写Pull Request的时候,作者其实已经给了比较好的Pull Request 的提交信息模板,当然建议提交之前仔细参考阅读一下,尽量按照模板的要求补充好信息,利人利己。

一旦填写完毕提交之后,会有自动的action进行代码check(这点必须赞一个,RSSHub的这块做的的确专业),包括Lint的check,包括填写的sample网址的访问尝试等等等等,如果出了错,用不着作者review,自己就可以先修改好了再次提交。

从我外行人的角度,这一次提交的几个错误不妨列出来以资参考:

  • Lint检查就发现了一些代码规范上的瑕疵,比如空格之类;
  • 在我解决了自动化检查的这些错误之后,又再次提交,之后RSSHub作者TonyRL很迅速的给了review意见(非常感谢,简明扼要而且都切中要害);
    • 指出了Promise和Await的一些混乱之处 (老实说,这一块我一直就没有理太清楚,所以干脆眼一闭直接take了TonyRL的suggestion,清爽);
    • 去除一些无必要的变量;
    • 对于html渲染的部分,按照要求使用art-template 来实现。

这些都解决完之后,直接提交很快就被接受合入,还是很顺利的。


我现在只是在想是不是还需要再去捣鼓一个在线RSS客户端呢?

14 Nov 2022 , 写毕。