help welcome
Code: Select all
#######################################################################
#######################################################################
# Google by Murf #
# v1.0 #
# #
# Gets search results from Google.com. Nothing fancy yet, just gets #
# however many returns you want. Idea is based on a script by #
# aNa|0Gue, although the code is all new. #
# #
# Latest version @ http://www.blueday.org #
# Comments & Questions to murf@mindless.com #
#######################################################################
# Only tested on TCL v8.3 and Egg v1.6x, although I kept the code #
# generic enough for TCL v8.0 and probably v1.3 of egg. #
#######################################################################
# #
# Commands #
# #
# .google keyword(s) <# of results> #
# #
# e.g. .google murf 5 #
# #
# Version #
# v1.0 Aug 16 2002 #
# -- first version #
# #
# Contact murf@mindless.com for bugs/comments #
# This and other scripts available @ www.blueday.org #
#######################################################################
#######################################################################
## default number of returns
set google_def_num 4
## max number of returns
set google_max 10
## public bind
set glpubbind .google
set gl_output "NOTICE $nick"
##########binds######################
bind pub -|- $glpubbind pub_google
##########Procs######################
proc pub_google {nick uhost handle chan search} {
global gl_ouput
set gl_output "NOTICE $nick"
if {[llength $search] == 0} {
puthelp "$gl_output : Whatcha searchin for fool!?"
return 0
}
set url [google_url $search $nick $chan]
google_getpage $url
return 0
}
## Google_url #############################################
## Takes input and parses to set the url, returns the url
proc google_url {search nick chan} {
global google_def_num google_max gl_output
set google_num [lindex $search end]
if {[regexp { [0-9]+} $search match $google_num]} {
if {$google_num > $google_max} { set google_num $google_max }
set search [lrange $search 0 [expr {[llength $search] - 2}]]
} else {
set google_num $google_def_num
}
if {$google_num >= 5} {
set gl_output "NOTICE $nick"
} else {
set gl_output "PRIVMSG $chan"
}
regsub -all { } $search {+} search
set url "/search?hl=en&num=$google_num&lr=&ie=ISO-8859-1&q=$search"
return $url
}
## google_getpage ##########################################
## gets the webpage and parses for the returns
proc google_getpage {url} {
global gl_output
## Open socket
if {[catch {set glsock [socket -async www.google.com 80]} sockerr]} {
puthelp "NOTICE $nick :$sockerr"
puthelp "NOTICE $nick :Try again later, look out the window till then!"
close $glsock
return 0
}
puts $glsock "GET $url"
flush $glsock
set i 0
set j 1
set glout [gets $glsock]
while {[regexp {Dissatisfied with your results?} $glout] == 0} {
set glout [gets $glsock]
incr i
if {$i >= 150} {
break
}
if {[regexp {#008000>(.*?) - } $glout match gl_result($j)]} {
puthelp "$gl_output :$j. http://$gl_result($j)"
incr j
}
}
close $glsock
return 0
}
putlog "Google v1.0 by murf loaded"