Support for Spotify
-
It would make more sense to write our own, as the library is in rust, and what we do is C/C++.
However it is a lot of work, and also requires a subscription. The best way to do it is through a gstreamer plugin. Most of the work is getting the audio data, as the rest of the API part isn't too much work as we can simply copy the Tidal/Qobuz stuff and modify it for the Spotify API.
Most new features need to come from the community as this is a community driven project, so unless there is a programmer interested in spotify support willing to do it, it won't be done. -
Thanks for the answer.
I'd shoulder it, but I have too many overtime projects right now. It is possible that in March I could deal with it or maybe in the meantime someone would be interested in this topic. -
@dziurka
Since GStreamer has a Spotify plugin using librespot now (https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs) I started work on it here: https://github.com/strawberrymusicplayer/strawberry/tree/spotify
It's almost finished and works but still has issues:- For now we need to use a modified version of the plugin, see: https://github.com/strawberrymusicplayer/strawberry/wiki/GStreamer-Spotify-plugin
- The plugin causes a bit of hang when starting playback of a new song. You'll notice that the fading of the album covers is a bit laggy.
No gapless playback.
-
Actually, gapless playback works, I just didn't correctly load the track duration from the API.
-
Can anyone add me to a family plan or something and I can see if the spotify support is mergable now?
We need to change strawberry to use the "spotify" uri scheme: https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/merge_requests/912/diffs#8081a7741a879d840be97ce64e192df50f2add51
-
@jonas Have you had any response to this? - I have a family plan (and I have your email)
-
@rajm
No responses from anyone, you can try to add me, but I already have an account associated with my main e-mail address, so if that doesn't work, I can give you another you can try. -
@jonas I can confirm spotify works just fine in strawberry with a premium account.
I compiled the spotify branch from a recent git clone, and inserted schema-19 to the db.
When starting strawberry I could configure my spotify creds and authenticate strawberry as an app in spotify.
That's it. Works perfectly now -
@theo
OK, I signed up for a 1 mounth to test it too. Yes it works, and I see I've already implemented spotify uri scheme, just forgot about it.
But it still lags when you change song manually, I see now that's caused by gst_element_set_state when stopping the previous pipeline. -
Just noticed this was working @jonas, thanks! This is awesome!
-
There are several issues with the Spotify support in release 1.1.1, so I've been working on fixing those.
- The blocking of the GUI when switching songs is fixed.
- Streaming being limited to 128kbps is fixed.
- The favorites and search results returning too many artists and albums is fixed.
However, today I notice that Spotify's authentication for the actual streaming is no longer working, there is some discussion here:
https://github.com/librespot-org/librespot/issues/1308
https://gitlab.freedesktop.org/gstreamer/gst-plugins-rs/-/issues/203
Hopefully it will be resolved, and then possible to provide a access token to gstreamer so we do not have to provide additional login for the actual streaming too.