Flying memes

Falling Stars: find one-hit wonders on Spotify

During this summer I got bored from my Spotify playlist and started hunting new songs, the task revealed harder than I thought and I end up coding a small website to achieve my goal.
Falling Stars helps you find one-hit-wonders and create a Spotify playlist out of those songs.

The most interesting part, apart from discovering the nice Spotify API was having to deal with an asynchronous loop; I had basically to loop over the Related Artists of a song and search if one of them is a one-hit-wonder. If not start again with the Related Artists of the first of the previous ones.

To implement the loop I decided to use Promises. Promises are a new way to deal with asynchronous operation without using callbacks. Basically a Promise is an object with a state that changes when the associated asynchronous operation succeed or fails. A Promise can store functions that needs to be executed when the asynchronous operation completes and, best of all, promises can be chained.

Here’s how I ended up with the loop:

  run: function(){
    var self = this;
    if( self.queue.length > 0 && self.playlist.length < self.limit ){
      var playlist_name = 'Falling Stars - ' + new Date();
      self.api('POST','/users/' + self.userId + '/playlists', {
        name: playlist_name,
        public: false
        self.api('POST','/users/' + self.userId + '/playlists/' + + '/tracks', 
            return track.uri;
          self.message('playlist', playlist_name);

The rest of the code is available on github and the project is online here:

Tags: ,