Skip to main content
Join the official 2019 Python Developers SurveyStart the survey!

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

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 have a `, 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

Project details


Download files

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

Files for simple-podcast-dl, version 1.3
Filename, size File type Python version Upload date Hashes
Filename, size simple_podcast_dl-1.3-py3-none-any.whl (11.0 kB) File type Wheel Python version py3 Upload date Hashes View hashes
Filename, size simple-podcast-dl-1.3.tar.gz (10.5 kB) File type Source Python version None Upload date Hashes View hashes

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page