Quantcast
Channel: 少数派
Viewing all articles
Browse latest Browse all 13792

不支持 RSS 订阅的网站,你可以用 RSSHub 搞定它

$
0
0

就我个人而言,无法割舍 RSS 的原因最重要的是以下两点:

  1. 没有遗漏地收取信息——像少数派首页新的文章、教务系统新的通知等,都是我不希望有遗漏的信息。

  2. 集中地收取信息——我是个很怕麻烦的的人,要我时不时地打开微博、Twitter、Instagram、YouTube、哔哩哔哩……去翻看我所有关注的人有没有更新,实在是一件痛苦的事。

RSS 服务就契合了这两个需求,我只需要打开阅读器就能接收所有信息,而「未读」标记则可以提醒我遗漏了哪些重要的信息。

但 RSS 并不是完美无缺,一个最大的问题就是 RSS 从来都不是一个信息发布的主流方式,除了部分新闻类网站,大多数的网站都是缺少官方的 RSS 来源(比如以上列举的大部分网站)。

不过问题的解决并不困难,我之前的方案是使用 HuginnFeed43之类的工具,通过抓取网站页面特定段落的更新,来生成 RSS 订阅源。这些工具大多只需要有一定的 HTML 和 Linux 基础就能使用,但毕竟还有一定门槛,本文要介绍的就是将这一门槛抹平的新兴工具—— RSSHub

请输入图片标题

RSSHub 订阅源的制作

与 Huginn、Feed43 等工具类似,RSSHub 在大部分网站上也是通过抓取网页的方式获得订阅源,不同的是在 RSSHub 中,已经完成了对抓取规则的编写,只需要用户简单的编辑下地址即可。

比如我希望订阅 YouTube 上 Linus Tech Tips的视频,我在网页上找到 LTT 的用户名是「LinusTechTips」,根据 RSSHub 的 官方文档,我只需要在 https://rsshub.app/youtube/user/之后加上这个用户名,即 https://rsshub.app/youtube/user/LinusTechTips,一个订阅源就制作完成了。

Linus Tech Tips的 YouTube 频道订阅
Linus Tech Tips的 YouTube 频道订阅

RSSHub 上目前提供各类型的、总计超过 100 个网站的订阅源制作,而且随着参与者队伍的壮大,订阅源的数量还在快速上升中。从社交媒体到教务通知、从程序跟新到气象预警,只要你能想到的都会有不同的参与者开发完成。其中部分网站还提供多种订阅方式,比如 YouTube 可以订阅用户和频道、Telegram 可以订阅频道和贴纸包等等。

RSSHub 订阅源的过滤

对于某些更新量较大的订阅源,我们可能会希望剔除掉不需要的信息,除开各类阅读器提供的过滤选项,RSSHub 本身也提供各种过滤参数,只需要添加到订阅源地址上即可。

比如,Pixiv 周排行榜每次都会推送前 30 名的作品,如果我只希望接收前 10 名的推送,只需要在订阅源 https://rsshub.app/pixiv/ranking/week之后加上 ?limit=10这一参数即可。

再比如,我不想在 Pixiv 周排行榜中看到关于 miku 的作品,只需要在订阅源后面加上 ?filterout=miku这个参数,那就不会收到标题和描述里带有 miku 的推送。

其他的通用过滤参数和部分网站的专用过滤参数就不一一列举了,不过要提的是部分参数不能同时使用,比如我们无法用 ?limit=10?filterout=miku这一参数在只接收前 10 作品的同时过滤掉关于 miku 的作品,具体见 官方文档

RSSHub 的部署

开源项目的生存依赖作者的热情和用户的支持,稳定性当然是不如商业项目,如果有一天因为官方服务器的关闭导致大量订阅失效,也是件很苦恼的事。

所幸 RSSHub 是一个基于 Node.JS 开发的 项目,可以很轻松的部署在服务器或是本地计算机上,这里就不照搬 官方说明了,现在 VPS 价格愈发亲民,有能力的用户完全可以手动部署在自己的服务器上。

需要指出的是,如果想自建 RSSHub,那么部分依赖 API 的订阅源,比如 Disqus,就需要自己去申请 API 了。

后记

RSS 的用户很容易染上无节制地增加订阅源的习惯,尤其是学会使用订阅源制作工具后,走马观花式地扫几眼后,直接按下「全部已读」变成常态。我个人认为如果希望保证 RSS 阅读的体验,就要在这方面加以克制,避免自己的阅读器中充斥大量混乱的信息。

>下载少数派 客户端、关注 少数派公众号,了解更多有趣的应用 🚀


Viewing all articles
Browse latest Browse all 13792

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>