Name | ydl-podcast JSON |
Version |
1.8.1
JSON |
| download |
home_page | https://github.com/nbr23/ydl-podcast |
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 | 2024-12-28 19:49:46 |
maintainer | None |
docs_url | None |
author | nbr23 |
requires_python | <4.0,>=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.
|
[![Pypi Version Shield](https://img.shields.io/pypi/v/ydl-podcast.svg?style=flat-square)](https://pypi.org/project/ydl-podcast/)
[![Pypi License Shield](https://img.shields.io/pypi/l/ydl-podcast.svg?style=flat-square)](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": "https://github.com/nbr23/ydl-podcast",
"name": "ydl-podcast",
"maintainer": null,
"docs_url": null,
"requires_python": "<4.0,>=3.7",
"maintainer_email": null,
"keywords": "podcast, youtube-dl",
"author": "nbr23",
"author_email": "max@23.tf",
"download_url": "https://files.pythonhosted.org/packages/e7/d9/ab503c5ce09624428df932872c0ec81be72ab2b4557fdab223534ff43ffc/ydl_podcast-1.8.1.tar.gz",
"platform": null,
"description": "[![Pypi Version Shield](https://img.shields.io/pypi/v/ydl-podcast.svg?style=flat-square)](https://pypi.org/project/ydl-podcast/)\n[![Pypi License Shield](https://img.shields.io/pypi/l/ydl-podcast.svg?style=flat-square)](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.8.1",
"project_urls": {
"Homepage": "https://github.com/nbr23/ydl-podcast",
"Repository": "https://github.com/nbr23/ydl-podcast"
},
"split_keywords": [
"podcast",
" youtube-dl"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "52c70308441e0b097457ae0f99386f5c93f341ba47d41d48bf68fa0c79338325",
"md5": "fd7aa59ed3ed5cd855a66e3050680efd",
"sha256": "b49ca15758c8e320e53b7e74b1591428935d37b36e35c5123120a0529afc865a"
},
"downloads": -1,
"filename": "ydl_podcast-1.8.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "fd7aa59ed3ed5cd855a66e3050680efd",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": "<4.0,>=3.7",
"size": 13069,
"upload_time": "2024-12-28T19:49:43",
"upload_time_iso_8601": "2024-12-28T19:49:43.825980Z",
"url": "https://files.pythonhosted.org/packages/52/c7/0308441e0b097457ae0f99386f5c93f341ba47d41d48bf68fa0c79338325/ydl_podcast-1.8.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "e7d9ab503c5ce09624428df932872c0ec81be72ab2b4557fdab223534ff43ffc",
"md5": "29dff4e6a7faeb52c7da7dc6b4049838",
"sha256": "544cbe0e1c846a6ffc273d7a3a159932a45e9be3d4a0053de577c60461a888ae"
},
"downloads": -1,
"filename": "ydl_podcast-1.8.1.tar.gz",
"has_sig": false,
"md5_digest": "29dff4e6a7faeb52c7da7dc6b4049838",
"packagetype": "sdist",
"python_version": "source",
"requires_python": "<4.0,>=3.7",
"size": 12060,
"upload_time": "2024-12-28T19:49:46",
"upload_time_iso_8601": "2024-12-28T19:49:46.172304Z",
"url": "https://files.pythonhosted.org/packages/e7/d9/ab503c5ce09624428df932872c0ec81be72ab2b4557fdab223534ff43ffc/ydl_podcast-1.8.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-12-28 19:49:46",
"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"
}