Thursday, December 15, 2011

Deciphering the Spotify Apps API

So, Spotify Apps has been launched and I presume a lot of developers are trying to figure out how to use the API that comes with it. The documentation is kind of a light read and doesn't really tell us how to use the API or what methods we can access through it. I wrote a function that recursively iterates through the sp object and prints its properties and functions, in order to see what's actually there. This is the result:

object core
string country
undefined user
undefined product
undefined isApplicationFocused
boolean developer
undefined isDebugMode
object library
number totalPlaylists
number totalAlbums
number totalArtists
number totalTracks
function removeEventListener() { [native code] }
function createPlaylistGroup() { [native code] }
function createPlaylist() { [native code] }
function getPlaylists() { [native code] }
function removePlaylist() { [native code] }
function getTracks() { [native code] }
function getAlbums() { [native code] }
function setFilter() { [native code] }
function addPlaylist() { [native code] }
function getArtists() { [native code] }
function addEventListener() { [native code] }
function movePlaylist() { [native code] }
string language
function getAbTestGroup() { [native code] }
function logClientEvent() { [native code] }
function getArguments() { [native code] }
function addEventListener() { [native code] }
function _set_body_size() { [native code] }
function activate() { [native code] }
function getAuthToken() { [native code] }
function getMetadata() { [native code] }
function internalCrash() { [native code] }
function removeEventListener() { [native code] }
function getPlaylist() { [native code] }
function getLastfmCredentials() { [native code] }
function browseUri() { [native code] }
function getLoginMode() { [native code] }
function suggestSearch() { [native code] }
function getAnonymousUserId() { [native code] }
function search() { [native code] }
function searchEx() { [native code] }
function parseHermesReply() { [native code] }
function setLastfmCredentials() { [native code] }
function getHermes() { [native code] }
function registerSchema() { [native code] }
function readFile() { [native code] }
function getStarredPlaylist() { [native code] }
function getLinkType() { [native code] }
function spotifyUriToHttpLink() { [native code] }
function spotifyHttpLinkToUri() { [native code] }
function getLinks() { [native code] }
function serializeToString() { [native code] }
function showClientMessage() { [native code] }
function showAuthDialog() { [native code] }
function getTemporaryPlaylist() { [native code] }
function createUserLink() { [native code] }
string uri
object desktop
undefined dropdown
function showContextMenu() { [native code] }
object social
undefined serviceStates
undefined relations
function removeEventListener() { [native code] }
function getUserByFacebookUid() { [native code] }
function showSharePopup() { [native code] }
function getRecentFacebookUsers() { [native code] }
function getUserByUsername() { [native code] }
function connectToFacebook() { [native code] }
function sendToInbox() { [native code] }
function getFavorites() { [native code] }
function getToplist() { [native code] }
function addEventListener() { [native code] }
function hideSharePopup() { [native code] }
object trackPlayer
function setContextCanSkipPrev() { [native code] }
function removeEventListener() { [native code] }
function setVolume() { [native code] }
function playTrackFromContext() { [native code] }
function canChangeRepeat() { [native code] }
function setShuffle() { [native code] }
function setContextCanShuffle() { [native code] }
function seek() { [native code] }
function skipToPreviousTrack() { [native code] }
function getShuffle() { [native code] }
function getPlayingContext() { [native code] }
function getPlaybackControlState() { [native code] }
function getNowPlayingTrack() { [native code] }
function getVolume() { [native code] }
function setContextCanSkipNext() { [native code] }
function skipToNextTrack() { [native code] }
function playTrackFromUri() { [native code] }
function setContextCanRepeat() { [native code] }
function getRepeat() { [native code] }
function canChangeShuffle() { [native code] }
function getIsPlaying() { [native code] }
function setRepeat() { [native code] }
function setIsPlaying() { [native code] }
function addEventListener() { [native code] }
object whatsnew
function reportAdStarted() { [native code] }
function getPartner() { [native code] }
function reportAdClicked() { [native code] }
function reportAdStopped() { [native code] }
function fetchAd() { [native code] }
object installer
function getApplicationState() { [native code] }
function removeEventListener() { [native code] }
function addEventListener() { [native code] }
function addApplicationFavorite() { [native code] }
function isApplicationFavorite() { [native code] }
function removeApplicationFavorite() { [native code] }

I haven't had the time to actually figure out what parameters to pass to each function, but I still find it kind of helpful. What I really want to know is what events I can bind listeners to, through addEventListener(), besides the "playerStateChanged" event, shown in the example.