javascript - Musixmatch API 轨道搜索功能

标签 javascript node.js npm musixmatch

我正在尝试使用 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/

相关文章:

javascript - bootstrap 后缀不能与 firefox 一起正常工作

file - 在 node.js 中获取上传的文件名/路径

mysql - Node.js 和 socket.io - 在推送数据库之前累积数据

javascript - 如果在 Vaadin 14 中调用 NPM 包的函数,则会出现 ReferenceError

Ios-deploy 安装不起作用 - macOS High Sierra (10.13.5)

javascript - Node JavaScript 文件和全局命名空间

javascript - vuetify.js v-select 最小高度限制?

javascript - 使用 next 和 previous 操作 slider

node.js - 如何修复 'fs: re-evaluating native module sources is not supported' - 优雅的 fs

javascript - 使用 sails.js 编写密码重置