Comment by captn3m0
2 years ago
GUI: Long ago, wrote a HN app for linux users that lived in the system tray (https://github.com/captn3m0/hackertray) because I thought that might be faster.
WEB: I wrote a news app (plain-text website) that provides byte-sized news and optimizes for skimmability (https://news.tatooine.club/).
API: I needed to import indian mutual fund data into beancount, so I wrote up an API (https://mf.captnemo.in/) and wrote a small beancount plugin for that uses it.
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)
> 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.