Musixmatch API TrackSearch功能

时间:2018-06-11 16:57:35

标签: javascript node.js npm

我尝试使用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数据库中不存在,所以我一定做错了!

2 个答案:

答案 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_”输入参数将更快并且使用更少的带宽。

相关问题