Spotify预览API搜索曲目和专辑

我目前正在尝试将Spotify应用程序迁移到新的1.0版本的api。

我遇到搜索问题。 我想用搜索字符串搜索目录,并从搜索结果中获取所有曲目信息,艺术家姓名和专辑名称。 但是,搜索结果中似乎没有包含相册名称(仅URI:s)。

之后我是否必须异步加载所有结果轨道的所有专辑名称? 如果可能,我想避免这种情况。

我正在这样搜索

var search = Search.search(searchString);
search.tracks.snapshot().done(function(snapshot) {
    var results = snapshot.toArray();
    // no album names in the results tracks
}).fail(function() {
    console.error('Error retrieving snapshot');
});

在API 1.0中,一些数据不会自动检索。 这意味着,理想情况下,您只能获取所需的数据,减少数据流量并提高性能。 缺点是您需要自己编写该曲目阵列和专辑名称,以异步方式获取数据。

对于每首曲目,您想要获取其专辑的名称。 这是你将如何做到的:

var maxTracks = 15;
var search = Search.search(searchString);
search.tracks.snapshot(0, maxTracks).done(function(snapshot) {
  snapshot.toArray().forEach(function(result) {
    result.album.load('name').done(function(album) {
      // here you have access to the album.name attribute
    });
  });
}).fail(function() {
  console.error('Error retrieving snapshot');
});

这种方法的问题在于,您将以与轨道出现顺序不同的顺序处理数据。 如果您需要保留订单,您可以使用Promise对象:

var maxTracks = 15;
var search = Search.search(searchString);
search.tracks.snapshot(0, maxTracks).done(function(snapshot) {
  var promises = [];
  snapshot.toArray().forEach(function(result) {
    promises.push(result.album.load('name'));
  });
  models.Promise.join(promises)
    .done(function(albums) { console.log('Loaded all albums.', albums); })
    .fail(function(albums) { console.log('Failed to load at least one album.', albums); });
}).fail(function() {
    console.error('Error retrieving snapshot');
});

使用Promise数组将保持与轨道相同的顺序。

链接地址: http://www.djcxy.com/p/55569.html

上一篇: Spotify preview API search track and album

下一篇: api return 404