youtube-dl integration
nariox opened this issue · 6 comments
Hi, I'm wondering if it'd be possible to integrate youtube-dl so youtube links (or other supported websites) could be pasted into ympd and played.
I currently have a shairport-sync/mpd server set-up, but since I don't personally own any apple products (wife owns iPad), I find myself not being able to stream playlists/music directly from my own devices. Workarounds are welcome too, but I think an youtube-dl tab/plugin would be neat!
I was thinking about this problem too. I think it might be better solved as a playlist plugin on the server side. For example, soundcloud:// URLs are handled by https://github.com/MusicPlayerDaemon/MPD/blob/ce49d99c2f3265f2975b2cff583684bf191bbd93/src/playlist/plugins/SoundCloudPlaylistPlugin.cxx. It looks like it wouldn't be too hard to fork that and shove a call to youtube-dl -gx
in there.
Also, YouTube streams don't have the metadata nicely embedded and they probably aren't the only one, so we should fall back on youtube-dl
's metadata extractors would be good. If I youtube-dl -gx http://youtube.com/watch?v=something | mpc add
then I just get a big messy URL on the playlist. In comparison, youtube-dl -gx http://bandcamp.com/track/something | mpc add
does also leave a long URL in the playlist, but once mpd plays it it gets the metadata out of the stream and relabels the entry with that.
Oh snap, someone forked the entire project to add this feature: https://github.com/bjuriewicz/ympd-youtube
But they did it by adding a folder to cache mp3s to and running
youtube-dl --max-quality=140 --extract-audio --audio-format=mp3
which wouldn't be my first choice, especially when youtube-dl -gx
exists.
Also look at...
ympd-youtube and maympd both ask youtube-dl to download the file and embed id3 tags in it, so then mpd will load up the metadata correctly. But I'd rather stream, not download. My servers don't necessarily have a lot of space I can fill up and forget about.
There's an active PR on the main MPD repo to add a youtube-dl plugin - MusicPlayerDaemon/MPD#223