Skip to content

A pure posix shell scipt podcatcher / rss-reader(-simulation) / feedgrabber / auto-downloader suite.

Notifications You must be signed in to change notification settings

isnok/podcatch-sh

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

31 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

podcatch-sh

A pure posix shell script podcatcher/auto-downloader suite designed for minimal dependencies.

podcatch-sh consists of a set of shell scripts to automate the following processes:

  • newcast.sh: a helper script to find the right parsers for your new cast (soon: config validation).
  • podcatch.sh: parses it's configured cast lists and grabs or initializes casts as configured.
  • grabfeed.sh: parses a downloaded feed, calculates new downloads and downloads them (if not disabled).
  • croncatch.sh: a wrapper script for podcatch.sh, that checks for running instances etc before launching.
  • smartdl.sh: a 'smart' downloader that enables youtube/torrent support (via autodetection).
  • done.sh: callback-script for parallel/background fetching via smartdl.sh (not really intercative).
  • archive.sh: simple but effective hard-link magic incoming directory in which files can be deleted.

All scripts do minimally require only the set of busybox built-ins, that come with OpenWRT by default. ctorrent and youtube-dl have been introduced as optional download helpers, expanding it's usefulness.

Development is ongoing, and at the moment there are some known bugs (log messages getting duplicated) and probably even more unknown bugs, so check again or give feedback if you are interested in using these scripts!

Help text of the podcast list downloader script:

podcatch.sh - a shell scripted podcatcher for openwrt devices

usage: podcatch.sh [args/castlists]

The arguments are processed in the order they are given.
All oter arguments not listed below are treated as castlists.
'all' a is a special castlist, instructing to fetch all castlists.
'all' is the default behaviour if no args are given.

To change behaviour of podcatch.sh use:

    -ne|--no-episodes   don't download episodes
    -nf|--no-feeds      don't download feeds (reuse last fetched version)
    -np|--no-parse      reuse last parsed feed (implies -nf)
    -da|--download-all  reset all -n options (default)
    -if|--init-fetched  if a new feed is found, initialize it's episodes as fetched
    -iw|--init-wanted   if a new feed is found, download all of it's episodes (default)
    -h|--help           print this help

Note that if you use one of these, you should also specify a castlist.

Argument combos that drove development:

    podcatch.sh -ne all  # fetch-and-parse-only on all feeds (almost-dry-run, inits new casts)
    podcatch.sh -np all  # continue all without re-fetching and re-parsing
    podcatch.sh -nf -ne jtv  # re-parse the previously fetched feeds from $LISTDIR/jtv.lst
    podcatch.sh -if cczwei -ne chaos -h -da casts # you get the idea...

Help text of the script use to download each podcast:

grabfeed.sh - a shell scripted feed grabber

usage: grabfeed.sh [feed] [destination] [parser(s)]

    grab one (probably not initialized) feed
    to a destination directory using parser(s)

    no args yield this usage text.

... and finally the help of the script used to download single episodes:

smartdl.sh - a link type aware downloader script

usage: smartdl.sh [uri]

    will detect the type of uri and take action accordingly.
    by default this will be to download to the current directory,
    but if the tools are at hand and enabled, they will be used.

    default-downloader: wget
    torrent-downloader: ctorrent
    youtube-downloader: youtube-dl

    done script: src/done.sh

    invoking smartdl.sh without any args will bring up this info text.

Tested and developed to run on: OpenWrt 12.09 (BusyBox v1.19.4)

About

A pure posix shell scipt podcatcher / rss-reader(-simulation) / feedgrabber / auto-downloader suite.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages