| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 | 
							- // get a bunch of twitter streams
 
- var stuff_to_search_for = 
 
-   [ 'nodejs', 'nodejitsu', 'hadoop', 'couchdb', 'nosql', 'birds', 'dinosaurs'
 
-   , 'fun', 'dscape', 'clown', 'joyent', 'nyc', 'usa', 'portugal'];
 
- // npm install request fast-list clarinet
 
- var request        = require('request');
 
- var fs             = require('fs');
 
- var clarinet       = require('../clarinet');
 
- var p              = 1;
 
- var buffer         = [];
 
- var tweets         = ['['];
 
- var parse_stream   = clarinet.createStream();
 
- var stacklevel     = 0;
 
- var objlevel       = 0;
 
- var found_results  = false;
 
- var notfirst       = false;
 
- var stop_searching = false;
 
- var previous       = '';
 
- var i            = 0;
 
- var on_array     = false;
 
- var array_vals   = [];
 
- function uri (pop) {
 
-   var term;
 
-   if(pop) i++;
 
-   if(stuff_to_search_for[i]) {
 
-     term = stuff_to_search_for[i];
 
-     return 'http://search.twitter.com/search.json?q=' + term +
 
-            '&rpp=100&page=';
 
-   }
 
-   else
 
-     return null;
 
- }
 
- parse_stream.on('openarray', function() {
 
-   previous = '[';
 
-   if(found_results) {
 
-     if(stacklevel !== 0) { buffer.push('['); on_array = true; }
 
-     stacklevel++;
 
-   }
 
- });
 
- parse_stream.on('closearray', function() {
 
-   if(found_results) {
 
-     stacklevel--;
 
-     if(stacklevel === 0) {
 
-       tweets.push(buffer.join(''));
 
-       buffer = [];
 
-       found_results = false;
 
-       if(previous === '[')  // [] means no more results
 
-         stop_searching = true;
 
-     } else {
 
-       buffer.push(array_vals.join(','));
 
-       array_vals = [];
 
-       on_array = false;
 
-       buffer.push(']'); 
 
-     }
 
-   }
 
-   previous = ']';
 
- });
 
- parse_stream.on('openobject', function(name) {
 
-   previous = '{';
 
-   if(found_results) {
 
-     if(objlevel === 0 && notfirst) { buffer.push(','); }
 
-     if(name!=='result_type') { buffer.push('\n'); }
 
-     buffer.push('{"' + name + '": ');
 
-     notfirst = true;
 
-     objlevel++;
 
-   }
 
- });
 
- parse_stream.on('key', function(name) {
 
-   previous = ':';
 
-   if(found_results) {
 
-     buffer.push(', "' + name + '": ');
 
-   }
 
-   if(name==='results' && !found_results) { 
 
-     found_results = true; 
 
-   }
 
- });
 
- parse_stream.on('closeobject', function() {
 
-   previous = '}';
 
-   if(found_results) {
 
-     objlevel--;
 
-     buffer.push('}');
 
-   }
 
- });
 
- parse_stream.on('end', function() {
 
-   previous = '!';
 
-   if(tweets.length === 0) stop_searching = true;
 
-   console.log(tweets.join(''));
 
- });
 
- parse_stream.on('ready', function () {
 
-   var r_uri;
 
-   if(stop_searching) {
 
-     r_uri = uri(true);
 
-     if(r_uri === null) {
 
-       console.log(']');
 
-       return;
 
-     } else { 
 
-       p = 1; 
 
-       stop_searching = false;
 
-     }
 
-   }
 
-   r_uri = r_uri || uri();
 
-   tweets = [];
 
-   
 
-   if(r_uri!==null) {
 
-     request.get(r_uri+p)
 
-       .pipe(parse_stream);
 
-     p++;
 
-   }
 
- });
 
- parse_stream.on('value', function(value) {
 
-   if(found_results) {
 
-     var bla;
 
-     if(typeof value === 'string' || value === null)
 
-       bla = JSON.stringify(value);
 
-     else bla = value;
 
-     if (on_array) array_vals.push(bla); 
 
-     else { buffer.push(bla); }
 
-   }
 
- });
 
- var s_uri = uri();
 
- if(s_uri!==null)
 
-   request.get(uri()+p)
 
-     .pipe(parse_stream);
 
- p++;
 
 
  |