Spotify 和 Echo Nest API 不匹配,如何修复?
Posted
技术标签:
【中文标题】Spotify 和 Echo Nest API 不匹配,如何修复?【英文标题】:Spoitfy and Echo Nest API Mismatches, How to Fix? 【发布时间】:2016-01-27 05:29:33 【问题描述】:我正在使用 Spotify 和 Echo Nest API 来获取有关歌曲的音频信息。基本流程是:
-
使用 Spotify 的 API 使用曲目标题和艺术家姓名搜索歌曲
从响应中获取曲目的 Spotify URL
使用 Spotify ID 查询 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
(对于这个 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(但是 Echo Nest 返回的 Spotify Id 不是与 Spotify 返回的相同。)
我有什么办法可以解决这个问题吗?
【问题讨论】:
【参考方案1】:我注意到了同样的问题——我所做的是改用 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])
【讨论】:
我终于开始着手实施这个解决方案了。我发现问题也反过来了——我会从 EchoNest API 搜索中得到正确的结果,但它通常不会包含 Spotify 曲目 ID。所以我必须在 Spotify 上搜索才能找到曲目。我想双管齐下的搜索是唯一的方法。以上是关于Spotify 和 Echo Nest API 不匹配,如何修复?的主要内容,如果未能解决你的问题,请参考以下文章
Echo Nest 曲目 ID 到 Spotify URI 的转换
可以根据 Spotify Track ID 创建 Echo Nest Taste Profile 吗?
Echo Nest API:将用于检查速率限制的 curl 命令转换为 c#