Dragon One Dragon One - 2 months ago 21
Javascript Question

Twitch API search stream via Javascript AJAX - get all streams

I have an ajax function hitting the Twitch API to find "Starcraft" streams.

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


This returns
Object {_total: 108, _links: Object, streams: Array[9]}
. I want
streams
array to hold all streams (all 108).

I've tried adding limit and offset to url like so:
https://api.twitch.tv/kraken/search/streams?limit=100&offset=0&q=starcraft
but this will obviously only work for cases where there are under 100 streams. Anyone familiar with the Twitch API, is there like a
limit=max
kind of thing? If not, what is the workaround?

Answer

The following is based on my comment to your question and should get you started. I;ve worked on the assumption that offest is eqivalent to page. Note that the code is untested and a starting point only.

Also make sure to handle a failure from the ajax call so you don't get stuck in an infinate loop.

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;
}