Skip to content

Instantly share code, notes, and snippets.

@oxlade39
Created December 3, 2010 09:13
Show Gist options
  • Save oxlade39/726751 to your computer and use it in GitHub Desktop.
Save oxlade39/726751 to your computer and use it in GitHub Desktop.
var sys=require('sys'), http = require('http');
var connection = http.createClient(80, "search.twitter.com");
function TweetSearcher(search, pollTime, newTweetEventHandler) {
this.search = search;
this.pollTime = pollTime;
this.since = 0;
this.newTweet = newTweetEventHandler
}
TweetSearcher.prototype.onResponse = function(response) {
searcher = this;
var responseBody = "";
response.setEncoding("utf8");
response.addListener("data", function(chunk) { responseBody += chunk });
response.addListener("end", function() {
tweets = JSON.parse(responseBody);
var results = tweets["results"],
length = results.length;
sys.puts("got " + length + " num results");
for (var i = (length-1); i >= 0; i--) {
if (results[i].id > searcher.since) {
searcher.since = results[i].id;
searcher.newTweet(results[i])
} else {
sys.puts("no new results for search term: " + searcher.search);
}
}
});
}
TweetSearcher.prototype.getTweets = function() {
var request = connection.request('GET', "/search.json?q=" + this.search + "&since_id="+this.since, {"host": "search.twitter.com", "User-Agent": "NodeJS HTTP Client"});
var searcher = this;
request.addListener("response", function(response){searcher.onResponse(response)});
request.end();
setTimeout(function(){searcher.getTweets()}, this.pollTime);
}
// see https://github.com/charlieyan/node-growl
var growl = require('./growl');
function growlIt(newTweet) {
growl.notify("From " + newTweet.from_user + ": " + newTweet.text);
}
var search1 = new TweetSearcher("2018worldcup", 20000, growlIt);
var search2 = new TweetSearcher("england2018", 20000, growlIt);
search1.getTweets();
search2.getTweets();
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment