使用Last.fm API通过MBID获取歌曲元数据遇问题求助
Troubleshooting Last.fm Track.getInfo API Calls Using MusicBrainz ID (MBID)
我之前在做类似的Last.fm API集成时,也遇到过用MBID调用track.getInfo失败的情况,结合你之前用曲目名称+艺人信息能成功的背景,咱们来一步步排查可能的问题:
验证MBID的有效性与关联性
- 首先确认你使用的
bfcc6d75-a6a5-4bc6-8282-47aec8531818这个MBID格式正确(标准MBID是36位字符串,包含4个连字符),有没有复制时多了空格或者漏了字符。 - 另外,存在一种情况:某个曲目在MusicBrainz里有记录,但Last.fm的数据库没有同步关联这个MBID,这种情况下直接用MBID调用就会返回空或者错误。你可以先在Last.fm的网页端搜索该曲目,看看页面里是否显示对应的MBID,来确认两者是否关联。
- 首先确认你使用的
修正请求URL的格式问题
- 你给出的请求里出现了
&,这是HTML转义后的字符,实际发送HTTP请求时需要替换成普通的&符号。正确的请求URL应该是:http://ws.audioscrobbler.com/2.0/?method=track.getInfo&api_key=INSERT_API_KEY&format=json&mbid=bfcc6d75-a6a5-4bc6-8282-47aec8531818 - 同时务必确认你已经将
INSERT_API_KEY替换成了自己的有效Last.fm API密钥,密钥无效会直接返回权限类错误。
- 你给出的请求里出现了
解析API返回的错误提示
- 发送请求后,先查看JSON响应里的
error和message字段,这是Last.fm给出的最直接问题提示:6: Invalid parameters:大概率是MBID格式错误,或者参数缺失10: Invalid API key:API密钥不正确或未激活3: Invalid method signature supplied:如果启用了签名验证但签名错误会出现这个(不过纯GET请求不带签名的话一般不会遇到)2: Service offline:Last.fm服务临时维护,稍后重试即可
- 发送请求后,先查看JSON响应里的
启用兜底参数提升成功率
- 要是确实遇到Last.fm未同步MBID的情况,你可以在请求里同时传入MBID、艺人名称和曲目名称参数。API会优先尝试用MBID匹配,匹配失败时自动降级用艺人+曲目信息获取数据,示例请求:
http://ws.audioscrobbler.com/2.0/?method=track.getInfo&api_key=INSERT_API_KEY&format=json&mbid=bfcc6d75-a6a5-4bc6-8282-47aec8531818&artist=你的艺人名称&track=你的曲目名称
- 要是确实遇到Last.fm未同步MBID的情况,你可以在请求里同时传入MBID、艺人名称和曲目名称参数。API会优先尝试用MBID匹配,匹配失败时自动降级用艺人+曲目信息获取数据,示例请求:
内容的提问来源于stack exchange,提问作者nick.tdr
相关产品推荐
相关产品推荐

