Skip to content

Latest commit

 

History

History
140 lines (102 loc) · 3.99 KB

README.md

File metadata and controls

140 lines (102 loc) · 3.99 KB

Simple podcast downloader (podcatcher)

The simplest podcast downloader with no configuration, no tagging, no nothing.
It simply downloads missing episodes from supported podcasts to a directory.
That's it.

You don't even have to know the URL of the RSS, you can give it a website URL,
a domain name, or simply the podcast name, it will find out which podcast you want to download.

It doesn't have a complicated UI or fancy features, it's just a command line application.
The download folder and the number of threads can be customized.

I use it in a Jenkins job to synchronize all the episodes to Nextcloud,
so it will be synced to my phone and I can listen the episodes without internet connection.

Supported podcasts

Installation

You need at least Python 3.6, then you can simply run:

$ pip3 install simple-podcast-dl

Getting started

It is as simple as running the command:

$ podcast-dl talkpython.fm

And the podcast will be downloaded to the "talkpython.fm" directory.
You can change the download directory by specifying the --directory (or -d) option:

$ podcast-dl talkpython.fm -d talkpython-podcast

You can list the supported podcast sites with the --list-podcasts (or -l) option:

$ podcast-dl --list-podcasts

You can specify which episodes to download with the --episodes (or -e) option:

$ podcast-dl --episodes 1,2,3 talkpython

You can use the "last" or "last:n" keyword to select the last or last n number of episodes to download:

$ podcast-dl --episodes last:3 talkpython

You can list the podcast episodes sorted by episode number with --show-episodes or (-s):

$ podcast-dl --show-episodes talkpython

Or you can even combine it with selecting episodes:

$ podcast-dl --show-episodes -e 1-5 talkpython

It can show a progress bar with the --progress or (-p) option:

$ podcast-dl -p talkpython
Found a total of 182 missing episodes.
  [##########--------------------------]   28%  00:03:16

Usage

Usage: podcast-dl [OPTIONS] PODCAST

  Download podcast episodes to the given directory

  URL or domain or short name for the PODCAST argument can be specified,
  e.g. pythonbytes.fm or talkpython or https://talkpython.fm

Options:
  -d, --download-dir PATH         Where to save downloaded episodes. Can be
                                  specified by the DOWNLOAD_DIR environment
                                  variable.  [default: name of PODCAST]
  -e, --episodes EPISODELIST      Episodes to download.
  -s, --show-episodes             Show the list of episodes for PODCAST.
  -l, --list-podcasts             List of supported podcasts, ordered by name.
  -p, --progress                  Show progress bar instead of detailed
                                  messages during download.
  -t, --max-threads INTEGER RANGE
                                  The maximum number of simultaneous
                                  downloads. Can be specified with the
                                  MAX_THREADS environment variable.  [default:
                                  10]
  -v, --verbose                   Show detailed informations during download.
  -V, --version                   Show the version and exit.
  -h, --help                      Show this message and exit.

Development

The project has a pyproject.toml, so you can simply install everything needed for development with a single command:

$ pip install pipenv
$ poetry install

You should format your code with black (it's included in the development requirements):

$ poetry run black .

You can run the tests with:

$ poetry run pytest