2013-03-08 126 views
0

我对Spotify API中的搜索功能如何工作感到困惑。他们的例子是这样的:Spotify开发人员搜索

var sp = getSpotifyApi(); 
    var models = sp.require('$api/models'); 

    var search = new models.Search('Rihanna'); 
    search.localResults = models.LOCALSEARCHRESULTS.APPEND; 

    var searchHTML = document.getElementById('results'); 

    search.observe(models.EVENT.CHANGE, function() { 
     var results = search.tracks; 
     var fragment = document.createDocumentFragment(); 
     for (var i=0; i<results.length; i++){ 
      var link = document.createElement('li'); 
      var a = document.createElement('a'); 
      a.href = results[i].uri; 
      link.appendChild(a); 
      a.innerHTML = results[i].name; 
      fragment.appendChild(link); 
     } 

     searchHTML.appendChild(fragment); 
    }); 

    search.appendNext(); 

所以,我想调用appendNext()启动搜索,并且当它有结果时调用内部函数?但结果仅限于总数的一定数量(默认为50)。你如何得到其余的?你是否从回调内部递归地调用appendNext()?另外,这是否意味着在你做完这些之后,你的列表是否包含原始结果,还是取代了原始结果?任何人都知道一个例子,通过搜索全部可用结果?

此外他们还提到,如果搜索正在运行,appendNext()将不执行任何操作。那么,在获得下一个'页面'之前,你如何优雅地等待当前搜索完成?

他们的文件是可怕的,恕我直言。假设您在服务器上共有1000个搜索结果。并说我想看结果900-1000。我是否必须反复调用AppendNext直到达到900?

感谢 鲍勃

回答

0

使用内置Spotify的应用程序API中的搜索功能时,没有分页。您可以增加结果数量,以便返回超过50个结果(请参阅the Search page in the documentation),但金额有限(目前似乎为200首曲目)。

有一种替代方法,它正在执行对Web API的请求。

+0

等等,所以你说没有办法使用他们的API来获得一组完整的搜索结果?因此,如果我想搜索所有Rhianna歌曲,就像他们的例子一样,我只能获得200首歌曲,如果我要找的歌曲不在前200首,我是不是很幸运?这太可笑了!那么AppendNext调用是什么时候使用的? – bsabiston 2013-03-20 13:54:28