Live data from Hacker News

Open-Source Spotify App

github.com

41–50 of 113 posts

Re: Open-Source Spotify App

#41
My first thought, upon seeing this is licensed under the GPLv3, is that it wouldn't be legal to run under iOS, as the Tivoization aspect would come into play. However, as there is but one author, this issue doesn't materialize, although the sole author is the only one who can legally submit this to run under any machine, barring that private app exception I'm rather certain someone would mention if I didn't first.

It's nice that you've chosen the GPL, as I also prefer that license, but what value do you see in this software that only you can modify for use? Do you intend to release an Android or other port, at some point?

Re: Open-Source Spotify App

#42
post #40

I have a question for those familiar with Spotify API. Do they serve you the song's audio bits and if they do how do they do DRM?

Hi! I haven't used the Spotify API, so this is just a guess. The demo app has a "Sign in with Spotify" component of their authentication so my guess is that you make an API request to Spotify for a specfic song and Spotify sends back to you a cryptographically signed URL that expires after a reasonable amount of time that lets you access the entire song in MP3 form and contingent on using their API you only use it tr…

I don’t think this is how it works. I haven’t played with the API but I’ve dug around a bit in the source for the Spotify client.

More likely, it’s by sending a stream of data or otherwise its sending encrypted chunks for which Spotify has a decoder integrated. That’s how the desktop client works at least.

Your prediction seems unlikely to me for the reason that any transmission of unencrypted data like that exposes Spotify to having their whole library scraped.

Not that it’s technically impossible already, but I would say incredibly infeasible.

Re: Open-Source Spotify App

#43
post #2

This is an iOS app, but if it isn’t what you were hoping for, check out these other projects. A CLI UI for Spotify [0] Spotify as a daemon [1] [0] https://github.com/Rigellute/spotify-tui [1] https://github.com/Spotifyd/spotifyd

I haven't been able to get spotifyd to work, but I've been using Mopidy and MopidySpotify for years.

Re: Open-Source Spotify App

#44
post #28
post #26

Earlier quoted context omitted.

I'm pretty sure he only meant selling point as a "why should I care about your repo" or "what purpose is this program trying to fulfill" statement: not actually suggesting to selling as a product

Right. Once again, never really thought of that. It could be a useful tool for others to learn off of: the app employs a MVVM and Coordinator architecture with reactive bindings. It's also a good example of using the Spotify Web API for Swift since there aren't many examples out there.

' It's also a good example of using the Spotify Web API for Swift since there aren't many examples out there'

There is never any harm to educate others; I'm not so strong on Swift at all, but I really appreciate the area that I dig into too. This project, is well worthy of a follow.

Re: Open-Source Spotify App

#45
post #2

This is an iOS app, but if it isn’t what you were hoping for, check out these other projects. A CLI UI for Spotify [0] Spotify as a daemon [1] [0] https://github.com/Rigellute/spotify-tui [1] https://github.com/Spotifyd/spotifyd

I haven't been able to get spotifyd to work, but I've been using Mopidy and MopidySpotify for years.

What frontend have you been using for mopidy? I've been looking into it as a potential Clementine replacement since Clementine's Spotify support is dead.

Basically I want a good interface for managing large playlists (so nativeish lists with multi select support for add/remove/reorder, not an album art focused UI), and support for mixing Spotify, local and network shared tracks in a single playlist.

Re: Open-Source Spotify App

#46

Is this an actual Spotify app that streams music or can you just control music playing on other devices/apps (like the cli UI's)?

None of the above. My app pulls in music using Spotify’s api. To stream music, it redirects you to the Spotify app.

Re: Open-Source Spotify App

#47
post #40

Earlier quoted context omitted.

Hi! I haven't used the Spotify API, so this is just a guess. The demo app has a "Sign in with Spotify" component of their authentication so my guess is that you make an API request to Spotify for a specfic song and Spotify sends back to you a cryptographically signed URL that expires after a reasonable amount of time that lets you access the entire song in MP3 form and contingent on using their API you only use it tr…

I don’t think this is how it works. I haven’t played with the API but I’ve dug around a bit in the source for the Spotify client. More likely, it’s by sending a stream of data or otherwise its sending encrypted chunks for which Spotify has a decoder integrated. That’s how the desktop client works at least. Your prediction seems unlikely to me for the reason that any transmission of unencrypted data like that exposes…

The old API (libspotify) did decrypt raw audio data and hand it to the player. This is likely why it was killed (that and an inability to tie usage to apps, only to users).

The currently supported SDKs are for web, iOS and Android which perform the decryption via EME or platform specific DRM support. They also require app specific oauth authentication.

However, libspotify's playback endpoints still work, likely due to them still supporting older hardware devices (other endpoints, most notably search are now broken). This is ultimately what most open source native clients use, either using archived builds of libspotify (for e.g. Clementine or mopidy) or reimplentations of it (librespot, Spotifyd).

Because the new API is so locked down it's likely that open source apps won't ever migrate to it (without the raw audio data they can't integrate it with most of their features), and will have to drop support when the last endpoints supporting libspotify style playback are pulled.

Re: Open-Source Spotify App

#48

I have a question for those familiar with Spotify API. Do they serve you the song's audio bits and if they do how do they do DRM?

I used their C API a long time ago. Back then, you registered a bunch of callback functions. One of those was to get raw uncompressed audio. IIRC, they used Vorbis internally, but once it reached your callback function, it was just decoded raw PCM data.

I, uh, wrote my own little "player" with this: https://youtu.be/8ejnGARQIJ0

Re: Open-Source Spotify App

#49

My first thought, upon seeing this is licensed under the GPLv3, is that it wouldn't be legal to run under iOS, as the Tivoization aspect would come into play. However, as there is but one author, this issue doesn't materialize, although the sole author is the only one who can legally submit this to run under any machine, barring that private app exception I'm rather certain someone would mention if I didn't first. It…

Apple doesn't allow GPLv3 code if there are multiple contributors? I thought they didn't allow GPLv3 code at all (and that this app required you to compile and install it as as a developer .. never had an eyeProduct so I'm not even sure what the dev process is like).

Re: Open-Source Spotify App

#50

My first thought, upon seeing this is licensed under the GPLv3, is that it wouldn't be legal to run under iOS, as the Tivoization aspect would come into play. However, as there is but one author, this issue doesn't materialize, although the sole author is the only one who can legally submit this to run under any machine, barring that private app exception I'm rather certain someone would mention if I didn't first. It…

Apple doesn't allow GPLv3 code if there are multiple contributors? I thought they didn't allow GPLv3 code at all (and that this app required you to compile and install it as as a developer .. never had an eyeProduct so I'm not even sure what the dev process is like).

If there's a single author, they own ultimate copyright to the code and can submit it to the app store under a different license.
Post reply on HN