关于 RSS 订阅器,以及推荐自建 tt-rss

RSS 订阅器,大致上分三种:

  • 现有的网络服务,如当年的 Google Reader
  • 单机版的订阅器
  • 自建网络服务

从 Google Reader 停止服务,到现在快 10 年了。之后的所谓「老牌」订阅服务,如 feedly、inoreader,都限制了免费用户的订阅数量,不能超过 100 或 150 条。倒不是非要坚持用免费的,只是:

  • 首先,这些服务并没有如当年大家期望的,在用户与用户之间,发展出推荐阅读之类的社区功能;
  • 其次,如果有一天,它们也像 Google Reader 那样倒闭了,在这些订阅器里镜像的 blog 文章也全都消失,才是最大的损失。

单机版的订阅软件有很多,一些邮件客户端甚至手机浏览器,也有这方面功能。所以问题还是

  • 抓取的文章能不能长久保存?哪怕重新装机,原来的文章也还在?有很多免安装的 RSS 订阅器,但其中大部分都是十几年前 blog 时代的作品,早已停止更新,对新的操作系统以及新的 rss atom 协议,支持都不好。Windows 下我在用 QuiteRSS,感觉不错。免安装,数据保存在 sqlite 文件里,似乎也有 Mac 版本。
  • 以及,这类本地订阅器,有没有可能,通过网盘同步数据,从而实现多台机器或手机同时使用?我还没有见过这方面靠谱的方案。

自建 RSS 服务里,很多人推荐界面简洁的 Miniflux,我以前试过,感觉还行,但似乎有因为过于简化而不适的地方,忘了具体是什么了。/ 最终选择了 tt-rss (Tiny Tiny RSS),界面确实要比 Miniflux 臃肿一些,响应慢一些,但是它有一个非常亮眼的功能:你在 tt-rss 订阅器里,可以选择「发布」某些喜爱的文章,而这些发布出来的文章,是能够生成一个新的 RSS 地址,让别人订阅的!把这个 RSS 发给好友,对方就可以通过订阅这个地址,收到你向他推荐的文章。这就很有当年 Google Reader 的味道了!!

点击顶部「已发布文章」旁边的图标,就可以得到带密钥的 RSS 地址,发送给好友。

不只是「已发布文章」,加星的文章、你标记的某一个 tag、甚至管理 feed 时的每个目录,都是可以生成 RSS 地址的。地址的格式类似于:

https://website/public.php?op=rss&id=50&is_cat=0&q=&key=00secret0key00

除非你公开,外人无法得知。你也可以把不同的 tag 生成各自的 RSS 地址,向不同的人群公开。总之可以玩出很多花样。

其实 tt-rss 只是简单的 php+sql 架构,和 wordpress 放在一起就行了。但最近官方的文档,只推荐用 docker 安装。分成了 5 个 containers,总共需要约 180MB 的内存。

Docker ContainersMemory Usage
ttrss-docker_db_187.38 MiB
ttrss-docker_app_132.07 MiB
ttrss-docker_web-nginx_18.49 MiB
ttrss-docker_backups_11.98 MiB
ttrss-docker_updater_150.68 MiB

[php] 将多个 RSS 地址合并成一个

弄了个 php 程序,可以把自己的(or 别人的)多个 blog 的 RSS 订阅地址,合并成一个,供人订阅。例如,现在本站的几个 blog 的统一订阅地址为:

https://feed.fivest.one/

程序基于 DigitalFreelancing 的代码,略作修改,调用了 SimplePie 处理 RSS 的项目库,为每个原始的 RSS 地址生成缓存,避免了频繁读取。我修改后的版本,可以从【这里】下载。

使用说明

  • 配置支持 PHP 的网络服务器,过程略;
  • 下载源文件后,解压到新的 RSS 地址相应的文件夹里;
  • 编辑 index.php,修改如下部分:
$feedlink = "https://feed.fivest.one/"; // 这个新的 RSS 的网址
$feedtitle = "fivestone"; // RSS 名称
$feedhome = "https://fivest.one"; // 你的网站地址(在 RSS 阅读器里点击 Title 可以进入)
$feeddesc = "fivestone's posts aggregation"; // RSS 描述

$feeds = array( // 需要合并的 RSS 网址列表,以引号和逗号分隔
    'https://a.fivest.one/feed',
    'https://b.fivest.one/feed'
);

$time_zone = 'Asia/Taipei'; // RSS 使用的时区
$item_number_limit = 20; // 新的 RSS 显示的文章数上限
$creativeCommons_license = 'https://creativecommons.org/licenses/by-sa/4.0'; // 你选择的知识产权协议(可以自行修改或为空)
  • 根据你的网络服务器的权限配置方式,可能需要把 cache 文件夹设为群组或全部可写
chmod g+w cache 或者 chmod a+w cache
  • 也可以把 index.php 改名,或者复制到其它位置,分别配置,生成多个这样的聚合 RSS。注意要调整文件中的相对路径:
include_once('./simplepie/autoloader.php');

[wordpress plugin] Disable Comment RSS

Plugin Name: Disable Comment RSS
Plugin URI: http://code.google.com/p/wp-disable-comment-rss/
Blog URI: http://blog.fivest.one/archives/664
Description: Disable RSS of posts or comments separately
Version: 0.8
Author: fivestone
download link
== Description ==
User can choose to disable the RSS for the posts or the comments, or both of them.
Background:
I am using the plugin “Whisper” to make some comments invisible, but they still appear
in the comments RSS. Then I want to disable the comments RSS while keeping the post
RSS valid. There seemed no proper plugin for it, so I write this one.
== Installation ==
1. Upload the directory “disable-comment-rss” to the “/wp-content/plugins/” directory
2. Activate the plugin through the ‘Plugins’ menu in WordPress
3. In menu “Setting -> Disable Comment RSS”, choose the RSS which you want to disable.
== Screenshots ==

—————————————-
第一次写 wordpress 插件,练练手~~
功能很简单:禁用RSS。上次装了留言悄悄话插件后,一直在找有什么插件能把评论的RSS禁掉,但网上能找到的都是连文章RSS一起禁的,手动改代码又不方便自动升级。不能忍了干脆自己写一个玩,可以在菜单里选择你要禁用文章的RSS还是评论的RSS。
Version 0.8 公测。大家试试哈。过几天稳定的话,改成1.0提交到官网去。我一直以为所谓 wordpress 用户就是 wordpress.com 上的用户,原来不是。。。wordpress.org的fivestone居然被人注册掉了,这个是用来定义作者署名的啊呜呜呜。