Support for Spotify
-
Hi, I know this issue has already been raised (https://github.com/strawberrymusicplayer/strawberry/issues/179) and has been criticized.
However, it is true that it is one of the most popular streaming services. Many of my favorite artists don't exist on eg Tidal.Have you considered integrating with unofficial SDKs like this one? https://github.com/librespot-org/librespot
Best regards
-
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.