ytdl-sub
Automate downloading and metadata generation with YoutubeDL.

ytdl-sub
is a command-line tool that downloads media via
yt-dlp
and prepares it for your favorite media player, including
Kodi,
Jellyfin,
Plex,
Emby,
and modern music players. No additional plugins or external scrapers are needed.
We recognize that everyone stores their
media differently. Our approach for file and metadata formatting is to provide
maximum flexibility while maintaining simplicity.
YouTube Channels as TV Shows
Plex

Jellyfin

Music Videos and Concerts
Kodi

Jellyfin

SoundCloud Discography
Writes proper music-tags via beets API

Bandcamp Discography

How it Works
ytdl-sub
uses YAML files to define subscriptions. Each subscription imports presets that
define how to handle and output media files. ytdl-sub
comes packaged with many prebuilt presets
that do the work of config-building, so you can start downloading immediately.
__preset__:
overrides:
tv_show_directory: "/tv_shows"
music_directory: "/music"
music_video_directory: "/music_videos"
only_recent_date_range: "2months"
only_recent_max_files: 30
ytdl_options:
cookiefile: "/config/cookie.txt"
Plex TV Show by Date:
= Documentaries:
"NOVA PBS": "https://www.youtube.com/@novapbs"
"National Geographic": "https://www.youtube.com/@NatGeo"
"Cosmos - What If": "https://www.youtube.com/playlist?list=PLZdXRHYAVxTJno6oFF9nLGuwXNGYHmE8U"
= Kids | = TV-Y:
"Jake Trains": "https://www.youtube.com/@JakeTrains"
"Kids Toys Play": "https://www.youtube.com/@KidsToysPlayChannel"
= Music:
"Rick Beato":
- "https://www.youtube.com/@RickBeato"
- "https://www.youtube.com/@rickbeato240"
= News | Only Recent:
"BBC News": "https://www.youtube.com/@BBCNews"
Plex TV Show Collection:
= Music:
"~Beyond the Guitar":
s01_name: "Videos"
s01_url: "https://www.youtube.com/c/BeyondTheGuitar"
s02_name: "Covers"
s02_url: "https://www.youtube.com/playlist?list=PLE62gWlWZk5NWVAVuf0Lm9jdv_-_KXs0W"
YouTube Releases:
= Jazz:
"Thelonious Monk": "https://www.youtube.com/@theloniousmonk3870/releases"
YouTube Full Albums:
= Lofi:
"Game Chops": "https://www.youtube.com/playlist?list=PLBsm_SagFMmdWnCnrNtLjA9kzfrRkto4i"
SoundCloud Discography:
= Chill Hop:
"UKNOWY": "https://soundcloud.com/uknowymunich"
= Synthwave:
"Lazerdiscs Records": "https://soundcloud.com/lazerdiscsrecords"
"Earmake": "https://soundcloud.com/earmake"
Bandcamp:
= Lofi:
"Emily Hopkins": "https://emilyharpist.bandcamp.com/"
"Plex Music Videos":
= Pop:
"Rick Astley": "https://www.youtube.com/playlist?list=PLlaN88a7y2_plecYoJxvRFTLHVbIVAOoc"
"Michael Jackson": "https://www.youtube.com/playlist?list=OLAK5uy_mnY03zP6abNWH929q2XhGzWD_2uKJ_n8E"
All of this can be downloaded and ready to import to your favorite player
using the command
ytdl-sub sub subscriptions.yaml
See our
example subscriptions
for more detailed examples and use-cases.
Output
After ytdl-sub
runs, the end result will download and format the files into something ready
to be consumed by your favorite media player/server.
tv_shows/
Jake Trains/
Season 2021/
s2021.e031701 - Pattys Day Video-thumb.jpg
s2021.e031701 - Pattys Day Video.mp4
s2021.e031701 - Pattys Day Video.nfo
s2021.e031702 - Second Pattys Day Video-thumb.jpg
s2021.e031702 - Second Pattys Day Video.mp4
s2021.e031702 - Second Pattys Day Video.nfo
Season 2022/
s2022.e122501 - Merry Christmas-thumb.jpg
s2022.e122501 - Merry Christmas.mp4
s2022.e122501 - Merry Christmas.nfo
poster.jpg
fanart.jpg
tvshow.nfo
music/
Artist/
[2022] Some Single/
01 - Some Single.mp3
folder.jpg
[2023] Latest Album/
01 - Track Title.mp3
02 - Another Track.mp3
folder.jpg
music_videos/
Elton John/
Elton John - Rocketman.jpg
Elton John - Rocketman.mp4
Custom Configs
Any part of this process is modifiable by using custom configs. See our
walk-through guide
on how to build your first config from scratch. Ready-to-use
example configurations
can be found here alongside our
readthedocs
for detailed information on all config fields.
Installation
ytdl-sub
can be installed on the following platforms.
Docker Installation
Docker installs can be either headless or use the Web-GUI image, which comprises
LSIO's
code-server
Docker image with ytdl-sub
preinstalled. This is the recommended way to use ytdl-sub
.

Contributing
There are many ways to contribute, even without coding. Please take a look in
our GitHub Issues to submit a feature request, or
pick up a bug.
Support
We are pretty active in our
Discord channel
if you have any questions. Also see our
FAQ
for commonly asked questions.