我正在尝试使用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”歌曲的Karaoke版本,但与原始版本(目前在Billboard Hot 100中排名第三)没有相似之处。我很难相信Musixmatch数据库中不存在“上帝的计划”,所以我一定做错了!
最佳答案
问题的根源在于您使用的是q
搜索参数。根据docs,q
正在搜索:
曲目标题,艺术家,歌词中
因此,如果您搜索的是q: "drake"
,那么您将获得包含结果在内的所有结果,其中包括Drake的Title,Artists或Lyrics内容。
您可以采取多种措施来解决此问题,但总的来说,最简单的方法是利用f_artist_id
搜索属性并使用它来指定artist_id(这可能需要您使用一个单独的函数找到artist_id)。例如:music.trackSearch({ q: "Drake - God's Plan", f_artist_id: "<drake's artist id>" ...
另一个选择是将page_size
设置得很高,然后对结果进行过滤,但这似乎很麻烦。