{"id":21091173,"url":"https://github.com/jadedctrl/feedsnake","last_synced_at":"2026-01-02T05:23:42.246Z","repository":{"id":122977702,"uuid":"565338917","full_name":"JadedCtrl/feedsnake","owner":"JadedCtrl","description":"RSS/Atom feed agglomerator á la RSS2Mail or Pogger. (🪞 Mirror)","archived":false,"fork":false,"pushed_at":"2024-01-30T00:02:37.000Z","size":49,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-01-21T01:13:30.068Z","etag":null,"topics":["atom","atom-aggregator","feed-aggregator","feed-reader","maildir","mbox","rss","rss-aggregator"],"latest_commit_sha":null,"homepage":"https://hak.xwx.moe/jadedctrl/feedsnake","language":"Scheme","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/JadedCtrl.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2022-11-13T04:16:12.000Z","updated_at":"2024-01-30T00:18:07.000Z","dependencies_parsed_at":"2024-01-30T01:26:11.319Z","dependency_job_id":"3dbf6eeb-97ed-4d2b-ac4b-01ed0ac653ce","html_url":"https://github.com/JadedCtrl/feedsnake","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/JadedCtrl%2Ffeedsnake","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JadedCtrl%2Ffeedsnake/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JadedCtrl%2Ffeedsnake/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/JadedCtrl%2Ffeedsnake/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/JadedCtrl","download_url":"https://codeload.github.com/JadedCtrl/feedsnake/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243532786,"owners_count":20306209,"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":["atom","atom-aggregator","feed-aggregator","feed-reader","maildir","mbox","rss","rss-aggregator"],"created_at":"2024-11-19T21:43:57.158Z","updated_at":"2026-01-02T05:23:42.192Z","avatar_url":"https://github.com/JadedCtrl.png","language":"Scheme","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Feedsnake\nSimple Atom-to-mail (Mbox, Maildir) program: You pass it an Atom feed, it'll turn it into an mail client-friendly set of e-mails. It's pretty much [feed2maildir](https://github.com/sulami/feed2maildir) combined with [feed2mail](https://github.com/vmapps/feed2mail), but less cool. It's also pretty much my attempt replacing an old project, [Pogger](https://github.com/jadedctrl/pogger), but for LiGNUx.\n\nFeedsnake is scriptable, and can be easily used for one-off conversions or for managing your feed subscriptions generally. It pairs well with something like [Mutt](https://www.mutt.org) to read your feeds.\n\nNow, I would recommend the *beautiful* program [sfeed](https://codemadness.org/sfeed-simple-feed-parser.html) over Feedsnake; though Feedsnake still does work.\n\n\n## Usage\n```\nusage: feedsnake [-hnuU] [-s|S] [-o|d] FILE...\n       feedsnake [-hn] [-c] [-s] [-o|d] URL...\n       feedsnake [-h] [-s] [-o|d]\n\nFeedsnake is a program for converting Atom feeds into mbox/maildir files.\nAny Atom feeds passed as input will be output in mbox or maildir format.\n\nIf a FILE value is '-' or not provided, feedsnake will read a feed over standard\ninput. --since-last and similar arguments have no impact on these feeds.\n\nIf you want to subscribe to feeds with Feedsnake, you'll probably do something\nlike so:\n       feedsnake --cache ~/feeds/hacker_news.xml \\\n                 --output ~/feeds/hacker_news.mbox \\\n                 https://news.ycombinator.com/rss\n\nThen, to update your subscription, just run:\n       feedsnake --update --since-last \\\n                 --output ~/feeds/hacker_news.mbox \\\n                 ~/feeds/hacker_news.xml\n\nFor updating all feeds:\n       feedsnake --update --since-last ~/feeds/*.xml \u003e ~/feeds/all.mbox\n\nThe FILE given as input can be any Atom/RSS file. If you'd like to update\nthe FILE (with --update or --update-since), then it must have the\n'user.xdg.origin.url' extended attribute set as the feed URL. You can create\nsuch a file as in the above example, by passing a URL with a --cache file set.\n\n -h, --help               Print a usage message\n -d, --outdir=DIR         Output directory, used for maildir output\n -o, --output=FILE        Output file, used for mbox output. Default is stdout ('-').\n -c, --cache=FILE         The cache file used if a URL is passed as argument.\n -u, --update             Update a feed FILE by downloading its newest version to the same path.\n -U, --update-since       Alias for --update and --since-last. This is probably the option you want.\n -s, --since=DATETIME     Output entries after the given date, in YYYY-MM-DD hh:mm:ss format.\n -S, --since-last         Output entries dating from the last saved parsing of the file.\n --since-update           Output entries dating from the last update of the file.\n -n, --no-save-date       Don't save parse/update time of this operation, to avoid influencing --since-*.\n```\n\n\n## Installation\nFeedsnake is made using [Chicken Scheme](https://call-cc.org), a cute little Scheme that's very friendly. Once you've got Chicken Scheme installed, you can go ahead and build Feedsnake like so:\n```\n$ sudo make dependencies\n$ make client\n$ sudo cp ./feedsnake /usr/local/bin/\n```\n\n… actually, that's somewhat of a lie. You need to manually install the [xattr](https://hak.xwx.moe/jadedctrl/xattr) library first, since it's not in the egg depot.\n\n\n## Examples\n### Feeds, generally\nTo subscribe to a feed, you're really just creating a cache file for the feed. It's simple. Here:\n\n`$ feedsnake --no-save-date --cache ~/Feeds/Hacker\\ News.xml https://news.ycombinator.com/rss`\n\nThen, just update the file and output new posts from your feed(s), every once in a while:\n```\n$ feedsnake --since-last --update --output=~/Feeds/Mail.mbox ~/Feeds/*.xml\n$ mutt -f ~/Feeds/Mail.mbox\n\n# Or, alternatively, for maildir:\n$ feedsnake --since-last --update --outdir=~/Feeds/Mail/ ~/Feeds/*.xml\n$ mutt -f ~/Feeds/Mail/\n```\n\n\n### YouTube\nI like to \"subscribe\" to channels by having an following its Atom feed on Invidious— it's also nice to just download those videos in one go.\n\nLet's subscribe to a channel:\n```\n# With Feedsnake:\n$ feedsnake -nc ~/Feeds/YouTube/Linsday\\ Ellis.xml \\\n    \"https://yewtu.be/feed/channel/UCG1h-Wqjtwz7uUANw6gazRw\"\n# Manually:\n$ touch ~/Feeds/YouTube/Stop\\ Skeletons\\ From\\ Fighting.xml\n$ attr -s xdg.origin.url -V \"https://yewtu.be/feed/channel/UC5Xeb9-FhZXgvw340n7PsCQ\" \\\n       ~/Feeds/YouTube/Stop\\ Skeletons\\ From\\ Fighting.xml\n```\n\nAnd now, lets downloading all videos uploaded since the last update:\n\n`$ ytdl $(feedsnake -U ~/Feeds/YouTube/*.xml | grep '^\\*\\*\\*' | sed 's%^... %%')`\n\n(All URLs associated with a post are listed in the message body in a line starting with three asterisks; hence the search \u0026 removal of said asterisks.)\n\n## Meta\n* **Author:** Jaidyn Ann (jadedctrl@posteo.at)\n* **License:** GPLv3\n* https://hak.xwx.moe/jadedctrl/feedsnake\n* https://xwx.moe/en/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjadedctrl%2Ffeedsnake","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjadedctrl%2Ffeedsnake","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjadedctrl%2Ffeedsnake/lists"}