Echonest ::歌曲持续时间

时间:2016-04-30 21:04:13

标签: python echonest

我希望我的while ($categories = tep_db_fetch_array($categories_query)){ $categoryId = $categories['categories_id']; $shortName = $shortNames[$categoryId]; $href = tep_href_link(FILENAME_DEFAULT,'cPath='.$categoryId); echo '<a href="'.$href.'">$shortName</a>'; } Echonest获得response,这应该是song duration的一部分。

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'] ,我应该在上面的示例中使用哪个duration

注意:正在使用的包装是key/value

1 个答案:

答案 0 :(得分:0)

durationsong/profile中的分析,而不是playlist/static方法,因此我们需要来自response的第二个api

这是获取每首歌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'])