data_garden data_garden - 1 year ago 59
Python Question

Echonest :: song duration

I want my

to get
song duration
, which is supposed to be part of the

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

so, to get song
, which
should I use in the example above?

NOTE: the wrapper being used is


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'])