Отсутствует год / numTracks при поиске с помощью API Spotify Apps - PullRequest
1 голос
/ 17 января 2012

Я пытаюсь выполнить поиск по альбому с помощью API Spotify Apps, но в результатах отсутствуют данные. В частности, numResults всегда равно 0, а год иногда равен 0. Например:

var search = new models.Search("genre:Jazz");
search.searchTracks = false;    
search.observe(models.EVENT.CHANGE, function() {
    console.log(search.albums);
    for(var i in search.albums) {
        console.log(search.albums[i].data.year)
    }
});
search.appendNext();

Если вы посмотрите на консоль, многие альбомы возвращают 0 за год. Но если вы проверяете эти альбомы с помощью Metadata API, они успешно возвращают год. Интересно, что если вы ищете треки одновременно, вы получите лучшие результаты:

var search = new models.Search("genre:Jazz");
search.searchTracks = true;
search.observe(models.EVENT.CHANGE, function() {
    console.log(search.albums);
    for(var i in search.albums) {
        console.log(search.albums[i].data.year)
    }
});
search.appendNext();

Однако год по-прежнему отсутствует в некоторых альбомах (предположительно, альбомы, в которых не было треков, возвращены в результатах поиска из 50 треков).

У кого-нибудь есть идеи о том, как структурировать поисковый запрос, чтобы год возвращался для всех альбомов, или это, вероятно, ошибка?

(Примечание: после запуска второго примера кода для жанра первый пример кода возвращает лучшие результаты благодаря кешированию. Попробуйте его в новом жанре, и вы увидите множество нулей в год).

Ответы [ 2 ]

0 голосов
/ 10 марта 2012

Вы можете попробовать использовать models.Album.fromURI в каждом альбоме, чтобы обеспечить загрузку метаданных. Примерно так:

var search = new models.Search("genre:Jazz");
search.searchTracks = false;    
search.observe(models.EVENT.CHANGE, function() {
    console.log(search.albums);
    for(var i in search.albums) {
        var a = models.Album.fromURI(search.albums[i].uri, function(album) {
          console.log(album.year)
        }
    }
});
search.appendNext();

Я использовал подобные вещи в приложении, над которым я работал, и, кажется, помогает обеспечить полноту данных.

0 голосов
/ 23 января 2012

Убедитесь, что вы наблюдаете событие models.EVENT.CHANGE в нужном альбоме - эта информация загружается отдельно и часто лениво.

...