pythonechonest

Echonest :: song duration


I want my Echonest response to get song duration, which is supposed to be part of the audio_summary.

params = {
        'type':'artist-radio', 
        'artist':artist, 
        'results': 3,
        'bucket' : ['id:spotify-WW', 'tracks'],
        'limit': True
    }
    response = en.get('playlist/static', **params)
    songs = response['songs']

so, to get song duration, which key/value should I use in the example above?

NOTE: the wrapper being used is pyen


Solution

  • durationis an analysis found in song/profile, and not in playlist/static method, so we need a second response from the api.

    this is one way of obtaining each song duration (as well as printing artist_name and song_title):

        #get 'playlist response'
        response_playlist = en.get('playlist/static', **params)
        song_playlist = response_playlist['songs']
    
        if len(song_playlist) > 0:
    
            for i, song in enumerate(song_playlist):
                #we need to track each song id
                song_id = song_playlist[i]['id'] #ok
                #in order to get song 'duration', we need to access 'song/profile response'
                #and pass the id as an argument to 'audio_summary'
                response_profile = en.get('song/profile', id=song_id, bucket="audio_summary")
                song_profile = response_profile['songs']
                dur = song_profile[0]['audio_summary']['duration']      
                print dur                           
                #now we access each song 'foreign_id', which is playable by, say, Spotify 
                for track in song:
                    track = song['tracks'][i]
                    track_id = track['foreign_id'].replace('-WW', '')           
                print '{0} {2} {1}'.format(i, song['artist_name'], song['title'])