You are here

eggdrop으로 TCL 접하게 된 인물입니다.

#######################################################################
#######################################################################
# 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) #
# #
# 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 5

## 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"

이런 소스를 제가 첨부했습니다..
그래서 실행시켜보니 (.google chanje)

Tcl error [pub_google]: couldn't compile regular expression pattern: nested *?+

이런식으로 에러가 뜨더라구요.
*?+는 찾아봐도 없는것-.- 같고;
좀 확인바랍니다..
^^ 감사합니다..