我正在尝试使用 Musixmatch TrackSearch NPM 函数来获取唯一的 TrackID,然后可以在 Track.lyrics 端点上使用该 ID。但是,当我传递某些歌曲标题/艺术家时,即使我扩大搜索范围以包含许多结果,结果集也不包含正确的匹配项。
请参阅下面的代码:
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 上排名第 3)没有任何相似之处。我很难相信 Musixmatch 数据库中不存在“上帝的计划”,所以我一定做错了什么!
最佳答案
问题的根源是您正在使用 q
搜索参数。根据 docs , q
正在搜索:
within track titles,artists,lyrics
如果您的搜索是 q: "drake"
您将得到标题、艺术家或歌词中包含 Drake 的任何结果,这超出了您正在寻找的内容。
您可以采取一些措施来解决此问题,但从总体上看,最简单的可能是使用 f_artist_id
search 属性并使用它来指定artist_id(这可能需要您有一个单独的函数来查找artist_id)。例如:
music.trackSearch({ q: "Drake - God's Plan", f_artist_id: "<drake's artist id>" ...
另一个选项是设置您的 page_size
非常高并过滤结果,但这似乎......很麻烦。
关于javascript - Musixmatch API 轨道搜索功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50802708/