平时有空的时候,经常会去自己喜欢的几个网站看看文章,因为文章的更新时间都是随机的,经常出现点进去什么更新都没有。所以我就决定自己搞一个简单的文章更新通知程序,说干就干。

需求

首先明确一下自己的需求:

  1. 只需推送文章标题和链接
  2. 增删 RSS 地址简单
  3. 跨平台使用
  4. Free

这里只推送标题和链接,是因为 RSS 链接输出的文章大多都是不包含 CSS 样式的,直接渲染文章的话样式会很难看,这个程序只需要告诉我某个网站有更新了,然后点到对应的链接查看原文。

这个程序本身也没想设计的多复杂,获取到的数据也没必要落地,直接推送出去就可以了,也就没必要上数据库,通过在文件里增删 RSS 地址即可。

本来是想通过邮箱来做接收端的,但是因为后面计划是通过 github action 来实现定时推送,而且预计的采集间隔是一小时(现在其实是四小时的采集间隔),通过邮件来实现感觉有点蛋疼,所以还是选择了 Telegram Channel。而且 Telegram 可以对链接进行解析,输出文章开头的一点内容,实际的使用体验非常好,可以帮助我快速判断这篇文章是否值得一读。

整个程序使用 Github 托管代码(Public Repo),Action 进行定时采集,文章更新推送到 Telegram,项目完全 Free。

实现

既然需求已经明确了,实现起来就简单多了。具体的实现细节就不多说了,基本的流程就是:

  1. 每隔四小时定时执行一次
  2. 通过配置文件获取 RSS 链接
  3. 通过链接获取对应的文章更新
  4. 通过文章中包含的发布时间判断是否处于可发送的时间区间
  5. 推送最近更新的文章

因为网站 RSS 的更新可能会有延迟,采集间隔设置的太短会出现很多文章采集不到问题。综合考虑了一下,四小时是比较合适的。

此外需要注意的一点是,程序是通过识别文章 RSS 中输出的发布时间来判断该文章是否是过去四小时产生的文章,如果添加的 RSS 链接中无法解析出该字段,那程序就无法判断对应的文章是否可以发送,所以在添加链接之前最好先查看一下 RSS 输出的内容是否包含类似 pubDate 之类的发布时间字段。

使用

如果你觉得这个项目有意思,你可以点击此处进入仓库查看具体的使用方式。