strawberrymusicplayer / strawberry

:strawberry: Strawberry Music Player
https://www.strawberrymusicplayer.org/
GNU General Public License v3.0
2.73k stars 191 forks source link

Feature request: Support for Spotify and Deezer #179

Closed dsejas closed 5 years ago

dsejas commented 5 years ago

Hello. I seem to remember that Clementine had integrated support for streaming music from Spotify. It would be great to have this feature in Strawberry. Also, Deezer would be great, since it is a viable alternative to Spotify. (I know there is a Spotify client that I could install, but I prefer to stream from Strawberry directly. On the other hand, it is my understanding that Deezer doesn't have a client for Linux.) Thank you for the great work!!!

jonaski commented 5 years ago

Deezer: I had deezer support, but I removed it: https://github.com/jonaski/strawberry/commit/380f2509acf23484b72797ed9568ad522ae9a71d#diff-0215c8b3f78fda7bb72686c2284164ec They have an official API, but they only allow 30 seconds preview streams in MP3 through the API. They also have discontinued their SDK for Linux. Technically it is possible to locate the streaming urls, the streams are encrypted but could be decrypted using a gstreamer plugin. But it would break their stupid policy and expose how streams are found, which I don't know the legal implications of. Secondly they can change the way streaming urls are found and the encryption they use easily, which they probably do (they may already have done it), which require a developer that has a subscription to update and fix it each time.

Spotify: Same as deezer. They don't have unencrypted streaming urls in the API. They discontinued their SDK for linux many years ago (2015 I think). Even if they had, spotify is as low quality as it gets, 256kbit/s, and 320kbit/s they call "Very high". If it works in Clementine, it means it barely works and will break sooner or later.

Tidal works for now because the API provide streaming urls and they aren't encrypted (yet), but they are closing down the android login method we use and with oauth the streams are encrypted, it works for now, but probably not for much longer. I suspect also they are switching from flac to MQA (a proprietary lossy and closed format).

Common for all the streaming companies nowadays is that they are targeting web and mobile platforms, not desktop, and especially not Linux. They do what they can to hide their stream urls and encrypt them to prevent users from downloading files. Don't feed them with money, they are bad for artists and bad for users.

forenta commented 2 years ago

Deezer: I had deezer support, but I removed it: 380f250#diff-0215c8b3f78fda7bb72686c2284164ec They have an official API, but they only allow 30 seconds preview streams in MP3 through the API.

Their guidelines state that the playback of complete titles is possible for premium users via API? https://developers.deezer.com/guidelines#content-access

jonaski commented 2 years ago

Not for API access: *Full data access, but no audio streaming available except 30s extracts

forenta commented 2 years ago

🤔 grafik

illtellyoulater commented 8 months ago

I saw there's Spotify plugin installation guide in the wiki https://wiki.strawberrymusicplayer.org/wiki/Installing_GStreamer_Spotify_plugin which was last updated on Aug 2022. So was the support for Spotify readded at some point? And it was not ditched again, was it? Asking before wasting time attempting to make a broken thing work ;)

jonaski commented 8 months ago

The Spotify support was finished but is not merged because of a bug in the gstreamer spotify plugin, it's blocking the GUI thread causing strawberry to be laggy when loading the stream. Maybe the bug has been fixed, I have not tested it in years, and I have no way of testing it since I don't have a spotify subscription. I already paid for a 3 month subscription to implement it, not sure I want to spend more money on it. I already pay for a Tidal subscription just to maintain the Tidal integration.

jonaski commented 8 months ago

If someone can add me to a famility 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