googlematch.coffee 1.21 KB
###
Takes provided terms passed as arguments and query google for the number of
estimated results each have.

Usage:
  $ casperjs samples/googlematch.js nicolas chuck borris
  nicolas: 69600000
  chuck:   49500000
  borris:  2370000
  winner is "nicolas" with 69600000 results
###

CasperClass = require('casper').Casper

CasperClass.extend
    fetchScore: -> @evaluate ->
        result = document.querySelector('#resultStats').innerText
        ~~(/Environ ([0-9\s]{1,}).*/.exec(result)[1].replace(/\s/g, ''))

casper = new CasperClass verbose: true

terms = casper.cli.args # terms are passed through command-line arguments

if terms.length < 3
    casper.echo 'Usage: casperjs googlematch.js term1, term2 [, term3]...'
    casper.exit()

scores = []

casper.echo "Let the match begin between \"#{terms.join '", "'}\"!"

casper.start "http://google.fr/"

casper.each terms, (self, term) ->
    @then -> @fill 'form[name=f]', { q: term }, true
    @then ->
        score = @fetchScore()
        scores.push term: term, score: score
        self.echo "#{term}: #{score}"

casper.run ->
    scores.sort -> (a, b) -> b.score > a.score
    winner = scores[0]
    @echo "Winner is #{winner.term} with #{winner.score} results"
    @exit()