经常泡在开源社区,特别是 GNU/Linux 系的社区里的话,应该对 planet 这个东西很熟悉。它是一个社区用户的聚合,通过定时任务获取订阅频道的 Feed,然后按照更新时间聚合起来,展示在网页上并提供统一的 RSS 源。
Planet 用一种古老而简单的办法将社区成员联系在一起,共享自己的生活和兴趣。
目前经常使用的就是 planetplanet.org(活跃开发在 planet venus? 不明这之间的联系)的程序,很多发行版也将这个工具收到了自家仓库里。但是最近在折腾的时候遇到了很多 caveats 而且大部分都是需要 patch 程序而不是修改环境或配置即可修复的。包括:
- 莫名其妙无法获取 feed,浏览器访问正常,用 curl 正常
- 莫名其妙无法读取 feed 内容,其他 feedparser 均正常
- 对文章内使用相对链接的内容无能为力
- 模板语言落后
- 输出路径一直是
cwd
,不知道是不是 feature。但是这导致我的 home 下面到处都是 output 目录
所以…强迫症的重写了一个轮子。
既然要造轮子总得考虑得更周全一些。相比较 planet venus,这个轮子的一些 feature 包括:
- 支持 Gzip 压缩的 Feed 和多种编码(并统一输出 UTF-8)
- 更完善的相对路径的处理(针对
a
和img
) - 自定义允许的标签(
a
,p
,b
…)和允许的标签属性(src
,href
,data-*
…) - http proxy(不要问我为什么加上这个)
- 长文展示 summary,以免过长但读者未必有兴趣的文章占据过多翻页时间,长文的字符数是可以自定义的
- 支持使用相对路径、绝对路径的 URI 和 Gravatar email 作为 avatar
- (其他一些细节)
源码和安装说明戳 -> https://github.com/phoenixlzx/planet.js
这里是一个正在使用的站点 -> https://planet.nyaa.cat/
以及我的博客文章 -> https://blog.phoenixlzx.com/2017/02/18/dont-ask-me-why-invent-another-planet-river-of-news/
欢迎试着折腾下&发现问题请反馈