2016-04-30 73 views
3

我想我的Echonestresponse得到song duration,这应该是audio_summary的一部分。Echonest ::歌曲时长

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

所以,要让歌曲duration,这key/value我应该在上面的例子中使用?

:正在使用的包装物是pyen

回答

0

duration不在playlist/static方法在song/profile中发现的分析,并且,因此,我们需要从api第二response

这是获得每首歌曲的duration单程(以及印刷artist_namesong_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'])