33 ms·
Open-Source Spotify App
- bransonf 7y agoThis 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 https://github.com/Rigellute/spotify-tui [1] https://github.com/Spotifyd/spotifyd https://github.com/Spotifyd/spotifyd
- snek 7y agoAlso https://github.com/librespot-org/librespot https://github.com/librespot-org/librespot and https://github.com/hrkfdn/ncspot https://github.com/hrkfdn/ncspot
- kingosticks 7y agoDon't forget Mopidy! https://news.ycombinator.com/item?id=21867180 https://news.ycombinator.com/item?id=21867180
- trashcat 7y agoI haven't been able to get spotifyd to work, but I've been using Mopidy and MopidySpotify for years.
- Macha 7y agoWhat 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.
- kingosticks 7y agoMopidy Iris is the most polished but it doesn't yet support the latest and greatest Mopidy v3. https://mopidy.com/ext/ https://mopidy.com/ext/
- Legogris 7y agoIt was ~5 years ago, but I used ncmpcpp and Spotify with great success.
- alpb 7y agoDoes anyone know why Spotify doesn’t pursue name rights or DMCA takedowns in all these OSS projects, as they reverse engineer and use Spotify’s name? Snapchat practices DMCA/copyright for a lot for these sort of projects.
- happa 7y agoSnapchat and Spotify have very different kinds of business models.
- dannyw 7y ago"Laws can definitely help, but it doesn't take away the problem. The only way to solve the problem was to create a service that was better than piracy and at the same time compensates the music industry – that gave us Spotify." - Daniel Ek (Spotify co-founder)
- csunbird 7y agoI wish the TV industry can accept way of Spotify is the way to go. Instead, now we have dozens of streaming platforms with exclusive contents.
- sweeneyrod 7y agoThey can't, because they have a different business model. For TV content producers, consumers paying for content (with either dollars or eyeballs) is their main source of income. But for musicians, most of their money comes from playing live shows. So Spotify can be much more relaxed about revenue than HBO.
- pixelrevision 7y agoIt also costs a good deal less for a band to put out an album than it does to make a season of game of thrones.
- 7y ago
- hr2016 7y agoBeen using this for a while on a media center RPI3. https://github.com/dtcooper/raspotify https://github.com/dtcooper/raspotify
- jlengrand 7y agoThanks for taking the time to share :)
- bilekas 7y agoInteresting.. > 'and provides users with important metrics like their top tracks, top artists, and recently played tracks, queryable by time range' Is your feature selling point the time range ? I'm confused.. Looks like spotify has this already... EDIT: I get it now: Change the title to : Manage your own Spotify Any extra functionality ?
- thasian 7y agoNever really considered that but I guess the selling point would be the fact that users get notified when their favorite artists release new songs. My app is one of many that does song pulling but it uses the Spotify api, one means to an end. The community can add extra features: all I’ve created is something that’s possible with the Spotify api that others can branch off of
- bilekas 7y agoDon't think about selling it. If you enjoy it, keep it up and just use it as a nice playground to show off. > all I’ve created is something that’s possible with the Spotify api Yup.. In a great way. Don't put yourself down. This is cool
- setr 7y agoI'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
- thasian 7y agoRight. 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.
- bilekas 7y ago
- saagarjha 7y agoInteresting, I didn't know Spotify had an API to play music on iOS…
- sod 7y agoEvery spotify app can act as a remote control if spotify already plays on another device. E.g. if spotify plays music on a PC, then you select another song in the smartphone app, it will actually change the playback on the PC. I guess the api allows to tap into that.
- thasian 7y agoYou would have to use the iOS api if u want to do any remote playing.
- ericlewis 7y agoThey do, but it’s not as nice as it used to be (I’m not sure it was ever nice but it’s gotten worse)
- piracy1 7y agoThis is cool. I've been wanting to modify Spotify to use the WhoSampled API to auto-suggest, Amazon Prime X-ray style the songs a given song samples. Maybe i'll do it now.
- thasian 7y agoThat’s definitely possible. You can modify seeds with Spotify’s api
- hemans 7y agoCan you ELI5 I'm interested in knowing more
- cruano 7y agoAmazon Prime Video has an X-Ray feature that shows stuff like which actors are in a scene you are watching. In a lot of music is very common for Artis to use "samples", i.e. you take a small piece of a song and incorporate it into your new song. Who sampled lists every sample a song used. Take good life by Kanye West for example https://www.whosampled.com/Kanye-West/Good-Life/ https://www.whosampled.com/Kanye-West/Good-Life/ So I think what he means is using who sampled data and Spotify music to create a player where you can click x-ray and it shows you the samples from that segment of the song
- nobleach 7y agoThis is a fantastic idea! I love listening to music that samples my favorite tunes.
- bilekas 7y agoIs this all you ? Or you have some friends with you ? It's really nice for 1 person.
- thasian 7y agoOnly me
- bilekas 7y agoI'm impressed. Well done.
- bilekas 7y agoNot sure how to send a PM here, but, if this is all you, you should spend your time changing/making shit, I just was in another topic about startups and entrepreneurs. over here : https://news.ycombinator.com/item?id=21865065 https://news.ycombinator.com/item?id=21865065 You kinda fit the bill of : yeah I do it because I can. Much love
- thasian 7y agoGood eye! I’m really into entrepreneurship: starting a podcast next year and going to do validation on an idea I have before I start building an mvp.
- Bootwizard 7y agoHey man. This is awesome stuff. I'm actually an entrepreneur as well building a social music app. Email me if you're interested, I can tell you more about it. A lot of the initial work will be using the Spotify API and others to aggregate musician data. I've registered the LLC and my cofounder and I have been brainstorming the software, but haven't really started anything yet. Have been too busy with the holidays and vacation. Edit: email is in my about
- bilekas 7y agoIt's super late over here, but I would love to hear more from you. If there's anyway here let me know.
- 1wheel 7y agoI'm working on a web player ripping off the winamp UI. https://roadtolarissa.com/winampify https://roadtolarissa.com/winampify
- dehrmann 7y agoThere's also Spotiamp. Not sure if it it still works.
- airstrike 7y agoIIRC The name got wrongly mixed up with some people hacking the Spotify API to boost their songs' play count and I think the project ultimately died because of that rep A truly tragic loss IMHO
- dehrmann 7y agoFound this: https://web.archive.org/web/20150412135856/http://news.spotify.com/us/2013/12/20/spotiamp-long-live-the-llama/ https://web.archive.org/web/20150412135856/http://news.spoti...
- joecool1029 7y agoNah, ludde wrote spotiamp while working for Spotify. He's same guy that wrote utorrent and tunsafe (unofficial windows wireguard app). I believe it was a one-off project. There was a security vulnerability in the latest version of the app, but spotify fixed server-side and the older versions were not affected. There was an unrelated spotiamp project that I think was a winamp plugin, that's the bad one. Spotiamp still mostly works but libspotify clients are deprecated, so search is broken and you need to jam spotify url's in to add music.
- airstrike 7y agoSupport for classic skins is what will make this a hit
- rzzzt 7y ago
- dickeytk 7y agoSomeone should rebuild turntable.fm using Spotify
- uncletaco 7y agoI think somebody did. Go on Twitter and put turntable.fm in your tweet. They'll come calling. I otherwise don't remember their name.
- cpdt 7y agoI think jqbx.fm is what you’re looking for. Only works with Spotify Premium from what I’m aware though.
- jason_zig 7y agoYeah I did this in my own way - it’s not an exact clone but it’s heavily inspired by ttfm. I built https://www.jqbx.fm https://www.jqbx.fm check it out - would love your feedback :)
- dickeytk 7y agoIt’s awesome. Definitely going to be using this a lot once the break is over. Thank you!
- fao_ 7y agoTangentially related - I wrote a C library for spotify's web api: https://gitlab.com/finnoleary/spotifyc https://gitlab.com/finnoleary/spotifyc I've been working on the cli client and shuffling things about directory wise so I don't think it compiles anymore atm. But the library works fine. Actually in retrospect I think I might revert and splt them into separate repos...
- thasian 7y agoMust've been a lot of work. I considered writing a library for the Web API in Swift, but there's just too much maintenance. There were also some weird bugs I encountered when parsing JSON like the time stamps being in the wrong format.
- fao_ 7y agoYeah. I just leave the json parsing up to the caller partly as a simplification, but also because I might accidentally discard data they want (Like, ideally that should never happen but our world is not ideal). The only thing it wraps is the authentication (to make life easier), and the web request. The C code is generated from a small python script that's generated directly from the documentation so it's relatively easy to keep up-to-date, the sacrifice is it is a bit more fragile than I like.
- bathtub365 7y agoThis is super interesting. I worked with Spotify’s original C SDK on iOS about 6 years ago. We ran into some issues with it aggressively loading playlists and metadata and running out of memory on large accounts. Some years later they put out a new iOS SDK that fixed all of the issues and was generally more of a native-feeling SDK on iOS, long after the project had been scrapped. Is this at all related or inspired by their original C SDK?
- haolez 7y agoIt would be nice if their API provided endpoints for Spotify for Artists. There is a lot of opportunity there to make apps that support musicians and labels.
- thasian 7y agoI think I get what you're saying: endpoints that artists can use that would be beneficial towards their brand.
- jedimastert 7y agoTo clarify for OP, "Spotify for Artists" is the Spotify app that artists use for analytics and the like.
- mendelmaleh 7y agoIs this an actual Spotify app that streams music or can you just control music playing on other devices/apps (like the cli UI's)?
- thasian 7y agoNone of the above. My app pulls in music using Spotify’s api. To stream music, it redirects you to the Spotify app.
- anamexis 7y agoWhat does “pull in” mean here?
- thasian 7y agoRetrieves music from Spotify's database based on a set of parameters.
- anamexis 7y agoAs in, actual audio? Or metadata?
- thasian 7y agoPulls in metadata. I use the metadata's external url to open the track in spotify.
- newscracker 7y agoIt would’ve been better if you had answered the question clearly at the first instance. This thread seemed like playing 20 questions.
- shhsshs 7y ago“To stream music, it redirects you to the Spotify app.” Seemed pretty obvious to me.
- hemans 7y agoCould you ELI5 I'm interested in trying this out. Thanks
- haecceity 7y agoI 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?
- snissn 7y agoHi! 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 transiently to play to this specific user.
- bransonf 7y agoI 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.
- Macha 7y agoThe 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.
- verisimilitudes 7y agoMy 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?
- djsumdog 7y agoApple 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).
- Wowfunhappy 7y agoIf there's a single author, they own ultimate copyright to the code and can submit it to the app store under a different license.
- hsitz 7y agoJust to clarify for the developer, thasian, because you have all rights in the code you can license it differently to different users. The version on github will be gpl; you presumably could have different license for app store purchasers. I think the ios port of Vim is done this way, it's github link is https://github.com/terrychou/iVim https://github.com/terrychou/iVim . Not sure if that's actually the way terrychou did it, but surely you could ask him about it.
- thasian 7y agoIn that case, what license should I change to? As long as others who want to release an app based on my source code consults me about it, I will let them.
- alpb 7y ago@dang Maybe add Show HN: prefix?
- nsomaru 7y agoOT: does anyone know why an existing playlist would suddenly become something comepletwly different? I used to listen to a Carnatic Classical playlist (Here’s a playlist for you… Carnatic Classical by Spotify https://open.spotify.com/playlist/37i9dQZF1DWZqTcNLmb3sH?si=mBRrBkjiS2KjOEMEyn6e8g https://open.spotify.com/playlist/37i9dQZF1DWZqTcNLmb3sH?si=...) and now it’s just changed to something completely different. Honestly this made me want to leave!
- tastroder 7y agoI don't think playlists are market specific so I'd guess that was either just human error or some automated script on Spotify's part going wrong. Google cache confirms that the same playlist ID was used for the one you are looking for.
- tjoff 7y agoSpotify curated playlists are often dynamic - they will often get updated or completely redone every once in a while. I guess that can be a feature but it is not how I listen to music. If I find a playlist I like, either from spotify or somewhere else, I make sure to make a local copy of that playlist in my account to make sure it doesn't change. Because when you add such a playlist you don't copy it, you subscribe to it. (Ctrl+a to select all songs, ctrl+c, make new playlist, ctrl+v. Might be an even easier and more direct way but I don't have spptify in front of me).
- cumwolf 7y agolooks like you're using the web api instead of the IOS sdk? any reason for that? is the ios sdk not in swift yet ? It was a pain to setup the last time i looked at it.
- thasian 7y agoThe documentation for the iOS Sdk is terrible. It's also in Obj-c. The Web API is pretty clear and we all love JSON. The only thing I could see myself using the iOS Sdk for is remote playing.
- maayank 7y agoTangentially related, does the Linux spotify app provides any additional features to the web-based client?
- d--b 7y agoWhy isn’t Spotified concerned about people making apps that rip their content? Is audio piracy not a thing anymore?
- jaysh 7y agoSpotify are not enabling audio piracy by much because they don't provide an audio stream for songs via their API (beyond a short sample).
- deleted 7y ago[deleted]
- meddy 7y agoIt seems like they've used RXswift for making this app. Honestly, Reactive Programming still looks like magic for me, is it worth it to abandon the old-school MVC and start learning that concept? Why should I start my new projects with RX?