48 lines
1.3 KiB
CoffeeScript
48 lines
1.3 KiB
CoffeeScript
|
###
|
||
|
Takes provided terms passed as arguments and query google for the number of
|
||
|
estimated results each have.
|
||
|
|
||
|
Usage:
|
||
|
$ casperjs googlematch.coffee nicolas chuck borris
|
||
|
nicolas: 69600000
|
||
|
chuck: 49500000
|
||
|
borris: 2370000
|
||
|
winner is "nicolas" with 69600000 results
|
||
|
###
|
||
|
|
||
|
casper = require("casper").create verbose: true
|
||
|
|
||
|
casper.fetchScore = ->
|
||
|
@evaluate ->
|
||
|
result = __utils__.findOne('#resultStats').innerText
|
||
|
parseInt /Environ ([0-9\s]{1,}).*/.exec(result)[1].replace(/\s/g, '')
|
||
|
|
||
|
terms = casper.cli.args # terms are passed through command-line arguments
|
||
|
|
||
|
if terms.length < 2
|
||
|
casper
|
||
|
.echo("Usage: $ casperjs googlematch.js term1 term2 [term3]...")
|
||
|
.exit(1)
|
||
|
|
||
|
scores = []
|
||
|
|
||
|
casper.echo "Let the match begin between \"#{terms.join '", "'}\"!"
|
||
|
|
||
|
casper.start "http://google.fr/"
|
||
|
|
||
|
casper.each terms, (self, term) ->
|
||
|
@then -> @fill 'form[action="/search"]', { q: term }, true
|
||
|
@then ->
|
||
|
score = @fetchScore()
|
||
|
scores.push term: term, score: score
|
||
|
@echo "#{term}: #{score}"
|
||
|
|
||
|
casper.run ->
|
||
|
if scores.length is 0
|
||
|
@echo "No result found"
|
||
|
else
|
||
|
scores.sort (a, b) -> b.score - a.score
|
||
|
winner = scores[0]
|
||
|
@echo "Winner is \"" + winner.term + "\" with " + winner.score + " results"
|
||
|
@exit()
|