Spoitfy和Echo Nest API不匹配,如何解决?

时间:2015-10-27 17:03:39

标签: spotify echonest

我正在使用Spotify和Echo Nest API来获取有关歌曲的音频信息。基本流程是:

  1. 使用曲目标题和艺术家姓名
  2. 搜索Spotify API的歌曲
  3. 从回复中获取该曲目的Spotify网址
  4. 使用Spotify ID
  5. 查询Echo Nest API以获取音频摘要

    这已经很长时间了。但是在过去的几个月里,我注意到使用给定的Spotify ID在Echo Nest API中找不到越来越多的曲目。

    以下是今天的例子。 Sufjan Stevens的歌曲“芝加哥”

    在Spotify上搜索。http://ws.spotify.com/search/1/track.json?q=artist:sufjan%20track:chicago 第一个结果为我们提供了spotify ID:spotify:track:7Bo0xLcXWx3pdhqwthqGaz

    查询此Spotify ID的Echo Nest:http://developer.echonest.com/api/v4/song/profile?api_key=V91CRTEB0IFMAJBMB&track_id=spotify:track:7Bo0xLcXWx3pdhqwthqGaz&bucket=audio_summary

    (对于此网址,我使用了他们的示例API密钥,因此您可以看到结果。当然,在我的应用中,我使用的是自己的API密钥。)

    回复是"The Identifier specified does not exist: spotifyv2-ZZ:track:spotify:track:7Bo0xLcXWx3pdhqwthqGaz"

    但是Echo Nest显然确实在他们的数据库中有这个轨道,因为我可以搜索它,甚至获得Spotify Ids:http://developer.echonest.com/api/v4/song/search?api_key=V91CRTEB0IFMAJBMB&format=json&results=1&artist=sufjan&title=chicago&bucket=id:spotify&bucket=tracks(但是Echo Nest返回的Spotify Id是与Spotify返回的不一样。)

    我有什么方法可以解决这个问题吗?

1 个答案:

答案 0 :(得分:3)

我注意到同样的问题 - 我所做的就是使用Echo Nest的搜索,这实际上允许你同时做两件事。少一个API调用!

for track in search_tracks:
    results = nest.get('song/search', artist=track['artist'],
        title=track['title'], bucket='audio_summary')
    if results['songs']:
        tracks.append(results['songs'][0])