{"id":17067305,"url":"https://github.com/schu/feedcruncher","last_synced_at":"2025-04-12T18:30:46.928Z","repository":{"id":37013479,"uuid":"269712412","full_name":"schu/feedcruncher","owner":"schu","description":"RSS to Discord/Slack webhook","archived":false,"fork":false,"pushed_at":"2025-04-02T19:34:16.000Z","size":302,"stargazers_count":6,"open_issues_count":2,"forks_count":2,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-02T20:33:24.581Z","etag":null,"topics":["discord","rss","rss-aggregator"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/schu.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-06-05T17:01:38.000Z","updated_at":"2025-04-02T19:33:16.000Z","dependencies_parsed_at":"2023-01-17T13:09:52.750Z","dependency_job_id":"47550bea-f492-4c8b-b9dc-48a2c3d71477","html_url":"https://github.com/schu/feedcruncher","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/schu%2Ffeedcruncher","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/schu%2Ffeedcruncher/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/schu%2Ffeedcruncher/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/schu%2Ffeedcruncher/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/schu","download_url":"https://codeload.github.com/schu/feedcruncher/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248613182,"owners_count":21133457,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["discord","rss","rss-aggregator"],"created_at":"2024-10-14T11:10:16.226Z","updated_at":"2025-04-12T18:30:46.896Z","avatar_url":"https://github.com/schu.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# feedcruncher\n\n![](https://github.com/schu/feedcruncher/workflows/feedcruncher-ci/badge.svg)\n\nfeedcruncher is a small daemon to watch RSS feeds and send notifications\nfor every new item. Supported notification targets are [Discord](https://support.discord.com/hc/en-us/articles/228383668-Intro-to-Webhooks)\nand [Slack](https://api.slack.com/messaging/webhooks) webhooks.\n\n## Requirements\n\n* libsqlite3-dev\n\n## Configuration\n\nExample `feedcruncher.toml`:\n\n```toml\n# `pool` enables / disables polling, the default is enabled polling.\n# With disabled polling feedcruncher can be run as a \"one-shot\" job.\n# (optional)\npoll = true\n\n# `poll_sleep_dur` defines the time to sleep in seconds between polling,\n# the default is 600 seconds.\n# (optional)\npoll_sleep_dur = 600\n\n# `db_path` can be used to set a custom database path, the default is\n# `sqlite://./feedcruncher.sqlite3`\n# (optional)\ndb_path = \"sqlite://./feedcruncher.sqlite3\"\n\n# `webhook_urls` defines a list of webhook urls and can be set per\n# feed as well as globally. `-` can be set to make feedcruncher print\n# feed items to stdout.\n# (required)\nwebhook_urls = [\n  \"-\",\n  \"https://discordapp.com/api/webhooks/...\"\n]\n\n# `feeds` is a list of feeds to poll (\"array of tables\" in TOML).\n# \n# `kind`         (required) defines the kind of feed – \"rss\" or \"atom\"\n# `url`          (required) is the feed URL to poll\n# `webhook_urls` (optional) defines a list of webhooks to be used instead\n#                           of the global default\n[[feeds]]\nkind = \"rss\"\nurl = \"https://www.schu.io/index.xml\"\n\n[[feeds]]\nkind = \"atom\"\nurl = \"https://blog.rust-lang.org/feed.xml\"\nwebhook_urls = [\n  \"https://hooks.slack.com/...\"\n]\n\n# More feeds ...\n```\n\n## Usage\n\n```\nfeedcruncher --config feedcruncher.toml\n```\n\n## Development\n\n### sqlx\n\nThe [sqlx-cli](https://github.com/launchbadge/sqlx/blob/main/sqlx-cli/README.md)\nis required to add/run migrations and to \"enable building in offline mode\" with\nprepare.\n\n```\ncargo sqlx database create\n\ncargo sqlx migrate add\ncargo sqlx migrate run\n\ncargo sqlx prepare\n```\n\n### Testing\n\nRun the test feedserver from one terminal:\n\n```\nmake run-server\n```\n\nTo add a new item, type a title and press `Return`.\n\n```\n    Finished dev [unoptimized + debuginfo] target(s) in 0.13s\n     Running `target/debug/feedserver`\nPress Return to add new feed item ...\n```\n\nRun feedcruncher from a second terminal:\n\n```\nmake run\n```\n\n```\n    Finished dev [unoptimized + debuginfo] target(s) in 0.14s\n     Running `target/debug/feedcruncher --config config-test.toml`\nWatching [\n    FeedConfig {\n        url: \"http://localhost:4321\",\n    },\n]\nWaiting for new feed items ...\n```\n\n## Roadmap\n\n* [ ] Add Matrix as notification target\n* [ ] Add a minimalistic web view\n* [ ] Add a syndicated feed endpoint\n\n## License\n\n[AGPL v3](https://www.gnu.org/licenses/agpl-3.0.en.html)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fschu%2Ffeedcruncher","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fschu%2Ffeedcruncher","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fschu%2Ffeedcruncher/lists"}