Skip to main content

Simple podcast downloader (podcatcher)

Project description

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


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

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

$ podcast-dl -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 (-s) option:

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


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. or talkpython or

  -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
                                  Number of threads to start for the download.
                                  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.


The project have a Pipfile, so you can simply install everything needed for development with a single command:

$ pip install pipenv
$ pipenv install --dev

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

$ pipenv run black .

You can run the tests with:

$ pipenv run pytest

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distribution

simple_podcast_dl-1.1-py3-none-any.whl (10.8 kB view hashes)

Uploaded py3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page