2016-10-06 4 views
0

「スタークラフト」ストリームを見つけるためにTwitch APIを使用しているajax関数があります。Javascript経由のスウィッチAPI検索ストリームAJAX - すべてのストリームを取得

$.ajax({ 
    type: 'GET', 
    url: 'https://api.twitch.tv/kraken/search/streams?q=starcraft', 
    headers: {'Client-ID': 'xxx'}, 
    success: function(json) { 
    console.log(json); 
}}); 

これは、Object {_total: 108, _links: Object, streams: Array[9]}を返します。 streams配列にすべてのストリーム(すべて108)を保持したい。

URLに制限とオフセットを追加しようとしました: https://api.twitch.tv/kraken/search/streams?limit=100&offset=0&q=starcraftこれは明らかに100ストリーム未満の場合にのみ機能します。 Twitch APIに精通している人なら、limit=maxのようなものがありますか?そうでない場合、回避策は何ですか?

+0

ドックを見ると、最初にドックを見ましたか?それは最大100が表示されます:https://dev.twitch.tv/docs/api/v3/streams#get-streams –

+0

@JonPはい私は文書を見て.....どのような回避策があるかどうか質問? –

+1

2つのリクエストを1つずつオフセットし、配列を結合しますか? – Harangue

答えて

0

以下はあなたの質問に対する私のコメントに基づいており、開始する必要があります。私は、offestがページと等価であるという前提で取り組んだ。このコードはテストされておらず、出発点にすぎないことに注意してください。

また、ajax呼び出しの失敗を処理して、無限ループに陥らないようにしてください。

fucntion GetAllStreams(){ 
    var arrStreams = []; 
    var offset = 0; 
    var total = -1; 

    while(total < 0 || arrStreams.length < total) 
    { 
     $.ajax({ 
      type: 'GET', 
      url: 'https://api.twitch.tv/kraken/search/streams?limit=100&offset=' + offset++ + '&q=starcraf', 
      headers: {'Client-ID': 'xxx'}, 
      success: function(json) { 
      arrStreams.push(json.streams); 
      console.log(json); 
      console.log(arrStreams); 
     }}); 
    } 

    retrun arrStreams; 
} 
+0

これは意味があります。ありがとうございました。私は思っていますが、あなたは 'offset'はpageと同等であると言いました。この状況では、ページはどういう意味ですか? –

+0

私は思っています、そして、この文書では、オフセットは、ストリームの次のセットであり、0ベースであることは明らかではありませんでした。たとえば、20の制限では、0のオフセットは最初の20のセットを返し、1のオフセットは20の次のセットなどを返します。もう1つのオプションは、あなたの制限の複数でオフセットする必要があるということです。 100、200など。実際に何が起こるかを確認するには、2つのテストを実行する必要があります。 –

+0

これは私がドキュメントをどのように解釈したかを示しています。ありがとうございます:) –

関連する問題