定制软件和一个简单的RSS聚合器

2020-05-25 20:39:18

这周我给自己建了一个RSS1聚合器2。有很多网站都是我的朋友写的,或者质量足够高,我想阅读上面发布的所有内容,而不仅仅是那些足够受欢迎的东西通过黑客新闻(Hacker News)或类似的方式传给我。

我很享受建造它的乐趣,我认为它的设计很有趣,所以让我们来看看它是如何工作的。我也会用它作为一个例子来谈谈我最近非常喜欢写的那种定制软件。

这就是它看起来的样子。这是一个网页,托管在news.routley.io上,其中包含指向我订阅的每个博客最近30天的帖子的链接。

网站和生成它的代码存储在单一的GitHub repo中,它通过将GitHub的几个功能粘合在一起来工作。

我编写了一个简单的go脚本,其中存储了我订阅的RSS提要的列表。运行脚本时,它会:

遍历提要,从每个提要中获取帖子列表,并将它们存储在所有帖子的大列表中。

使用Go的HTML模板包生成包含帖子列表的自包含HTML页面。

已为回购启用GitHub页面。它提供定制域news.routley.io上的docsdirectory(只包含index.html文件)的内容。

此操作由cron触发,每小时运行一次。当更新的index.html被推送到回购时,GitHub页面会自动更新网站。

从历史上看,我会将其作为CLI工具来构建,这样其他人就可以使用它来生成他们自己的RSS聚合器。这增加了我需要考虑的一些事情。例如,我需要:

定义一种方式,让人们指定要从中拉出帖子的提要。这可能是一个带有预定义语法的配置文件,我们需要读取和解析它。

如果用户不想使用GitHub页面,则允许用户指定要将HTML输出到的文件的名称。

将生成RSS聚合器的代码存储在与存储和服务我的RSS聚合器的repo不同的repo中,这样用户就可以克隆或派生它,而不会得到特定于我的聚合器的东西。

更新脚本以同时读取多个提要,因此对于订阅大量提要的用户来说,它仍然很快。

这些都不是特别难添加的,但是每一个都增加了项目的总体复杂性。在我作为一名软件工程师的日常工作中,我编写了许多代码,供其他人‘使用’-有时是直接的,但也有间接的,当他们阅读代码时,对其进行更改并使其在生产中运行。编写其他人使用的代码需要额外的工作。有时,您可以退一步,为自己编写代码,这是件好事。

RSS代表“真正的简单联合”。这是一种协议,允许网站以机器可读的格式列出其内容。应用程序可以读取RSS提要,将多个网站的内容集中到一个地方。

[返回]。

我称它为“RSS聚合器”,而不是更常见的“RSS阅读器”,因为我的阅读器不允许你直接阅读任何内容--它只是链接到源网页。

[返回]