Name | ydl-podcast JSON |
Version |
1.3.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 |
upload_time | 2024-01-26 19:37:22 |
maintainer | |
docs_url | None |
author | nbr23 |
requires_python | >=3.7,<4.0 |
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.
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 [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;
}
```
Raw data
{
"_id": null,
"home_page": "https://github.com/nbr23/ydl-podcast",
"name": "ydl-podcast",
"maintainer": "",
"docs_url": null,
"requires_python": ">=3.7,<4.0",
"maintainer_email": "",
"keywords": "podcast,youtube-dl",
"author": "nbr23",
"author_email": "max@23.tf",
"download_url": "https://files.pythonhosted.org/packages/8d/de/3bf6314c742cfe16d67ffa6e567047877b55e378e03b950eccab879c5aba/ydl_podcast-1.3.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\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 [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",
"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",
"version": "1.3.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": "bcdc639f2c6c29ef157c1d6dfe65161c3493e2d54f4f3bf30dee7cc3388a454f",
"md5": "8d08341ba687a2ec9cf0686ac8abf9a6",
"sha256": "6eef9e507d7d99be4e2ed470d5db21ce44daa11ccde5183c4b4d6455420c803c"
},
"downloads": -1,
"filename": "ydl_podcast-1.3.1-py3-none-any.whl",
"has_sig": false,
"md5_digest": "8d08341ba687a2ec9cf0686ac8abf9a6",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.7,<4.0",
"size": 9516,
"upload_time": "2024-01-26T19:37:20",
"upload_time_iso_8601": "2024-01-26T19:37:20.254950Z",
"url": "https://files.pythonhosted.org/packages/bc/dc/639f2c6c29ef157c1d6dfe65161c3493e2d54f4f3bf30dee7cc3388a454f/ydl_podcast-1.3.1-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
},
{
"comment_text": "",
"digests": {
"blake2b_256": "8dde3bf6314c742cfe16d67ffa6e567047877b55e378e03b950eccab879c5aba",
"md5": "83ef60abfe3ab282bc0a1f65ba2a7f46",
"sha256": "7c21614cbf3ff9e8cf03fb2fc7e1b3bcf6d1fc7498f23109a6ba767d1030b557"
},
"downloads": -1,
"filename": "ydl_podcast-1.3.1.tar.gz",
"has_sig": false,
"md5_digest": "83ef60abfe3ab282bc0a1f65ba2a7f46",
"packagetype": "sdist",
"python_version": "source",
"requires_python": ">=3.7,<4.0",
"size": 9596,
"upload_time": "2024-01-26T19:37:22",
"upload_time_iso_8601": "2024-01-26T19:37:22.056357Z",
"url": "https://files.pythonhosted.org/packages/8d/de/3bf6314c742cfe16d67ffa6e567047877b55e378e03b950eccab879c5aba/ydl_podcast-1.3.1.tar.gz",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-01-26 19:37:22",
"github": true,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"github_user": "nbr23",
"github_project": "ydl-podcast",
"travis_ci": false,
"coveralls": false,
"github_actions": false,
"lcname": "ydl-podcast"
}