YouTube Music Downloader

Hey guys i have been using Navidrome to stream my music from my server and its been amazing. I primarily use YT Music because of discoverability so I have all of my "primary" playlists (about 8 of them really, but supporting a somewhat arbitrary limit would be nice) in YouTube.

Im looking for an automated way to download the music and keep my navidrome instance updated with a couple playlists. I started working on some Python script to handle it, but its just not working super well so i would prefer to use someone elses solution haha.

Anyone have any good recommendations? I tried this one but I couldn't actually find the music and it seems to only support one playlist at a time. It would also be nice to download the album art and set some ID3 tags too

46 points · 9 comments · view on lemmy.world

9 Comments

dgdft@lemmy.world · 29 pts · 1y (6 replies)

Yt-dlp is the gold standard for that.

https://github.com/yt-dlp/yt-dlp

Tag cleanup and album art are their own beast that you’ll wanna tackle post-download, but beets is another gold standard tool that can help with that layer.

https://beets.io/

tux0r@feddit.org · 6 pts · 1y

If you prefer Rust, yaydl (disclosure: I wrote it) would be an alternative to yt-dlp. (Patches welcome - right now, I much depend on Invidious to get YouTube contents.)

+1 for Beets - awesome software!

Lv_InSaNe_vL@lemmy.world · 5 pts · 1y (3 replies)

Yeah I am using yt-dlp to download the music, and I can set that on a cronjob no problem.

I am specifically asking for better downloading (I don't want just the raw YouTube title most of the time), album art, and ID3 tagging. But that beets.io thing looks super cool! I might integrate that into my existing python scripting instead of trying to build it all out myself

dgdft@lemmy.world · 7 pts · 1y (1 reply)

Just to throw out an easy option: if the music is well-labeled on Youtube, you can get pretty close to that full suite with just yt-dlp by using --embed-thumbnail as a stand-in for album art, dumping your files with an “Artist - track - album” naming structure using the --output-template flag — then using an awk or python script as a second pass to add the artist/track/album names to each file as tags.

E: and in case it isn’t self-evident, you don’t have to give yt-dlp a URL for each track; it’ll work fine with a playlist URL.

Lv_InSaNe_vL@lemmy.world · 4 pts · 1y

Haha unfortunately the music on YouTube is not especially well managed. Ive been using YouTube for music for a long time so a lot of my music is uploaded by Vevo or "{Artist} - Topic" and stuff like that. Plus (IIRC) YouTube music doesn't give things like what album a song is from or when it was released

Cyber@feddit.uk · 3 pts · 1y

Download with yt-dlp. All of it. Even into a single folder if that's easier.

Then run it all through Picard and that'll do everything else for you - albumart, metadata, folders, filenames, the lot.

Anything that Picard doesn't know about, enter it into the MusicBrainz db to give back to the community.

Done.

lepinkainen@lemmy.world · 2 pts · 1y

Every single tool that downloads from YouTube is just a yt-dlp wrapper 😀

dysprosium@lemmy.dbzer0.com · 3 pts · 1y

JDownloader is the best for downloading anything from YouTube. It may also support YouTube Music

tuxec@infosec.pub · 1 pts · 1y