Git Product home page Git Product logo

rss-forwarder's Introduction

test-badge crates-badge

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

See GitHub container package

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

Examples

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"]

rss-forwarder's People

Contributors

dependabot[bot] avatar morphy2k avatar profitrollgame avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.