Search code examples
javascriptajaxtwitch

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?


Solution

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