【问题标题】:Spotify API Getting all tracks at onceSpotify API 一次获取所有曲目
【发布时间】:2018-11-18 00:58:34
【问题描述】:

我正在尝试做一个使用 Spotify API(使用 node.js 作为服务器)的网络应用程序,但我最近遇到了一个我无法解决的问题。基本上,我想比较两个播放列表的内容,但由于 API 每个请求只提供 100 首曲目,我找不到完成这项工作的方法。我已经尝试在请求中使用循环,但似乎不起作用。

request.get(options, function(error, response, body) {
var data = [];
data.push(JSON.parse(JSON.stringify(body)));
let urls = [];
for (let i = 0; i < data[0].total; i = i + data[0].limit){
  urls.push('https://api.spotify.com/v1/me/tracks?offset='+i);
}
data = [];
for (let i = 0; i < urls.length; i++) {
  options.url = urls[i];
  request.get(options, function(error, response, body) {
    let tmp = JSON.parse(JSON.stringify(body));
    let items = tmp.items
    if (items != null){
      for(let o of tmp.items) {
        data.push(o.track.name);
      }

      if (tmp.next == null){
        return res.send(JSON.stringify(data));
        console.log('done');
      }
    }
  });
}

【问题讨论】:

    标签: javascript node.js spotify


    【解决方案1】:

    您可以在播放列表中使用递归到get all tracks。 你可以有一个方法来获取播放列表page,然后循环调用它,直到你没有更多的曲目可以检索。举个例子,这里有一个伪代码的可能解决方案。我写得很快,请原谅任何错误...

    function getplaylisttracks(playlistid, pagesize,offset) {
       //call 'get tracks' api with pagesize and offset
       //return response
    }
    
    var offset = 0;
    var pagesize = 100;
    var continueloop = true;
    
    var result = getplaylisttracks(YOURID, pagesize, offset);
    
    do {    
        try {
            //*** process result tracks into your array here ***
            if(result.next!=null) {
               offset = offset+pagesize;
               result = getplaylisttracks(YOURID, pagesize, offset);
            }
            else {
                continueloop = false;
            }
        }
        catch(e) { 
           //handle error here...
           continueloop = false;
        }
    } 
    while(continueloop);
    

    获得每个播放列表的所有曲目后,您可以进行比较

    【讨论】:

      猜你喜欢
      • 2014-01-22
      • 2012-11-21
      • 2017-03-27
      • 2017-12-22
      • 1970-01-01
      • 2015-09-08
      • 1970-01-01
      • 1970-01-01
      • 2013-08-07
      相关资源
      最近更新 更多