A simple tool to generate Podcast-like RSS feeds from youtube (or other youtube-dl supported services) channels, using youtube-dl/yt-dlp
Project description
ydl-podcast
A simple tool to generate Podcast-like RSS feeds from youtube (or other
youtube-dl supported services) channels, using
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, but can leverage forks such as 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
: ifTrue
, audio will be extracted from downloaded videos to create an audio podcast.retention_days N
: only download elements newer thanN
days, and automatically delete elements older.download_last N
: only download the latestN
videos.initialize True/False
: ifTrue
, then downloads everything on the first run, no matter thedownload_last
orretention_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 supportaudio_only
feeds at this point.skip_download
: Don't perform download, just generate the Atom feed from the existing files. Mandatoryurl
parameter can be skipped ifskip_download
is set totrue
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
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
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file ydl_podcast-1.7.7.tar.gz
.
File metadata
- Download URL: ydl_podcast-1.7.7.tar.gz
- Upload date:
- Size: 12.0 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.4 CPython/3.11.4 Linux/5.4.0-190-generic
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 114f20fba038bd5861f319e3f480eb6e43dfb59e6f4b9928c4b9c51ae7d63db0 |
|
MD5 | 9fd4ea93b2bf60a5a5b0d722d64da3b6 |
|
BLAKE2b-256 | 69446f022f298ade7c721812c06d24d7d7f7dfeb8196b4f07341d26a65a7d830 |
File details
Details for the file ydl_podcast-1.7.7-py3-none-any.whl
.
File metadata
- Download URL: ydl_podcast-1.7.7-py3-none-any.whl
- Upload date:
- Size: 13.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.4 CPython/3.11.4 Linux/5.4.0-190-generic
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 56a0deb227d8351bbbae3fa94465c5548d10eb3619fcbbeeb8d10d01392ce374 |
|
MD5 | 67efd87d6b82790b8f7ae850d9939103 |
|
BLAKE2b-256 | ebaa37fcbda925b1faa752737c7df6133e4fd4da6cc5f6398f615457e3650f90 |