2013-03-08 48 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