#rss #utility #command-line-tool #sqlite #cli

bin+lib rss-actions

在 RSS 源更新时自动运行脚本

3 个不稳定版本

0.3.0 2024年7月10日
0.2.2 2022年10月14日
0.2.1 2022年10月13日

#1121命令行工具

AGPL-3.0

57KB
1K SLoC

build-test Coverage Status

关于 rss-actions

这是一个用于跟踪 RSS 源并在更新时自动运行脚本的 Rust 库和命令行程序。

通过 URL 和别名添加源,您可以为源关联多个过滤器,这些过滤器可以根据条目的标题中的关键字来匹配源中的特定条目。过滤器还与一个脚本相关联,该脚本会在每个与过滤器关键字匹配的条目上运行。

总结一下,源有:

  • 一个名称,称为别名
  • 一个 URL

过滤器有:

  • 与之关联的源,通过别名引用
  • 用于匹配相关联源中每个条目的关键字列表
  • 在匹配的条目上运行的脚本
  • 标记过滤器上次匹配时间的戳(不是源中最新的条目!)

每个源只下载一次,以防止在单个源上有多个过滤器时意外触达速率限制。

数据存储在本地 sqlite 数据库中。

使用方法

使用以下方法添加源:

rss-actions add feed <alias> <url>

使用以下方法添加过滤器:

rss-actions add filter <alias> <path-to-script> [keywords...]

然后添加一个 crontab 条目或 systemd 定时器文件,调用

rss-actions update

要列出源和过滤器,可以使用 rss-actions list feedsrss-actions list filters

使用和部署说明

请注意,如果您希望更新以不同的用户身份运行,您必须将配置文件从 $XDG_CONFIG_DIR/rss-actions/ 和 sqlite 数据库从 $XDG_DATA_DIR/rss-actions/ 复制到其他用户家目录中的相应目录,或更改配置文件以指向数据库的正确位置。此外,请确保您的脚本具有正确的位置并且是可访问的。

其他事项

在编写此程序时,我尝试只编写“集成”测试,即在顶级目录 tests/ 中。

到目前为止,唯一未被捕获的错误是

  • 在我的测试中,我创建了一个自定义配置,使用临时数据库目录,因此我错过了默认目录(~/.local/share/rss-actions/)不存在的情况。这可能会通过检查代码覆盖率来捕获。在之前的项目中,我为此显式进行了测试,实际上操作了$HOME环境变量,并使用全局锁以确保对该测试的测试不能并行运行(但其余的测试套件可以)。

  • 关键字匹配应该是大小写不敏感的,但我的测试中没有测试这一点

依赖项

~32–44MB
~804K SLoC