Spotify 和 Echo Nest API 不匹配,如何修复?

Spoitfy and Echo Nest API Mismatches, How to Fix?

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

  1. 使用曲目名称和艺术家姓名在 Spotify API 中搜索歌曲
  2. 从响应中获取曲目的 Spotify URL
  3. 查询 Echo Nest API 以获取音频摘要,使用 Spotify ID

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

这是今天的一个例子。 Sufjan Stevens 的曲目 "Chicago"

在 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

(为此 URL 我使用了他们的示例 API 键,所以你可以看到结果。当然在我的应用程序中我使用我自己的 API 键。)

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

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

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

我注意到同样的问题 - 我所做的是改用 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])