#rss #webhook #atom #stdio

app rss-forwarder

检查 RSS 资源的新条目并将它们转发

20 个版本

0.7.1 2024年5月9日
0.7.0 2024年2月2日
0.7.0-beta.32024年1月24日
0.7.0-beta.12023年12月19日
0.1.0-beta.02021年6月1日

#188命令行工具

MIT 许可证

49KB
1.5K SLoC

test-badge crates-badge

RSS Forwarder

检查 RSS/Atom 资源的新条目并将它们转发到不同的目标(称为“接收器”),例如 webhook 或应用程序/脚本。

支持的接收器

接收器 类型值 描述
Discord discord Discord webhook
Slack slack Slack webhook
自定义 custom JSON 流到 stdin

支持的平台

平台 架构 图像*
Linux x86_64, aarch64
macOS x86_64, aarch64
Windows -

* 表示是否有容器(Docker)镜像可用

安装

官方二进制文件

您可以从 发行页面 下载最新二进制文件

Cargo

cargo install rss-forwarder@<version>
# or from source
cargo install --git https://github.com/morphy2k/rss-forwarder.git

容器镜像

请参阅 GitHub 容器包

使用方法

USAGE: rss-forwarder [OPTIONS] <CONFIG_FILE>

OPTIONS:
  -f, --format <FORMAT>  Log format: full, pretty, compact, json (default: full)
  --color <WHEN>         Colorize output: auto, always, never (default: auto)
  --debug                Enables debug mode
  --verbose              Enables verbose mode
  -h, --help             Show this help message
  -v, --version          Show version information

示例

配置

资源配置以 TOML 文件的形式传递。

资源

字段 类型 必需 默认 描述
url 字符串 RSS 资源的 URL
interval 字符串 60s 指定检查的时间间隔。例如 10m3h1d
retry_limit 无符号整数 10 指定发生某些错误后的重试次数。
sink 对象 接收器选项

Discord 接收器

将资源项发送到 Discord webhook

字段 类型 必需 默认 描述
type 字符串 接收器类型
url 字符串 Discord webhook URL

Slack 接收器

将资源项发送到 Slack webhook

字段 类型 必需 默认 描述
type 字符串 接收器类型
url 字符串 Slack webhook URL

自定义接收器

NDJSON 格式将资源项流到 stdin。

字段 类型 必需 默认 描述
type 字符串 接收器类型
command 字符串 程序路径
参数 [字符串] 传递给程序的参数。

JSON 示例

{
    "title": "Item Example",
    "description": "This is an example",
    "content": "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua.",
    "link": "https://example.com/news/item-example",
    "date": "2021-09-08T23:12:05+02:00",
    "authors": [
        {
            "name": "Jane Doe",
            "email": "[email protected]",
            "uri": "https://example.com/author/jane-doe"
        }
    ]
}

配置示例

# Feed 1
[feeds.github-blog]
url = "https://github.blog/all.atom"
interval = "10m"
retry_limit = 5
sink.type = "discord"
sink.url = "https://discord.com/api/webhooks/84175.../OZdejNBCL1..."

# Feed 2
[feeds.rust-blog]
url = "https://blog.rust-lang.net.cn/feed.xml"
interval = "1m"

[feeds.rust-blog.sink]
type = "custom"
command = "bash"
arguments = ["-c", "cat - >> ./rust-blog.log"]

依赖关系

~19–33MB
~592K SLoC