/spotify-websocket-api

Spotify Websocket API is a fully open source Spotify library based on the WebSocket API used in the Spotify Web beta

Primary LanguagePython

Spotify WebSocket API Build Status

Getting started

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.