Is there a music thing that handles single tracks

submitted by

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.

10
21

Log in to comment

10 Comments

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 the yt-dlp command-line if one isn't setting it in their yt-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.

I don't totally understand your request. Maybe, do you refer to something like odesli.co/ that can generate a kind of "universarl url" for songs in streaming services. isn't it?

@bruhbeans @selfhosted

https://github.com/alexta69/metube

This is doing enough of what I wanted for now....

You can mark single tracks in Lidarr if you want to go the Usenet/torrent route.