googlematch.coffee
1.27 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
###
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()