平时有空的时候,经常会去自己喜欢的几个网站看看文章,因为文章的更新时间都是随机的,经常出现点进去什么更新都没有。所以我就决定自己搞一个简单的文章更新通知程序,说干就干。
需求
首先明确一下自己的需求:
- 只需推送文章标题和链接
- 增删 RSS 地址简单
- 跨平台使用
- Free
这里只推送标题和链接,是因为 RSS 链接输出的文章大多都是不包含 CSS 样式的,直接渲染文章的话样式会很难看,这个程序只需要告诉我某个网站有更新了,然后点到对应的链接查看原文。
这个程序本身也没想设计的多复杂,获取到的数据也没必要落地,直接推送出去就可以了,也就没必要上数据库,通过在文件里增删 RSS 地址即可。
本来是想通过邮箱来做接收端的,但是因为后面计划是通过 github action 来实现定时推送,而且预计的采集间隔是一小时(现在其实是四小时的采集间隔),通过邮件来实现感觉有点蛋疼,所以还是选择了 Telegram Channel。而且 Telegram 可以对链接进行解析,输出文章开头的一点内容,实际的使用体验非常好,可以帮助我快速判断这篇文章是否值得一读。
整个程序使用 Github 托管代码(Public Repo),Action 进行定时采集,文章更新推送到 Telegram,项目完全 Free。
实现
既然需求已经明确了,实现起来就简单多了。具体的实现细节就不多说了,基本的流程就是:
- 每隔四小时定时执行一次
- 通过配置文件获取 RSS 链接
- 通过链接获取对应的文章更新
- 通过文章中包含的发布时间判断是否处于可发送的时间区间
- 推送最近更新的文章
因为网站 RSS 的更新可能会有延迟,采集间隔设置的太短会出现很多文章采集不到问题。综合考虑了一下,四小时是比较合适的。
此外需要注意的一点是,程序是通过识别文章 RSS 中输出的发布时间来判断该文章是否是过去四小时产生的文章,如果添加的 RSS 链接中无法解析出该字段,那程序就无法判断对应的文章是否可以发送,所以在添加链接之前最好先查看一下 RSS 输出的内容是否包含类似 pubDate
之类的发布时间字段。
使用
如果你觉得这个项目有意思,你可以点击此处进入仓库查看具体的使用方式。