Hexxeh / spotify-websocket-api

Spotify Websocket API is a fully open source Spotify library based on the WebSocket API used in the Spotify Web beta
396 stars 67 forks source link

Spotify WebSocket API Build Status

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:

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:

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?

What's NOT implemented?

TODO

Want to help out? Great! Here's a a list of things that need doing or improving:

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.