Open source Spotify clients and development frameworks

It’s been almost a year since Despotify was first released so we figured it was time for an update on what third party, open source apps are out there.

This list is merely an overview and it’s by no means complete.  If your open source Spotify project is not listed here, feel free to mention it in the comments thread!

NOTE: All third party applications and development libraries require a Spotify premium subscription to work!

Third party Spotify clients

despotify-simple

The despotify-simple client is a pure textmode client that’s built on top of the libdespotify-simple library.

Features:

  • Playlists (list tracks, play tracks, rename, set/unset collaboration)
  • Display information about a Spotify URI
  • Play an album
  • Searching for tracks/album/artists
  • Platforms: Linux, Mac OS X
  • Author: Björn Stenberg
  • URL: http://despotify.se/source-code/
Screenshot of the despotify simple client

Screenshot of the despotify simple client

despotify

The despotify client is an ncurses based client that’s built on top libdespotify-simple. It’s been written by dstien.

Features:

  • Searching
  • Playback of tracks found in a search
  • Playlists are not supported
  • Platforms: Linux, Mac OS X
  • Author: Daniel Stein
  • URL: http://despotify.se/source-code/
The splash screen in despotify

The splash screen in despotify

View of a search result

View of a search result

polspot

Polspot is basically the same as the above despotify client, only it’s using the Spotify client library API.

Features:

  • Searching
  • Playback of tracks found in a search
  • Playlists are not supported
  • Works with either libspotify or libopenspotify
  • Platforms: Linux, Mac OS X (Mac OS X requires libopenspotify)
  • Author: Daniel Stien
  • URL: http://github.com/dstien/polspot

jotify

Jotify is a clone of the official Spotify client, written in pure Java.

Features:

The playlist view in Jotify

The playlist view in Jotify

qtify

Qtify is a GUI client that’s written in Qt (C++) that was primarily written to bring Spotify to the Nokia N900 platform (Maemo). It also works on Linux, and with Qt being a crossplatform development framework, adding support for other OSes such as Mac OS X or Windows merely requires the audio part to be ported.

Features

  • Playlists
  • Searching for tracks, artists and albums
  • Playback (play, pause, resume)
  • Qt 4.6 based minimalistic GUI
  • Uses libspotify
  • Platforms: Linux
  • Author: Robin Nilsson
  • URL: https://garage.maemo.org/projects/qtify/
The login screen in Qtify

The login screen in Qtify

The main view in Qtify, with a playlist listing and a search box

The main view in Qtify, with a playlist listing and a search box

HTS Showtime

From its homepage: “Linux based Media player for usage on HTPCs — Listen to Music, watch Photos, play DVD and Movies, watch TV, all from within the same spiffy application.

Easy to setup, no configuration files. All configuration is tuned from inside the program itself.”

Features:

HTS Showtime main view

HTS Showtime main view

GSpot

GSpot is a GTK-based GUI Spotify client for Linux.

Features:

Junpier

Juniper is a Qt-based GUI Spotify client.

Features:

SpotyXBMC

Spotyxbmc is a project to bring support for Spotify to the popular Xbox Media Center platform.

Features:

  • Integrates with XBMC
  • Supports playlists
  • Searching
  • Album, artist and toplists browsing
  • Uses libopenspotify (due to GPL licensing issues with libspotify)
  • Platforms: Linux, Mac OS X, Windows
  • Author: David Erenger
  • URL: http://spotyxbmc.tumblr.com
An early view of a Spotify search in XBMC

An early view of a Spotify search in XBMC

Album browsing in Spotyxbmc

Album browsing in Spotyxbmc

Third party Spotify client libraries

On April 7th, 2009 Spotify released libspotify, a client library that can be used to build applications around Spotify’s music streaming platform. Initially only 32-bit Linux was supported but as of January 15th, 2010 it also sports support for Linux on 64-bit platforms. Hopefully we’ll see support for even more platforms in the future.

libspotify is a closed source library  and probably needs to stay that way. Reasons for this likely include both a requirement on their part to protect the raw audio feed aswell as preventing abuse of the system that keeps track of what songs have been played so artists can get paid properly.

Since the release of despotify three different open source client libraries have been created. Their main benefits include not being dependant on what hardware platforms Spotify can actively support aswell as having permissive software licenses.

NOTE: Just as with libspotify, you need a premium subscription to be able to talk to Spotify’s platform with third party client libraries.

libdespotify-simple

Written mainly by Björn Stenberg this is a simple-to-use library for accessing Spotify. The library is synchronous in its operations and hides the complexity behind Spotify’s multiplexing protocol.

Features:

  • Playlist retrieving
  • Playlist modifications (renaming, controlling collaboration flag)
  • Searching
  • Cover art
  • Audio playback
  • Simple to use
  • Language: C
  • Platforms: Linux, FreeBSD, Mac OS X, Solaris
  • Author: Björn Stenberg and others
  • URL: http://despotify.se/source-code/

jotify

Written from scratch in pure Java, Jotify is often first to support new features found in Spotify.

Features:

libopenspotify

libopenspotify aims to be a API compatible, cross-platform drop-in replacement for libspotify, free of licesing issues with its permissive 2-clause BSD license.

Features:

  • Most things libspotify supports except playlist modification
  • API compatible with libspotify 0.0.3
  • Permissive 2-clause BSD license
  • Language: C
  • Platforms: Linux, Mac OS X, Windows
  • Author: Noah Williamsson
  • URL: http://github.com/noahwilliamsson/openspotify

Bindings for Spotify client libraries

Jørgen P. Tjernø has written spytify, Python bindings for libdespotify-simple.

Jesper Särnesjö has written greenstripes, MIT-licensed Ruby bindings for libspotify.

GitHub user jptix started writing Rubi-FFI bindings for libspotify with spotifyrb.

Doug Winter has written pyspotify, Python bindings for libspotify.

Jonas Larsson has written libspotify-sharp, C# bindings for libspotify.

During Music Hack Day in Stockholm, Rasmus Andersson started spotifycocoa, a project to bring Cocoa style bindings for libspotify.

GitHub user romnes has written libqspotify, Qt bindings for libspotify.

  • pablog
    There's a typo in the polspot repository url.
    The correct url is http://github.com/dstien/polspot

    Great post :)
  • John
    I really liked the looks of the old despotify client :(
  • I'm a premium user of Spotify, so I'm entitled to offline playlists with up to 3,333 tracks. I could use my phone for that, but I'd rather use my Sansa Clip (24 GB) for it. Maybe use rockbox as alternative firmware for the mp3 player, and use despotify music decryption from within rockbox to play the downloaded/offline playlists?

    Any ideas on that?
  • code
    I wanted to try despotify but after the "The despotify client is an ncurses based client" I don't think I will ....
  • Max Sjögren
    Any comment on the new end user agreement from Spotify that limits the possibility to

    "reverse-engineer, decompile, disassemble, modify or create derivative works based on the Spotify Software Application or the Spotify Service or any part thereof"

    It's under section 12.

    http://www.spotify.com/uk/legal/end-user-agreement/plain/

  • Anyone working on support for the q9 streams? Being users are premium members anyway?
  • What about a randomizer for the despotify-simple? So you start despotify-simple and then:

    $list
    $list [choose a number]
    $shuffle
    $play

    BTW: Great effort. I have despotify-simple running in the background as I write this.
  • PJ
    Plex Media Center ( http://www.plexapp.com/ ) also has a Spotify plugin powered by despotify
  • benji
    Great list!

    But all I want is still some added features to the despotify client, like support for playlists and being able to create own queuelist etc. A great ncurses client would be great indeed.
  • User
    There's a .NET library based on Jotify:
    http://www.sharpspot.org/
blog comments powered by Disqus