我尝试使用Musixmatch TrackSearch NPM功能获取唯一的TrackID,然后可以在Track.lyrics端点上使用。但是,当我传入某些歌曲标题/艺术家时,结果集不包含正确的匹配,即使我扩大搜索范围以包含许多结果。
请参阅下面的代码:
const music = require('musicmatch')({ apikey: "MY_API KEY" });
music.trackSearch({ q: "Drake - God's Plan", page: 1, page_size: 3 })
.then(function (data) {
console.log(data.message.body.track_list);
}).catch(function (err) {
console.log(err);
})
此功能返回两首标题为“帝国”的歌曲。作者:Rick Ross&德雷克和一首卡拉OK版本的歌曲“上帝的计划”#39;但没有类似于原始版本(目前Billboard Hot 100上的#3)。我发现很难相信上帝的计划'在Musixmatch数据库中不存在,所以我一定做错了!
答案 0 :(得分:0)
您的问题的根源在于您正在使用q
搜索参数。根据{{3}},q
正在搜索:
在曲目标题,艺术家,歌词
中
因此,如果您的搜索结果为q: "drake"
,那么您将在标题,艺术家或歌词中找回包含德雷克的任何结果,这些结果超出了您的搜索范围。
您可能会做一些事情来解决这个问题,但在最高层次上,最简单的可能是使用f_artist_id
搜索属性并使用它来指定artist_id(这可能是要求你有一个找到artist_id的单独函数。 EG:
music.trackSearch({ q: "Drake - God's Plan", f_artist_id: "<drake's artist id>" ...
另一种选择是将你的page_size
设置得很高并过滤结果,但这看起来很麻烦。
答案 1 :(得分:0)
drldcsta答案的轻微继续:以下curl命令立即返回1首一首歌曲:
curl --url“ http://api.musixmatch.com/ws/1.1/track.search?q_artist=Drake&q_track=God%20Plan&apikey=”
部分卷曲输出: {“ message”:{“ header”:{“ status_code”:200,“ execute_time”:0.010561227798462,“ available”:1},“ body”:{“ track_list”:[{“ track”:{“ track_id”: 153434470,“ track_name”:“上帝的计划”,“ track_name_translation_list”:[],“ track_rating”:87,“ commontrack_id”:80272661,“ instrumental”:0:“ explicit”:1,“ has_lyrics”:1,“ has_subtitles “:1,” has_richsync“:1,” num_favourite“:7695,” album_id“:29365716,” album_name“:” Scorpion“,” artist_id“:33491453,” artist_name“:” Drake“,” track_share_url“:” https :// www
如果可以的话,我会避免使用'q'输入参数。 “ q”将花费更长时间返回数据,其他“ q_”输入参数将更快并且使用更少的带宽。