1

我正在尝试使用 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 & Drake 的两首名为“Empire”的歌曲和歌曲“God's Plan”的一首卡拉 OK 版本,但与原始版本(目前在 Billboard Hot 100 中排名第三)没有任何相似之处。我很难相信 Musixmatch 数据库中不存在“上帝的计划”,所以我一定是做错了什么!

4

2 回答 2

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

于 2019-09-18T13:31:50.250 回答
0

您的问题的根源是您正在使用q搜索参数。根据文档q正在搜索:

在曲目标题、艺术家、歌词中

因此,如果您的搜索是q: "drake"您将获得包含 Drake 在标题、艺术家或歌词中的任何结果,这超出了您的搜索范围。

您可以做几件事来解决这个问题,但在高层次上,最简单的可能是利用f_artist_id搜索属性并使用它来指定艺术家 ID(这可能需要您有一个单独的函数来查找艺术家 ID )。例如:

music.trackSearch({ q: "Drake - God's Plan", f_artist_id: "<drake's artist id>" ...

另一种选择是设置你的page_size真正高并过滤结果,但这似乎......很麻烦。

于 2018-06-11T17:16:54.373 回答