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=absedit: I wonder if it could be pulling from google.fr because that is where my server ism thoughts on that?