spotify-websocket-api
spotify-websocket-api copied to clipboard
Spotify Websocket API is a fully open source Spotify library based on the WebSocket API used in the Spotify Web beta
Spotify WebSocket API 
Getting started
NOTE: This API will only work with paid Spotify accounts. I'm perfectly fine with this restriction and won't be attempting to circumvent it, nor will I merge patches that do. It'd only end in a game of cat and mouse which is a waste of everyone's time. If you like Spotify, buy a Premium account and tell the industry that it's a great payment model for music.
Firstly, try out the demo script to make sure you've got the dependencies installed properly:
- requests >= 1.0
- ws4py
- protobuf
- lxml
Then you can try one of the example scripts
cd examples python blocking.py <username> <password> album
This should show an album title and a list of track titles for it.
Using the API is pretty simple, here's the basics:
sp = Spotify("username", "password")
results = sp.search("carly rae jepsen")
for track in results.getTrack()
print track
Experimental client
Included is an experimental client called respotify, based on this API. It's almost identical to despotify-simple in terms of functionality. Be sure to have the following additional dependencies installed:
- cherrypy
- web.py
Once you've installed these, you can run the client like this:
cd clients/respotify
./respotify.py <username> <password>
_ ___
_ (_) / __)
____ _____ ___ ____ ___ _| |_ _ _| |__ _ _
/ ___) ___ |/___) _ \ / _ (_ _) (_ __) | | |
| | | ____|___ | |_| | |_| || |_| | | | | |_| |
|_| |_____|___/| __/ \___/ \__)_| |_| \__ |
|_| (____/
info shows account information
play plays the track with given index
help shows help information
stop stops any currently playing track
album view the album for a specific track
quit quits the application
artist view the artist for a specific track
list lists your rootlist or a playlist
uri lists metadata for a URI (album)
next plays the next track in the current playlist
current shows the current playlist we're playing
prev plays the previous track in the current playlist
>
What's implemented?
- Login via username/password
- Metadata retrieval (track/album/artist)
- Playlist and rootlist support (add/remove tracks, creation/renaming/deletion)
- Toplists for both regions and users (track/album/artist only)
- Starring/unstarring tracks
- MP3 playback URL retrieval
What's NOT implemented?
- Inbox (not currently supported via the web client it appears)
- Subscribing to playlist updates
- Social functionality
TODO
Want to help out? Great! Here's a a list of things that need doing or improving:
- An example graphical client using the API (preferably multi-platform, OSX/Linux)
- Anything from the unimplemented list above
Want to write a library in another language?
If you'd like to help out with this library or write a new one for another language do let me know and pop into #despotify on EFnet. I'm aware of people working on Java and Node.js libraries currently, more are of course welcome.