# 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](https://nextcloud.com/),
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
```plain
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
```
Raw data
{
"_id": null,
"home_page": "https://github.com/kissgyorgy/simple-podcast-dl",
"name": "simple-podcast-dl",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.6",
"maintainer_email": "",
"keywords": "podcasts",
"author": "Kiss Gy\u00f6rgy",
"author_email": "kissgyorgy@me.com",
"download_url": "https://files.pythonhosted.org/packages/93/8f/b3fd46e30ae991bb4c4f51461cb6276134120edfdaf5c6e2723285c590e7/simple_podcast_dl-1.7.tar.gz",
"platform": null,
"description": "# Simple podcast downloader (podcatcher)\n\nThe simplest podcast downloader with no configuration, no tagging, no nothing. \nIt simply downloads missing episodes from supported podcasts to a directory. \n_That's it._\n\nYou don't even have to know the URL of the RSS, you can give it a website URL, \na domain name, or simply the podcast name, it will find out which podcast you want to download.\n\nIt doesn't have a complicated UI or fancy features, it's just a command line application. \nThe download folder and the number of threads can be customized.\n\nI use it in a Jenkins job to synchronize all the episodes to [Nextcloud](https://nextcloud.com/), \nso it will be synced to my phone and I can listen the episodes without internet connection.\n\n## Supported podcasts\n\n- Talk Python To Me (https://talkpython.fm/)\n- Python Bytes (https://pythonbytes.fm/)\n- The Changelog (https://changelog.com/podcast)\n- Podcast.\\_\\_init\\_\\_ (https://www.podcastinit.com/)\n- Indie Hackers (https://www.indiehackers.com/podcast)\n- Real Python (https://realpython.com/podcasts/rpp/)\n- Kubernetes Podcast (https://kubernetespodcast.com/)\n\n## Installation\n\nYou need at least Python 3.6, then you can simply run:\n\n```\n$ pip3 install simple-podcast-dl\n```\n\n## Getting started\n\nIt is as simple as running the command:\n\n```\n$ podcast-dl talkpython.fm\n```\n\nAnd the podcast will be downloaded to the \"talkpython.fm\" directory. \nYou can change the download directory by specifying the `--directory`\n(or `-d`) option:\n\n```\n$ podcast-dl talkpython.fm -d talkpython-podcast\n```\n\nYou can list the supported podcast sites with the `--list-podcasts`\n(or `-l`) option:\n\n```\n$ podcast-dl --list-podcasts\n```\n\nYou can specify which episodes to download with the `--episodes`\n(or `-e`) option:\n\n```\n$ podcast-dl --episodes 1,2,3 talkpython\n```\n\nYou can use the \"last\" or \"last:n\" keyword to select the last or last n number\nof episodes to download:\n\n```\n$ podcast-dl --episodes last:3 talkpython\n```\n\nYou can list the podcast episodes sorted by episode number with\n`--show-episodes` or (`-s`):\n\n```\n$ podcast-dl --show-episodes talkpython\n```\n\nOr you can even combine it with selecting episodes:\n\n```\n$ podcast-dl --show-episodes -e 1-5 talkpython\n```\n\nIt can show a progress bar with the `--progress` or (`-p`) option:\n\n```\n$ podcast-dl -p talkpython\nFound a total of 182 missing episodes.\n [##########--------------------------] 28% 00:03:16\n```\n\n## Usage\n\n```plain\nUsage: podcast-dl [OPTIONS] PODCAST\n\n Download podcast episodes to the given directory\n\n URL or domain or short name for the PODCAST argument can be specified,\n e.g. pythonbytes.fm or talkpython or https://talkpython.fm\n\nOptions:\n -d, --download-dir PATH Where to save downloaded episodes. Can be\n specified by the DOWNLOAD_DIR environment\n variable. [default: name of PODCAST]\n -e, --episodes EPISODELIST Episodes to download.\n -s, --show-episodes Show the list of episodes for PODCAST.\n -l, --list-podcasts List of supported podcasts, ordered by name.\n -p, --progress Show progress bar instead of detailed\n messages during download.\n -t, --max-threads INTEGER RANGE\n The maximum number of simultaneous\n downloads. Can be specified with the\n MAX_THREADS environment variable. [default:\n 10]\n -v, --verbose Show detailed informations during download.\n -V, --version Show the version and exit.\n -h, --help Show this message and exit.\n```\n\n## Development\n\nThe project has a `pyproject.toml`, so you can simply install everything needed for development with a single command:\n\n```\n$ pip install pipenv\n$ poetry install\n```\n\nYou should format your code with black (it's included in the development requirements):\n\n```\n$ poetry run black .\n```\n\nYou can run the tests with:\n\n```\n$ poetry run pytest\n```\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "Simple podcast downloader (podcatcher)",
"version": "1.7",
"split_keywords": [
"podcasts"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "4b281f91e9703cddb0405d6f9fb2dd5d32015e3d57bae097f25add85576800db",
"md5": "102a4557b5ff9092bf986536f3b4f6b5",
"sha256": "0d5a388de8c223db74480b4e7481c7db692e5e7de241a725f85a062f7481bdd3"
},
"downloads": -1,
"filename": "simple_podcast_dl-1.7-py3-none-any.whl",
"has_sig": false,
"md5_digest": "102a4557b5ff9092bf986536f3b4f6b5",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.6",
"size": 11094,
"upload_time": "2023-01-16T08:31:24",
"upload_time_iso_8601": "2023-01-16T08:31:24.366994Z",
"url": "https://files.pythonhosted.org/packages/4b/28/1f91e9703cddb0405d6f9fb2dd5d32015e3d57bae097f25add85576800db/simple_podcast_dl-1.7-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "938fb3fd46e30ae991bb4c4f51461cb6276134120edfdaf5c6e2723285c590e7",
"md5": "74aff44ddde348e766c11a7c7576867b",
"sha256": "9796b83054553b809dcf858d4ff3d82f4913d2ccdacc2b014f21f8b68c948c83"
},
"downloads": -1,
"filename": "simple_podcast_dl-1.7.tar.gz",
"has_sig": false,
"md5_digest": "74aff44ddde348e766c11a7c7576867b",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.6",
"size": 10718,
"upload_time": "2023-01-16T08:31:26",
"upload_time_iso_8601": "2023-01-16T08:31:26.256711Z",
"url": "https://files.pythonhosted.org/packages/93/8f/b3fd46e30ae991bb4c4f51461cb6276134120edfdaf5c6e2723285c590e7/simple_podcast_dl-1.7.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2023-01-16 08:31:26",
"github": true,
"gitlab": false,
"bitbucket": false,
"github_user": "kissgyorgy",
"github_project": "simple-podcast-dl",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "simple-podcast-dl"
}