/*jshint strict:false*/ /*global CasperError console phantom require*/ /** * Takes provided terms passed as arguments and query google for the number of * estimated results each have. * * Usage: * $ casperjs googlematch.js nicolas chuck borris * nicolas: 69600000 * chuck: 49500000 * borris: 2370000 * winner is "nicolas" with 69600000 results */ var casper = require("casper").create({ verbose: true }); casper.fetchScore = function() { return this.evaluate(function() { var result = __utils__.findOne('#resultStats').innerText; return parseInt(/Environ ([0-9\s]{1,}).*/.exec(result)[1].replace(/\s/g, ''), 10); }); }; var terms = casper.cli.args; if (terms.length < 2) { casper .echo("Usage: $ casperjs googlematch.js term1 term2 [term3]...") .exit(1) ; } var scores = []; casper.echo("Let the match begin between \"" + (terms.join('", "')) + "\"!"); casper.start("http://google.fr/"); casper.each(terms, function(casper, term, i) { this.echo('Fecthing score for ' + term); this.then(function() { this.fill('form[action="/search"]', {q: term}, true); }); this.then(function() { var score = this.fetchScore(); scores.push({ term: term, score: score }); this.echo(term + ': ' + score); }); }); casper.run(function() { if (scores.length === 0) { this.echo("No result found"); } else { scores.sort(function(a, b) { return b.score - a.score; }); var winner = scores[0]; this.echo("Winner is \"" + winner.term + "\" with " + winner.score + " results"); } this.exit(); });