20 releases
0.7.1 | May 9, 2024 |
---|---|
0.7.0 | Feb 2, 2024 |
0.7.0-beta.3 | Jan 24, 2024 |
0.7.0-beta.1 | Dec 19, 2023 |
0.1.0-beta.0 | Jun 1, 2021 |
#692 in Command line utilities
49KB
1.5K
SLoC
RSS Forwarder
Checks RSS/Atom feeds for new entries and forwards them to different targets (called "sinks"), such as webhooks or applications/scripts.
Supported sinks
Sink | Type value | Description |
---|---|---|
Discord | discord |
Discord webhook |
Slack | slack |
Slack webhook |
Custom | custom |
JSON stream to stdin |
Supported platforms
Platform | Architecture | Image* |
---|---|---|
Linux | x86_64, aarch64 | ✅ |
macOS | x86_64, aarch64 | ❌ |
Windows | - | ❌ |
* Indicates whether a container (Docker) image is available
Installation
Official binary
You can download the latest binary from the releases page
Cargo
cargo install rss-forwarder@<version>
# or from source
cargo install --git https://github.com/morphy2k/rss-forwarder.git
Container image
Usage
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
Configuration
The feed configuration is passed as a TOML file.
Feed
Field | Type | Required | Default | Description |
---|---|---|---|---|
url |
string | Yes | URL to the RSS feed | |
interval |
string | No | 60s | Specifies the time interval between checks. E.g. 10m , 3h , 1d . |
retry_limit |
uint | No | 10 | Specifies the retries after certain errors. |
sink |
object | Yes | Sink options |
Discord Sink
Sends feed items to a Discord webhook
Field | Type | Required | Default | Description |
---|---|---|---|---|
type |
string | Yes | Sink type | |
url |
string | Yes | Discord webhook URL |
Slack Sink
Sends feed items to a Slack webhook
Field | Type | Required | Default | Description |
---|---|---|---|---|
type |
string | Yes | Sink type | |
url |
string | Yes | Slack webhook URL |
Custom Sink
Streams feed items in NDJSON to stdin.
Field | Type | Required | Default | Description |
---|---|---|---|---|
type |
string | Yes | Sink type | |
command |
string | Yes | Program path | |
arguments |
[string] | No | Arguments to pass to the program. |
JSON Example
{
"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"
}
]
}
Config Example
# 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.org/feed.xml"
interval = "1m"
[feeds.rust-blog.sink]
type = "custom"
command = "bash"
arguments = ["-c", "cat - >> ./rust-blog.log"]
Dependencies
~20–35MB
~596K SLoC