Я пытаюсь использовать функцию Musixmatch TrackSearch NPM, чтобы получить уникальный идентификатор TrackID, который затем можно использовать в конечной точке Track.lyrics. Однако, когда я передаю определенные названия песен/исполнителей, набор результатов не включает в себя правильные совпадения, даже если я расширяю поиск, чтобы включить много результатов.
Пожалуйста, смотрите мой код ниже:
const music = require('musicmatch')({ apikey: "MY_API KEY" });
music.trackSearch({ q: "Drake - God Plan", page: 1, page_size: 3 })
.then(function (data) {
console.log(data.message.body.track_list);
}).catch(function (err) {
console.log(err);
})
Эта функция возвращает две песни под названием "Empire" Рика Росса и Дрейка и одну караоке-версию песни "God Plan", но ничего похожего на оригинальную версию (которая в настоящее время № 3 на Billboard Hot 100). Мне трудно поверить, что в базе данных Musixmatch отсутствует "План Бога", поэтому я, должно быть, делаю что-то не так!
Корень проблемы заключается в том, что вы используете параметр q
поиска. В документах q
выполняет поиск:
в названиях треков, исполнителях, текстах песен
поэтому, если ваш поиск q: "drake"
вы вернетесь к любым результатам, которые включают Drake в Тексты Название, Художники, ИЛИ, которые больше, чем вы ищете.
Есть несколько вещей, которые вы, вероятно, можете сделать, чтобы обойти это, но на высоком уровне проще всего использовать f_artist_id
поиска f_artist_id
и использовать его для указания artist_id (для этого может потребоваться отдельная функция, которая находит artist_id). НАПРИМЕР:
music.trackSearch({ q: "Drake - God Plan", f_artist_id: "<drake artist id>"...
Другой вариант - установить значение page_size
действительно высоким и фильтровать результаты, но это кажется... громоздким.