I’ve had this concept in my head for a while, I’m kind of amazed it doesn’t exist yet.
I want to send a link to a music track to an app on my server, probably yt, maybe Spotify, and have that track be archived on my server, with the metadata from the service, preferably in a place Jellyfin can get at it.
There’s a few ways to do that with YT playlist links, but not with adhoc requests for individual tracks, as far as I can see.
Is this not something that exists? I’m thinking it might not be too hard to write, if it doesn’t.
yt-dlp can handle YouTube Music Links. Just tell it with
-x --audio-format mp3
, that you don’t want the Video, but an mp3 (opus can’t be tagged). I use it to obtail whole artists, then I tag them with MusicBrainz Picard. I’m sure there is a way to automate this. yt-dlp has also a Python library. However I haven’t used it for now.opus can’t be tagged
I’m pretty sure that it supports tagging.
goes to try it out
$ yt-dlp -x https://www.youtube.com/shorts/syF8M3aeiWs >/dev/null $ opustags beep\ sound\ effect\ \[syF8M3aeiWs\].opus |grep -v ^METADATA language=eng encoder=Lavf61.7.100 title=beep sound effect date=20230316 purl=https://www.youtube.com/watch?v=syF8M3aeiWs synopsis=beep DESCRIPTION=https://www.youtube.com/watch?v=syF8M3aeiWs artist=Seth's old channel $
If you mean that this MusicBrainz Picard thing doesn’t support tagging Opus, it sounds like it does:
https://community.metabrainz.org/t/musicbrainz-picard-doesnt-support-opus-files/467209
I have been having trouble tagging .opus files. Every time I try to edit .opus files I get:
(error: read b’\x1aE\xdf\xa3’, expected b’OggS’, at 0x0)
Looks like this is not a valid Ogg Opus file. Opus is just an audio codec, not a file format. Files with the file extension .opus are supposed to be inside an Ogg container, and that’s what Picard supports.
Your’s seems to be a Matroska file, and Picard does not support Matroska files yet.
And looking at the output of
yt-dlp -x
, it looks like it’s Opus in an Ogg container:$ file beep\ sound\ effect\ \[syF8M3aeiWs\].opus beep sound effect [syF8M3aeiWs].opus: Ogg data, Opus audio, version 0.1, stereo, 48000 Hz (Input Sample Rate) $
EDIT: Note that my
~/.config/yt-dlp/config
file is:--embed-subs --write-auto-subs --embed-metadata --embed-chapters --embed-thumbnail --sponsorblock-mark=all
It may be that one needs
--embed-metadata
on theyt-dlp
command-line if one isn’t setting it in theiryt-dlp
config file to get the above tags; it might be that none normally get set.Awesome! I just learned something today. Thanks for pointing it out so detailed!
An absolutely ancient tool I used to use was WinAmp (v2.x) with the Streamripper plugin. It would save out each song from a shoutcast or icecast station to a file with the artist/album/title/track like a champ. Maybe not quite what you want (won’t do youtube) but there are a ton of great indie stations on the vorbis icecast network…
That’s a cool approach! Reminds me of the old Napster 🤓
Search for v2.79 (if memory serves) on oldversion.com for the last ‘good’ version of classic winamp, and the streamripper plugin is still floating around somewhere on the 'net…
Somewhat related to spotify-downloader, which takes a yt or spotify link, playlist or singular it figures it out, and retrieves the listed songs from youtube (utilizing yt-dlp libraries). This is similar and adjacent to the other tools linked in this thread.
https://github.com/alexta69/metube
This is doing enough of what I wanted for now…
I don’t totally understand your request. Maybe, do you refer to something like https://odesli.co/ that can generate a kind of “universarl url” for songs in streaming services. isn’t it?
You can mark single tracks in Lidarr if you want to go the Usenet/torrent route.