Comment by rft

2 years ago

> CLI: I wanted to download songs from youtube, but they were often stitched as complete albums - so I wrote a youtube-cue generator that generates cuesheets that can then be used to split and tag the yt-dlp downloaded audio file. (https://github.com/captn3m0/youtube-cue)

Thanks for this! I need to do some testing, this might automate the last manual step of my own script for converting YT mixes into distinct tracks. The problem I faced is that often the timestamps are not in the description, but instead in a comment, sometimes not even the pinned/top voted comment. That is why I paste it in via stdin for now.

As this fits the thread topic, a short description of this script. I enjoy YT mixes and wanted to listen to them in my car. I can use an USB stick with media files and playlists which are displayed decently by the infotainment system. I wrote a script that takes in a YT URL (or anything supported by yt-dlp), downloads & converts it to mp3, splits the mp3 file based on a list of timestamps, recognizes (tries to anyway) the songs via SongRec [0], tags & names the files correctly and finally generates an M3U playlist in the format recognized by my car. I use song recognition instead of parsing out the names from the timestamped list as the format of Artist - Title is nearly always slightly different. It was easier to use SongRec instead and get everything I need for tagging with >90% hit rate.

The heavy lifting is done by calling out to yt-dlp, ffmpeg and SongRec. I just glued them together with Python. I like your approach of a do one thing well and might add youtube-cue to the toolset.

[0] https://github.com/marin-m/SongRec

My personal setup (bash snippet in README) is throwing the split files (with track names via timestamps) to beet and let it import those.

I want to make youtube an optional dependencies so you could run this via stdin as well.