Name | ydl-podcast JSON |
Version |
1.9.3
JSON |
| download |
home_page | None |
Summary | A simple tool to generate Podcast-like RSS feeds from youtube (or other youtube-dl supported services) channels, using youtube-dl/yt-dlp |
upload_time | 2025-03-03 03:40:19 |
maintainer | None |
docs_url | None |
author | None |
requires_python | >=3.7 |
license | MIT |
keywords |
podcast
youtube-dl
|
VCS |
 |
bugtrack_url |
|
requirements |
No requirements were recorded.
|
Travis-CI |
No Travis.
|
coveralls test coverage |
No coveralls.
|
[](https://pypi.org/project/ydl-podcast/)
[](https://pypi.org/project/ydl-podcast/)
# ydl-podcast
A simple tool to generate Podcast-like RSS feeds from youtube (or other
youtube-dl supported services) channels, using
[`youtube-dl`](https://github.com/rg3/youtube-dl).
## Setup
Install package with requirements:
### Youtube-dl:
`pip install ydl-podcast[youtube-dl]`
### yt-dlp:
`pip install ydl-podcast[yt-dlp]`
## Configuration
Edit the config.yaml file to list your podcast sources and configure them,
as well as edit general configuration.
[Example config file](config.sample.yaml)
The available settings are the following.
### General settings
- `output_dir`: local directory where the downloaded media will be stored, and
the podcast xml files generated.
- `url_root`: root url for the static files (used in the generation of the XML
to point to the media files.
- `subscriptions`: a list of feeds to subscribe to.
- `youtube-dl-module`: Alternative youtube-dl python module. By default, this
uses [youtube-dl](https://github.com/rg3/youtube-dl), but can leverage forks
such as [yt-dlp](https://github.com/yt-dlp/yt-dlp).
### Feed settings
#### Mandatory
- `name NAME`: Name of the podcast source. Used as the podcast title, and media
directory name.
- `url URL`: source url for the youtube (or other) channel.
#### Optional
- `audio_only True/False`: if `True`, audio will be extracted from downloaded
videos to create an audio podcast.
- `retention_days N`: only download elements newer than `N` days, and
automatically delete elements older.
- `download_last N`: only download the latest `N` videos.
- `initialize True/False`: if `True`, then downloads everything on the first
run, no matter the `download_last` or `retention_days` specified.
- `output_dir`: local directory where the downloaded media will be stored, and
the podcast xml files generated.
- `url_root`: root url for the static files (used in the generation of the XML
to point to the media files.
- `format`: file format to force youtube-dl to use (eg mp4, webm, mp3 for audio
only…)
- `best`: force best quality (only useful when specifying a format).
- `ydl_options`: list of raw youtube-dl options to use. For experienced users,
since this will likely yield issues if not understood.
- `nfo_files`: generates nfo files for subscriptions and downloaded episodes (simulates a "tvshow" nfo for the subscription and "tvshow episode" for each video). This helps plex, kodi, jellyfin import correct metadata. Does NOT support `audio_only` feeds at this point.
- `skip_download`: Don't perform download, just generate the Atom feed from the existing files. Mandatory `url` parameter can be skipped if `skip_download` is set to `true`
- `download_as_playlist`: Pass the url to the downloader directly, without processing the metadata of each item in the playlist. This is helpful with generic urls, and a few specific extractors.
## Usage
Using cron or your favorite scheduler, run:
`ydl-podcast [-c configfile.yaml]`
You can then use your favorite web server to serve the files (a good idea is to
exclude the `*.json` and `*.part` files from being served as the first might
leak information, and the second is unnecessary.
eg with nginx:
```
root /var/www/static/podcasts/;
location ~ (\.json$|\.part$) {
return 403;
}
```
### Command line arguments
```bash
usage: ydl-podcast [-h] [-v] [-c CONFIG] [-j JSON_CONFIG] [-f FILTER] [-e EXCLUDE]
options:
-h, --help show this help message and exit
-v, --version Show version and exit
-c CONFIG, --config CONFIG
Configuration file
-j JSON_CONFIG, --json-config JSON_CONFIG
Configuration string in JSON format
-f FILTER, --filter FILTER
Filter subscriptions
-e EXCLUDE, --exclude EXCLUDE
Exclude subscriptions
```
Raw data
{
"_id": null,
"home_page": null,
"name": "ydl-podcast",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.7",
"maintainer_email": null,
"keywords": "podcast, youtube-dl",
"author": null,
"author_email": "nbr23 <max@23.tf>",
"download_url": "https://files.pythonhosted.org/packages/36/ce/395e791c31294653c2c5ff9129a262f44b0af0fcf09002f50e1194cb3083/ydl_podcast-1.9.3.tar.gz",
"platform": null,
"description": "[](https://pypi.org/project/ydl-podcast/)\n[](https://pypi.org/project/ydl-podcast/)\n\n# ydl-podcast\n\nA simple tool to generate Podcast-like RSS feeds from youtube (or other\nyoutube-dl supported services) channels, using\n[`youtube-dl`](https://github.com/rg3/youtube-dl).\n\n## Setup\n\nInstall package with requirements:\n\n### Youtube-dl:\n\n`pip install ydl-podcast[youtube-dl]`\n\n### yt-dlp:\n\n`pip install ydl-podcast[yt-dlp]`\n\n## Configuration\n\nEdit the config.yaml file to list your podcast sources and configure them,\nas well as edit general configuration.\n\n[Example config file](config.sample.yaml)\n\nThe available settings are the following.\n\n### General settings\n\n- `output_dir`: local directory where the downloaded media will be stored, and\n the podcast xml files generated.\n- `url_root`: root url for the static files (used in the generation of the XML\n to point to the media files.\n- `subscriptions`: a list of feeds to subscribe to.\n- `youtube-dl-module`: Alternative youtube-dl python module. By default, this\nuses [youtube-dl](https://github.com/rg3/youtube-dl), but can leverage forks\nsuch as [yt-dlp](https://github.com/yt-dlp/yt-dlp).\n\n### Feed settings\n\n#### Mandatory\n- `name NAME`: Name of the podcast source. Used as the podcast title, and media\n directory name.\n- `url URL`: source url for the youtube (or other) channel.\n\n#### Optional\n- `audio_only True/False`: if `True`, audio will be extracted from downloaded\n videos to create an audio podcast.\n- `retention_days N`: only download elements newer than `N` days, and\n automatically delete elements older.\n- `download_last N`: only download the latest `N` videos.\n- `initialize True/False`: if `True`, then downloads everything on the first\n run, no matter the `download_last` or `retention_days` specified.\n- `output_dir`: local directory where the downloaded media will be stored, and\n the podcast xml files generated.\n- `url_root`: root url for the static files (used in the generation of the XML\n to point to the media files.\n- `format`: file format to force youtube-dl to use (eg mp4, webm, mp3 for audio\n only\u2026)\n- `best`: force best quality (only useful when specifying a format).\n- `ydl_options`: list of raw youtube-dl options to use. For experienced users,\n since this will likely yield issues if not understood.\n- `nfo_files`: generates nfo files for subscriptions and downloaded episodes (simulates a \"tvshow\" nfo for the subscription and \"tvshow episode\" for each video). This helps plex, kodi, jellyfin import correct metadata. Does NOT support `audio_only` feeds at this point.\n- `skip_download`: Don't perform download, just generate the Atom feed from the existing files. Mandatory `url` parameter can be skipped if `skip_download` is set to `true`\n- `download_as_playlist`: Pass the url to the downloader directly, without processing the metadata of each item in the playlist. This is helpful with generic urls, and a few specific extractors.\n\n## Usage\n\nUsing cron or your favorite scheduler, run:\n\n`ydl-podcast [-c configfile.yaml]`\n\nYou can then use your favorite web server to serve the files (a good idea is to\nexclude the `*.json` and `*.part` files from being served as the first might\nleak information, and the second is unnecessary.\n\neg with nginx:\n\n```\nroot /var/www/static/podcasts/;\nlocation ~ (\\.json$|\\.part$) {\n return 403;\n}\n```\n\n### Command line arguments\n\n```bash\nusage: ydl-podcast [-h] [-v] [-c CONFIG] [-j JSON_CONFIG] [-f FILTER] [-e EXCLUDE]\n\noptions:\n -h, --help show this help message and exit\n -v, --version Show version and exit\n -c CONFIG, --config CONFIG\n Configuration file\n -j JSON_CONFIG, --json-config JSON_CONFIG\n Configuration string in JSON format\n -f FILTER, --filter FILTER\n Filter subscriptions\n -e EXCLUDE, --exclude EXCLUDE\n Exclude subscriptions\n```\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "A simple tool to generate Podcast-like RSS feeds from youtube (or other youtube-dl supported services) channels, using youtube-dl/yt-dlp",
"version": "1.9.3",
"project_urls": {
"homepage": "https://github.com/nbr23/ydl-podcast",
"repository": "https://github.com/nbr23/ydl-podcast"
},
"split_keywords": [
"podcast",
" youtube-dl"
],
"urls": [
{
"comment_text": null,
"digests": {
"blake2b_256": "5b7f7ba58a3d0397b363430eb0dbc93c15bfcec43460efa401d289e6ea49727d",
"md5": "464021ed0d933d5924f570765a916484",
"sha256": "03b7257b281cdbb4ed093650ae06b7b027f7054849b69b3f46c4ff7d09aa120e"
},
"downloads": -1,
"filename": "ydl_podcast-1.9.3-py3-none-any.whl",
"has_sig": false,
"md5_digest": "464021ed0d933d5924f570765a916484",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.7",
"size": 13164,
"upload_time": "2025-03-03T03:40:18",
"upload_time_iso_8601": "2025-03-03T03:40:18.317892Z",
"url": "https://files.pythonhosted.org/packages/5b/7f/7ba58a3d0397b363430eb0dbc93c15bfcec43460efa401d289e6ea49727d/ydl_podcast-1.9.3-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": null,
"digests": {
"blake2b_256": "36ce395e791c31294653c2c5ff9129a262f44b0af0fcf09002f50e1194cb3083",
"md5": "041139fa4ecbe7f08078c03a28cb6822",
"sha256": "406fa262e299a0f0be838e9abd7529773bbc849217a1cc6acf66b9e97730633e"
},
"downloads": -1,
"filename": "ydl_podcast-1.9.3.tar.gz",
"has_sig": false,
"md5_digest": "041139fa4ecbe7f08078c03a28cb6822",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.7",
"size": 12307,
"upload_time": "2025-03-03T03:40:19",
"upload_time_iso_8601": "2025-03-03T03:40:19.863171Z",
"url": "https://files.pythonhosted.org/packages/36/ce/395e791c31294653c2c5ff9129a262f44b0af0fcf09002f50e1194cb3083/ydl_podcast-1.9.3.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2025-03-03 03:40:19",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "nbr23",
"github_project": "ydl-podcast",
"travis_ci": false,
"coveralls": false,
"github_actions": true,
"lcname": "ydl-podcast"
}