{"id":15512555,"url":"https://github.com/doga/podcatcher","last_synced_at":"2025-04-07T07:58:58.864Z","repository":{"id":56888364,"uuid":"540169","full_name":"doga/podcatcher","owner":"doga","description":"A podcast client for the command line written in Ruby.","archived":false,"fork":false,"pushed_at":"2019-11-05T09:45:19.000Z","size":113,"stargazers_count":39,"open_issues_count":7,"forks_count":8,"subscribers_count":5,"default_branch":"master","last_synced_at":"2025-03-20T05:46:01.429Z","etag":null,"topics":["cli","podcast","podcatcher","ruby"],"latest_commit_sha":null,"homepage":"","language":"Ruby","has_issues":true,"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/doga.png","metadata":{"files":{"readme":"README.txt","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}},"created_at":"2010-02-28T18:50:43.000Z","updated_at":"2025-03-13T20:51:53.000Z","dependencies_parsed_at":"2022-08-20T23:40:34.258Z","dependency_job_id":null,"html_url":"https://github.com/doga/podcatcher","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/doga%2Fpodcatcher","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/doga%2Fpodcatcher/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/doga%2Fpodcatcher/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/doga%2Fpodcatcher/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/doga","download_url":"https://codeload.github.com/doga/podcatcher/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247615461,"owners_count":20967183,"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":["cli","podcast","podcatcher","ruby"],"created_at":"2024-10-02T09:53:42.803Z","updated_at":"2025-04-07T07:58:58.842Z","avatar_url":"https://github.com/doga.png","language":"Ruby","readme":"\nARMANGIL'S PODCATCHER\n=====================\n\nArmangil's podcatcher is a podcast client for the command line.\nIt can download any type of content enclosed in RSS or Atom files, such as \nMP3 or other audio content, video and images. A search function for \nsubscribing to feeds is also included. It provides several download \nstrategies, supports BitTorrent, offers cache management, and generates \nplaylists for media player applications. \n\nAs argument, it accepts feeds (RSS or Atom) or subscription lists \n(OPML or iTunes PCAST), in the form of filenames or URLs (HTTP or FTP).\nAlternatively, it accepts one feed or subscription list from the standard \ninput.\n\nBitTorrent is supported both internally (through the RubyTorrent library) \nand externally (.torrent files are downloaded, but the user handles\nthem using a BitTorrent application). The latter is currently the most\nreliable method, as RubyTorrent is still in alpha phase.\n\nConcurrency is not handled: simultaneous executions of this program should\ntarget different directories.\n\nAs of version 4, the default target directory is ~/.podcatcher instead of the current directory.\n\nVisit https://github.com/doga/podcatcher for more information.\n\n\nInstallation\n------------\n$ # Optional security step (do this once)\n$ gem cert --add \u003c(curl -Ls https://raw.githubusercontent.com/doga/podcatcher/master/1.%20Resolve%20ERB%20markup/certs/doga.pem)\n$\n$ # Install\n$ # (Optional security paramater: --trust-policy HighSecurity)\n$ gem install podcatcher --trust-policy HighSecurity\n$\n$ # Check the used version\n$ podcatcher --version\n4.0.0\n$\n$ # Optionally enable podcatcher MAN pages on Unix-like systems\n$ gem install gem-man # do this once\n$ gem man podcatcher # shows podcatcher MAN page\n\n\nUsage\n-----\npodcatcher [options] [arguments] \n\nOptions:\n    -d, --dir DIR                    Directory for storing application state.\n                                     Default value is ~/.podcatcher .\n    -D, --cachedir DIR               Directory for storing downloaded content.\n                                     Default value is the 'cache' subdirectory\n                                     of the state directory (specified by \n                                     the --dir option).\n                                     This option is ignored if this directory\n                                     is inside the state directory, or if the\n                                     state directory is inside this directory.\n    -s, --size SIZE                  Size, in megabytes, of the cache directory\n                                     (specified by the --cachedir option).\n                                     0 means unbounded. Default value is 512.\n                                     This option also sets the upper limit for\n                                     the amount of content that can be downloaded\n                                     in one session.\n                                     Content downloaded during previous sessions\n                                     may be deleted by podcatcher in order to\n                                     make place for new content.\n    -e, --[no-]empty                 Empty the cache directory before\n                                     downloading content.\n    -p, --[no-]perfeed               Create one subdirectory per feed\n                                     in the cache directory.\n    -S, --strategy S                 Strategy to use when downloading content:\n                                     * back_catalog: download any content that\n                                      has not been downloaded before; prefer\n                                      recent content to older content (may \n                                      download more than one content file per\n                                      feed),\n                                     * one: download one content file (not \n                                      already downloaded) for each feed, with a \n                                      preference for recent content,\n                                     * all: download all content, with a \n                                      preference for recent content; even \n                                      already downloaded content is downloaded \n                                      once again (may download more than one\n                                      content file per feed),\n                                     * chron: download in chronological order\n                                      any content that has not been downloaded \n                                      before; this is useful for audiobook\n                                      podcasts etc (may download more than one\n                                      content file per feed),\n                                     * chron_one: download the oldest content of\n                                      each feed that has not already been \n                                      downloaded, \n                                     * chron_all: download all content in \n                                      chronological order, even if the content\n                                      has already been downloaded (may download\n                                      more than one content file per feed), \n                                     * new: download the most recent content \n                                      of each feed, if it has not already been \n                                      downloaded (DEPRECATED: use 'one' instead\n                                      of 'new'),\n                                     * cache: generate a playlist for content \n                                      already in cache.\n                                     Default value is one.\n    -C, --content REGEXP             A regular expression that matches the\n                                     MIME types of content to be downloaded.\n                                     Examples: '^video/', '^audio/mpeg$'.\n                                     Default value is '', which matches any\n                                     type of content.\n    -l, --language LANG              A list of language tags separated by\n                                     commas. Examples: 'en-us,de', 'fr'.\n                                     A feed whose language does not match\n                                     this list is ignored. By default, all\n                                     feeds are accepted. See\n                                     http://cyber.law.harvard.edu/rss/languages.html\n                                     and\n                                     http://cyber.law.harvard.edu/rss/rss.html#optionalChannelElements\n                                     for allowed tags.\n    -H, --horizon DATE               Do not download content older than\n                                     the given date. The date has the format\n                                     yyyy.mm.dd (example: 2007.03.22) or\n                                     yyyy.mm (equivalent to yyyy.mm.01) or\n                                     yyyy (equivalent to yyyy.01.01).\n                                     By default, no horizon is specified.\n    -r, --retries N                  Try downloading files (content, feeds\n                                     or subscription lists) at most N times\n                                     before giving up. Default value is 1.\n    -t, --type TYPE                  Type of the playlist written to\n                                     standard output. Accepted values are\n                                     m3u, smil, pls, asx, tox, xspf.\n                                     Default value is m3u.\n    -m, --memsize N                  Remember last N downloaded content,\n                                     and do not download them again. \n                                     0 means unbounded. Default value is 1000.\n    -o, --order ORDER                The order in which feeds are traversed\n                                     when downloading content:\n                                     * random: randomizes the feed order,\n                                      so that every feed has an equal chance\n                                      when content is downloaded, even if\n                                      the cache size is small and the number\n                                      of feeds is big,\n                                     * alphabetical: orders feeds\n                                      alphabetically by using their titles,\n                                     * sequential: preserves the argument \n                                      order (and the feed order in\n                                      subscription lists),\n                                     * reverse: reverses the feed order.\n                                     Default value is random.\n    -F, --function FUNCTION          Used function:\n                                     * download: downloads content from\n                                      specified feeds,\n                                     * search: generates an OPML subscription\n                                      list of feeds matching the specified\n                                      query; the only options relevant for \n                                      search are -v, -r and -f.\n                                     Default value is download.\n    -f, --feeds N                    Do not download more than N feeds\n                                     (when using the download function),\n                                     or return the first N relevant feeds\n                                     (when using the search function).\n                                     0 means unbounded. Default value is 1000.\n    -T, --torrentdir DIR             Copy torrent files to directory DIR.\n                                     The handling of torrents through an\n                                     external BitTorrent client is left to\n                                     the user. If this option is not used,\n                                     torrents are handled internally (if\n                                     RubyTorrent is installed), or else\n                                     ignored.\n    -U, --uploadrate N               Maximum upload rate (kilobytes per second)\n                                     for the internal BitTorrent client.\n                                     Unbounded by default.\n    -i, --itemsize N                 If downloaded content is less than N MB in\n                                     size (where N is an integer), fetch other\n                                     content of that same feed until this size\n                                     is reached. \n                                     Default value is 0.\n                                     The intent here is to ensure that podcatcher\n                                     downloads about as much content from podcasts\n                                     that frequently post small content (in\n                                     terms of minutes) as it does from podcasts\n                                     that post bigger content less frequently.\n                                     This option was more relevant in the early\n                                     days of podcasting when content size varied\n                                     greatly from one podcast to another. You\n                                     would rarely need to use this option today.\n    -c, --[no-]cache                 Generate a playlist for content\n                                     already in cache.\n                                     DEPRECATED, use '--strategy cache'.\n    -a, --[no-]asif                  Do not download content, only download\n                                     feeds and subscription lists.\n                                     Useful for testing.\n    -v, --[no-]verbose               Run verbosely.\n    -V, --version                    Display current version and exit.\n    -h, --help                       Display this message and exit.\n        --[no-]restrictednames       In the cache directory, make the names of\n                                     created subdirectories and files acceptable\n                                     for restrictive file systems such as VFAT\n                                     and FAT, which are used on Windows and MP3\n                                     player devices.\n                                     Enabled by default.\n    -A, --arguments FILENAME_OR_URL  Read arguments from specified file.\n                                     Rules:\n                                     * accepts one argument per line,\n                                     * ignores empty lines and lines starting\n                                       with #,\n                                     * this option may be used several times\n                                       in one command.\n    -O, --options FILENAME_OR_URL    Read options from specified file.\n                                     The options file uses the YAML format.\n\nUsage examples:\n\n    podcatcher http://feeds.feedburner.com/Ruby5\n\n    podcatcher -O options.yaml -A feeds.txt\n\n    podcatcher --dir ~/podcasts http://www.npr.org/podcasts.opml\n\n    podcatcher --dir ~/podcasts --strategy cache \u003e cache.m3u\n\n    cat feeds.opml | podcatcher --dir ~/podcasts \u003e latest.m3u\n\n    podcatcher -vd ~/podcasts -s 500 -m 10_000 -t tox feeds.opml \u003e latest.tox\n\n    podcatcher -vF search news http://www.bbc.co.uk/podcasts.opml \u003e bbc_news.opml\n\n    podcatcher -F search -f 12 news http://www.npr.org/podcasts.opml \u003e npr_news.opml\n\n\nSupport\n-------\nPlease use https://github.com/doga/podcatcher for bug reports\nand feature requests. \n\n\nLicense\n-------\nArmangil's podcatcher is released under the MIT Licence. \n\n","funding_links":[],"categories":["Ruby"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdoga%2Fpodcatcher","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdoga%2Fpodcatcher","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdoga%2Fpodcatcher/lists"}