Code: Select all
#google.tcl v0.31 - Using the "I'm feeling lucky" button this script returns the best result based on the string you input. Also can return image and regional results. This script is future proof. (Default public commands are !google, !image and !googleuk).
#based on scripts by aNa|0Gue
set google(ver) "0.31"
#Simulate a browser, ie: Mozilla
set google(agent) "MSIE 6.0"
#google search trigger
set google(g_cmd) "!google"
#google uk search trigger
set google(guk_cmd) "!googleuk"
#google image search trigger
set google(gi_cmd) "!image"
#google prefix
set google(prefix) "* Google:"
package require http
bind pub - $google(g_cmd) pub:google
bind pub - $google(guk_cmd) pub:googleuk
bind pub - $google(gi_cmd) pub:image
proc google:go { url arg } {
global google
regsub -all " " $arg "+" query
set lookup "$url$query"
set token [http::config -useragent $google(agent)]
set token [http::geturl $lookup]
puts stderr ""
upvar #0 $token state
set max 0
foreach {name value} $state(meta) {
if {[regexp -nocase ^location$ $name]} {
set newurl [string trim $value]
regsub -all "btnI=&" $url "" url
if {[regexp {imgres} $newurl]} { set newurl "http://[string range $newurl [expr [string first = $newurl]+1] [expr [string first & $newurl]-1]]" }
return "$newurl More: $url$query"
}
}
}
proc pub:google { nick uhost handle channel arg } {
global google
if {[llength $arg]==0} { putserv "NOTICE $nick :Usage: $google(g_cmd) <string>" }
set url "http://www.google.com/search?btnI=&q="
set output [google:go $url $arg]
putserv "PRIVMSG $channel :$nick, $google(prefix) $output"
}
proc pub:googleuk { nick uhost handle channel arg } {
global google
set arg "$arg&meta=cr%3DcountryUK%7CcountryGB"
if {[llength $arg]==0} { putserv "NOTICE $nick :Usage: $google(guk_cmd) <string>" }
set url "http://www.google.co.uk/search?btnI=&q="
set output [google:go $url $arg]
putserv "PRIVMSG $channel :$nick, $google(prefix) $output"
}
proc pub:image { nick uhost handle channel arg } {
global google
if {[llength $arg]==0} { putserv "NOTICE $nick :Usage: $google(gi_cmd) <string>" }
set url "http://images.google.com/images?btnI=&q="
set output [google:go $url $arg]
putserv "PRIVMSG $channel :$nick, $google(prefix) $output"
}
putlog "google.tcl $google(ver) loaded"
4 samples of what happens:
Code: Select all
<Sanzen> !google testing
<fubar> Sanzen, * Google: http://www.google.fr/search?btnI=&q=testing&gws_rd=cr&ei=CqbJVOKIAsTharqygfgF More: http://www.google.com/search?q=testing
<Sanzen> !google Eggdrop
<fubar> Sanzen, * Google: http://www.google.fr/search?btnI=&q=Eggdrop&gws_rd=cr&ei=EKbJVIfKENfuaJbQgsgE More: http://www.google.com/search?q=Eggdrop
<Sanzen> !google OnePieceBay
<fubar> Sanzen, * Google: http://www.google.fr/search?btnI=&q=OnePieceBay&gws_rd=cr&ei=HKbJVPfwNJPraOqdgdAE More: http://www.google.com/search?q=OnePieceBay
<Sanzen> !google abs
<fubar> Sanzen, * Google: http://www.google.fr/search?btnI=&q=abs&gws_rd=cr&ei=VJjJVOGjMcz4UP6lgNAG More: http://www.google.com/search?q=abs
edit: I wonder if it could be pulling from google.fr because that is where my server ism thoughts on that?