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
- Talk Python To Me (https://talkpython.fm/)
- Python Bytes (https://pythonbytes.fm/)
- The Changelog (https://changelog.com/podcast)
- Podcast.__init__ (https://www.podcastinit.com/)
- Indie Hackers (https://www.indiehackers.com/podcast)
- Real Python (https://realpython.com/podcasts/rpp/)
- Kubernetes Podcast (https://kubernetespodcast.com/)
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
Metadata
Release files for simple-podcast-dl 1.7
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | |
|---|---|---|---|---|
| simple_podcast_dl-1.7.tar.gz | 10.7 kB | Without provenance | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| simple_podcast_dl-1.7-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 21.8 kB
Release files / simple_podcast_dl-1.7.tar.gz
| Download URL | simple_podcast_dl-1.7.tar.gz |
|---|---|
| Size | 10.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
9796b83054553b809dcf858d4ff3d82f4913d2ccdacc2b014f21f8b68c948c83
|
|
BLAKE2b-256 checksum How to use checksums |
938fb3fd46e30ae991bb4c4f51461cb6276134120edfdaf5c6e2723285c590e7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/1.3.0 CPython/3.10.9 Linux/5.15.79.1-microsoft-standard-WSL2
|
Release files / simple_podcast_dl-1.7-py3-none-any.whl
| Download URL | simple_podcast_dl-1.7-py3-none-any.whl |
|---|---|
| Size | 11.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
0d5a388de8c223db74480b4e7481c7db692e5e7de241a725f85a062f7481bdd3
|
|
BLAKE2b-256 checksum How to use checksums |
4b281f91e9703cddb0405d6f9fb2dd5d32015e3d57bae097f25add85576800db
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/1.3.0 CPython/3.10.9 Linux/5.15.79.1-microsoft-standard-WSL2
|
Security for simple-podcast-dl 1.7
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.