# <- GIGAGOOGLE 2.1 -> root@sbird.org # # --> S?rie GigaGoogle enti?rement ?dit?e par Raphael # gigagoogle.tcl 2.1 par Raphael (root@sbird.org) # gigagoogle.tcl 2.0 par Raphael (root@sbird.org) # gigagoogle.tcl 1.0 par Raphael (root@sbird.org) # supergoogle.tcl 1.3 par brazOo (brazman@systemz.org) # supergoogle.tcl 1.2 par brother (luc@rocketmail.com) # # Ce script est une extension du Google.tcl script de # aNa|0Gue - analogue@glop.org - http://www.glop.org # Il a ?t? modifi? par Scratch pour ajout? des options # et caract?ristiques au google.tcl original. # Modifi? et traduit en fran?ais par Raphael pour # ajouter de nouvelles caract?ristiques et corriger les # derniers bugs trouv?s. # # Contacter Raphael : # E-Mail : root@sbird.org # Site : http://www.sbird.org/ # IRC : Serveur : irc.sbird.org # Port : 6667 # Chan : #Aide # # # Caract?ristiques # * Choisissez les canaux sur lesquels vous affichez les r?sultats [Par Scratch] # * les Proxy sont support?s [Par Scratch] # * Details comme le nom du site et la taille des liens [Par Scratch] # * Aide en ligne [Par Scratch, modifi?e par Raphael] # * Mode de DEBUG [Par Scratch] # * Commande de contr?le du flood [Par Scratch] # * Recherche dans les groupes, dans les images, etc... [Par Raphael] # * Recherche en Party-Line [Par Scratch, modifi? par Raphael] # * Demander plusieurs liens pour une recherche [Par Raphael] # * Plusieurs options de recherche (langue, d?tails ou pas, etc...) [Par Raphael] # # Corrections de GigaGoogle v2.1 par rapport ? GigaGoogle v2.0 # * Modification de tous les parsages de pages ne fonctionnant plus depuis que google # avait chang? ses pages # * Am?lioration des affichages des recherches # * Suppression momentan?e des tailles d'images/de page inutiles puisque introuvables. # # Corrections de GigaGoogle v2.0 par rapport ? GigaGoogle v1.0 # * R?paration de la recherche simple : dans la v1.0 le script supprimait le premier # lien trouv? sur google dans les recherches !google. # # Vous avez seulement besoin de charger les modules TCL suivant pour que le script # fonctionne : # source scripts/alltools.tcl # source scripts/http.tcl #seulement pour win32 ou si le module ne fonctionne pas # source scripts/gigagoogle.tcl #ce script # # # # # Ci-dessous remplissez ces quelques variables IMPORTANTES # Hostname de votre service Proxy. Mettez ? "" si vous ne voulez pas l'utiliser. # Ceci est pour les membres de bidule.fr (factice) # set ggoogle_proxy "proxy.bidule.fr:8080" set ggoogle_proxy "" # Permettez seulement la commande sur les salons suivants... # set ggoogle_channels "#chan1 #chan2 #chanX" # ou pour tous les salons # set ggoogle_channels "" set ggoogle_channels "" # Le maximum de liens retourn?s ? l'utilisateur set ggoogle_hits 5 # le nombre par d?faut de liens retourn?s set ggoogle_hits_default 1 # Permettre l'utilisation du mode d?taill?? [1/Oui - 0/Non] set ggoogle_detail 1 # Employer le mode d?taill? seulement si il est demand?? [1/Oui - 0/Non] set ggoogle_detail_request 1 # Methode de r?ponse pour une demande publique (sur le salon) # Placer ? 0 pour une notice ? l'utilisateur # Placer ? 1 pour un message priv? ? l'utilisateur # Placer ? 2 pour une r?ponse sur le salon set ggoogle_pubmethod 2 # Qui a le droit de faire une recherche Google dans la Party-Line # (Utiliser les flags EggDrop) # ie . Autorise seulement les BotMasters ou BotOwners set ggoogle_pline_flags "" # demande de notification? [1/Oui - 0/Non] set ggoogle_log 1 # DEBUG le script? [1/Oui - 0/Non] set ggoogle_debug 0 # # Ne pas changer ? partir d'ici # set ggoogle_lastreq "" set ggoogle_antiflood 0 package require http if {!($ggoogle_proxy == "")} { http::config -proxyhost [lindex [split $ggoogle_proxy {:}] 0] -proxyport [lindex [split $ggoogle_proxy {:}] 1] -useragent "BrasMort Browser" } { http::config -useragent "BrasMort Browser" } bind pub - !google pub:ggoogle bind pub - !zoek pub:ggoogle bind pub - !search pub:ggoogle bind pub - !images pub:gimages bind pub - !groups pub:ggroups bind dcc $ggoogle_pline_flags google dcc:ggoogle bind dcc $ggoogle_pline_flags zoek dcc:ggoogle bind dcc $ggoogle_pline_flags search dcc:ggoogle bind dcc $ggoogle_pline_flags images dcc:gimages bind dcc $ggoogle_pline_flags groups dcc:ggroups proc fixhtml {html} { package require htmlparse set value [::htmlparse::mapEscapes $html] return $value } proc ggoogle_antiflood_reset {} { global ggoogle_antiflood set ggoogle_antiflood 0 set ggoogle_lastreq "" foreach th [timers] { if {[lindex $th 1]=="ggoogle_antiflood_reset"} { killtimer [lindex $th 2] } } } proc pub:ggoogle { nick uhost handle channel arg } { global ggoogle_channels ggoogle_pubmethod global ggoogle_antiflood ggoogle_lastreq ggoogle_log if {$ggoogle_antiflood > 4} {return 0} if {[llength $arg]!=0} { if {$arg == $ggoogle_lastreq} {return 0} } set ggoogle_lastreq $arg if {!($ggoogle_channels == "") && ([lsearch -exact [string tolower $ggoogle_channels] [string tolower $channel]] < 0)} {return 0} if {$ggoogle_pubmethod == 0} {set logger [ggoogle_start "google" 0 $nick $arg]} elseif {($ggoogle_pubmethod == 2) && ([string tolower $arg] != "help") && ([string tolower $arg] != "aide") && ([string tolower $arg] != "version")} { set logger [ggoogle_start "google" 2 $channel $arg]} else {set logger [ggoogle_start "google" 1 $nick $arg]} if {$ggoogle_log == 1} {putcmdlog "\[GG\] ($channel) $nick $logger"} set ggoogle_antiflood [expr $ggoogle_antiflood + 1] timer 1 ggoogle_antiflood_reset return 0 } proc dcc:ggoogle { handle idx arg } { global ggoogle_antiflood ggoogle_lastreq ggoogle_log if {$ggoogle_antiflood > 8} {return 0} if {$arg == $ggoogle_lastreq} {return 0} set ggoogle_lastreq $arg set logger [ggoogle_start "google" 3 $idx $arg] if {$ggoogle_log == 1} {putcmdlog "\[GG\] (Pline) $handle $logger"} set ggoogle_antiflood [expr $ggoogle_antiflood + 1] timer 1 ggoogle_antiflood_reset return 0 } proc pub:gimages { nick uhost handle channel arg } { global ggoogle_channels ggoogle_pubmethod global ggoogle_antiflood ggoogle_lastreq ggoogle_log if {$ggoogle_antiflood > 4} {return 0} if {$arg == $ggoogle_lastreq} {return 0} set ggoogle_lastreq $arg if {!($ggoogle_channels == "") && ([lsearch -exact [string tolower $ggoogle_channels] [string tolower $channel]] < 0)} {return 0} if {$ggoogle_pubmethod == 0} {set logger [ggoogle_start "images" 0 $nick $arg]} elseif {($ggoogle_pubmethod == 2) && ([string tolower $arg] != "help") && ([string tolower $arg] != "aide")} { set logger [ggoogle_start "images" 2 $channel $arg]} else {set logger [ggoogle_start "images" 1 $nick $arg]} if {$ggoogle_log == 1} {putcmdlog "\[GG\] ($channel) $nick $logger"} set ggoogle_antiflood [expr $ggoogle_antiflood + 1] timer 1 ggoogle_antiflood_reset return 0 } proc dcc:gimages { handle idx arg } { global ggoogle_antiflood ggoogle_lastreq ggoogle_log if {$ggoogle_antiflood > 8} {return 0} if {$arg == $ggoogle_lastreq} {return 0} set ggoogle_lastreq $arg set logger [ggoogle_start "images" 3 $idx $arg] if {$ggoogle_log == 1} {putcmdlog "\[GG\] (Pline) $handle $logger"} set ggoogle_antiflood [expr $ggoogle_antiflood + 1] timer 1 ggoogle_antiflood_reset return 0 } proc pub:ggroups { nick uhost handle channel arg } { global ggoogle_channels ggoogle_pubmethod global ggoogle_antiflood ggoogle_lastreq ggoogle_log if {$ggoogle_antiflood > 4} {return 0} if {$arg == $ggoogle_lastreq} {return 0} set ggoogle_lastreq $arg if {!($ggoogle_channels == "") && ([lsearch -exact [string tolower $ggoogle_channels] [string tolower $channel]] < 0)} {return 0} if {$ggoogle_pubmethod == 0} {set logger [ggoogle_start "groups" 0 $nick $arg]} elseif {($ggoogle_pubmethod == 2) && ([string tolower $arg] != "help") && ([string tolower $arg] != "aide")} { set logger [ggoogle_start "groups" 2 $channel $arg]} else {set logger [ggoogle_start "groups" 1 $nick $arg]} if {$ggoogle_log == 1} {putcmdlog "\[GG\] ($channel) $nick $logger"} set ggoogle_antiflood [expr $ggoogle_antiflood + 1] timer 1 ggoogle_antiflood_reset return 0 } proc dcc:ggroups { handle idx arg } { global ggoogle_antiflood ggoogle_lastreq ggoogle_log if {$ggoogle_antiflood > 8} {return 0} if {$arg == $ggoogle_lastreq} {return 0} set ggoogle_lastreq $arg set logger [ggoogle_start "groups" 3 $idx $arg] if {$ggoogle_log == 1} {putcmdlog "\[GG\] (Pline) $handle $logger"} set ggoogle_antiflood [expr $ggoogle_antiflood + 1] timer 1 ggoogle_antiflood_reset return 0 } proc ggoogle_start { mode public destination arg } { global ggoogle_version version ggoogle_hits ggoogle_hits_default ggoogle_debug ggoogle_detail_request ggoogle_detail lastbind regsub -all -nocase {\$\{\}\[\]} $arg {} arg set arg [string tolower $arg] if {(([llength $arg]==0) || ([string tolower $arg] == "help") || ([string tolower $arg] == "aide")) && ($mode=="google")} { set temp "" lappend temp "Aide: $ggoogle_version" lappend temp "|-$lastbind \[fr|france|linux\] \[detail|simple\] " lappend temp "|  Recherchez sur Google avec des Mots Cl?s. Vous pouvez sp?cifier " lappend temp "|  le nombre de liens que vous d?sirez ainsi que plusieurs" lappend temp "|  mots cl?s pour trouver plus facilement ce que vous cherchez." lappend temp "|  Le Maximum de liens est actuellement de : $ggoogle_hits" lappend temp "|-$lastbind " lappend temp "|  Chercher des sites sur Google avec des Mots Cl?s" lappend temp "|-!images " lappend temp "|  Chercher des images sur Google avec des Mots Cl?s" lappend temp "|-!groups \[langue=fr|de|en...\] " lappend temp "|  Chercher des groupes sur Google avec des Mots Cl?s" lappend temp "`-$lastbind aide" ggoogle_sendtext $temp 0 $destination return "asked for help." } if {(([llength $arg]==0) || ([string tolower $arg] == "help") || ([string tolower $arg] == "aide")) && ($mode=="images")} { set temp "" lappend temp "Aide: $ggoogle_version" lappend temp "|-!google \[fr|france|linux\] \[detail|simple\] " lappend temp "|  Recherchez sur Google avec des Mots Cl?s. Vous pouvez sp?cifier " lappend temp "|  le nombre de liens que vous d?sirez ainsi que plusieurs" lappend temp "|  mots cl?s pour trouver plus facilement ce que vous cherchez." lappend temp "|  Le Maximum de liens est actuellement de : $ggoogle_hits" lappend temp "|-!google " lappend temp "|  Chercher des sites sur Google avec des Mots Cl?s" lappend temp "|-$lastbind " lappend temp "|  Chercher des images sur Google avec des Mots Cl?s" lappend temp "|-!groups \[langue=fr|de|en...\] " lappend temp "|  Chercher des groupes sur Google avec des Mots Cl?s" lappend temp "`-$lastbind aide" ggoogle_sendtext $temp 0 $destination return "asked for help." } if {(([llength $arg]==0) || ([string tolower $arg] == "help") || ([string tolower $arg] == "aide")) && ($mode=="groups")} { set temp "" lappend temp "Aide: $ggoogle_version" lappend temp "|-!google \[fr|france|linux\] \[detail|simple\] " lappend temp "|  Recherchez sur Google avec des Mots Cl?s. Vous pouvez sp?cifier " lappend temp "|  le nombre de liens que vous d?sirez ainsi que plusieurs" lappend temp "|  mots cl?s pour trouver plus facilement ce que vous cherchez." lappend temp "|  Le Maximum de liens est actuellement de : $ggoogle_hits" lappend temp "|-!google " lappend temp "|  Chercher des sites sur Google avec des Mots Cl?s" lappend temp "|-!images " lappend temp "|  Chercher des images sur Google avec des Mots Cl?s" lappend temp "|-$lastbind \[langue=fr|de|en...\] " lappend temp "|  Chercher des groupes sur Google avec des Mots Cl?s" lappend temp "`-$lastbind aide" ggoogle_sendtext $temp 0 $destination return "asked for help." } if {$arg == "version"} { ggoogle_sendtext "{$ggoogle_version est activ? sur un eggdrop [lindex $version 0].}" 0 $destination return "a demand? la version." } if {$mode=="images"} { set zoekstring $arg set detailed 0 if {[string match {[0-9]} [lindex $zoekstring 0]] || [string match {[0-9][0-9]} [lindex $zoekstring 0]]} { set hits [lindex $zoekstring 0] set zoekstring [lrange $arg 1 end] if {$hits > $ggoogle_hits} { ggoogle_sendtext "{Trop de liens demand?s (voir $lastbind aide)}" $public $destination return "a demand? ? avoir trop de liens." } if {$hits < 1} { ggoogle_sendtext "{Le nombre de liens demand?s doit ?tre de 1 minimum}" $public $destination return "a mit un nombre invalide de liens." } } else { set hits $ggoogle_hits_default } set query "http://images.google.fr/images?q=" for { set index 0 } { $index<[llength $zoekstring] } { incr index } { set query "$query[lindex $zoekstring $index]" if {$index<[llength $zoekstring]-1} then { set query "$query+" } } set query "$query&num=$hits" if {$ggoogle_debug == 1} { putlog "DEBUG: Query built ($query)" putlog "DEBUG: Contacting website..." } set token [http::geturl $query] puts stderr "" upvar #0 $token state if {$ggoogle_debug == 1} {putlog "DEBUG: Got state ($state(http))"} if {[string tolower [lindex $state(http) 2]] != "ok"} { ggoogle_sendtext "{Aucun r?sultat trouv? pour $zoekstring (Error: [lrange $state(http) 2 end])}" $public $destination return "a recherch? $zoekstring (images) mais il y a eu une erreur: [lrange $state(http) 2 end]." } set htmldata [http::data $token] if {$ggoogle_debug == 1} {putlog "DEBUG: Got data ([string length $htmldata] bytes)"} set parsed [images_parse $htmldata] if {$parsed == 0} { if {$ggoogle_debug == 1} {putlog "DEBUG: Could not find items to parse."} ggoogle_sendtext "{Aucun r?sultat trouv? pour $zoekstring}" $public $destination return "a recherch? $zoekstring mais n'a pas eu de r?sultats. (images)" } if {$ggoogle_debug == 1} {putlog "DEBUG: Data parsed (got [lindex $parsed 0] items)"} set sendtext [images_template $parsed $detailed $zoekstring] if {$ggoogle_debug == 1} {putlog "DEBUG: Template applied ([llength $sendtext] lines of text)"} ggoogle_sendtext $sendtext $public $destination if {$ggoogle_debug == 1} {putlog "DEBUG: Sent text to output. Done..."} return "a recherch? $zoekstring et a eu [lindex $parsed 0] liens (images - [string length $htmldata] bytes)" } if {$mode=="groups"} { set zoekstring $arg set detailed 0 if {[string match {[0-9]} [lindex $zoekstring 0]] || [string match {[0-9][0-9]} [lindex $zoekstring 0]]} { set hits [lindex $zoekstring 0] set zoekstring [lrange $arg 1 end] if {$hits > $ggoogle_hits} { ggoogle_sendtext "{Trop de liens demand?s (voir $lastbind aide)}" $public $destination return "a demand? ? avoir trop de liens." } if {$hits < 1} { ggoogle_sendtext "{Le nombre de liens demand?s doit ?tre de 1 minimum}" $public $destination return "a mit un nombre invalide de liens." } } else { set hits $ggoogle_hits_default } set lang 0 if {[string range $zoekstring 0 4]=="lang="} { set lang [lindex $zoekstring 0] set zoekstring [lrange $zoekstring 1 end] set lang [string range $lang 5 end] set lang "lr=lang_[string tolower $lang]" } set query "http://groups.google.fr/groups?q=" for { set index 0 } { $index<[llength $zoekstring] } { incr index } { set query "$query[lindex $zoekstring $index]" if {$index<[llength $zoekstring]-1} then { set query "$query+" } } if {$lang!=0} { set query "$query&$lang" } set query "$query&num=$hits" if {$ggoogle_debug == 1} { putlog "DEBUG: Query built ($query)" putlog "DEBUG: Contacting website..." } set token [http::geturl $query] puts stderr "" upvar #0 $token state if {$ggoogle_debug == 1} {putlog "DEBUG: Got state ($state(http))"} if {[string tolower [lindex $state(http) 2]] != "ok"} { ggoogle_sendtext "{Aucun r?sultat trouv? pour $zoekstring (Erreur: [lrange $state(http) 2 end])}" $public $destination return "a recherch? $zoekstring (groups) mais a eu une erreur: [lrange $state(http) 2 end]." } set htmldata [http::data $token] if {$ggoogle_debug == 1} {putlog "DEBUG: Got data ([string length $htmldata] bytes)"} set parsed [groups_parse $htmldata] if {$parsed == 0} { if {$ggoogle_debug == 1} {putlog "DEBUG: Could not find items to parse."} ggoogle_sendtext "{Aucun r?sultat trouv? pour $zoekstring}" $public $destination return "a recherch? $zoekstring mais n'a pas eu de r?sultats. (groups)" } if {$ggoogle_debug == 1} {putlog "DEBUG: Data parsed (got [lindex $parsed 0] items)"} set sendtext [groups_template $parsed $detailed $zoekstring] if {$ggoogle_debug == 1} {putlog "DEBUG: Template applied ([llength $sendtext] lines of text)"} ggoogle_sendtext $sendtext $public $destination if {$ggoogle_debug == 1} {putlog "DEBUG: Sent text to output. Done..."} return "a recherch? $zoekstring et a eu [lindex $parsed 0] liens (groups - [string length $htmldata] bytes)" } set maybelang [string tolower [lindex $arg 0]] if {($maybelang == "france")||($maybelang == "fr")} {set arg [lrange $arg 1 end];set google_lang "fr"} if {($maybelang == "linux")} {set arg [lrange $arg 1 end];set google_lang "linux"} if {[string tolower [lindex $arg 0]] == "detail"} { set zoekstring [lrange $arg 1 end] if {$ggoogle_detail == 1} { set detailed 1 } else { ggoogle_sendtext "{Le mode d?taill? a ?t? interdit par l'administrateur}" $public $destination } } elseif {[string tolower [lindex $arg 0]] == "simple"} { set zoekstring [lrange $arg 1 end] set detailed 0 } else { set zoekstring $arg if {$ggoogle_detail_request == 1} {set detailed 0} else {set detailed 1} } if {[string match {[0-9]} [lindex $zoekstring 0]] || [string match {[0-9][0-9]} [lindex $zoekstring 0]]} { set hits [lindex $zoekstring 0] set zoekstring [lrange $zoekstring 1 end] if {$hits > $ggoogle_hits} { ggoogle_sendtext "{Trop de liens demand?s (voir $lastbind aide)}" $public $destination return "a demand? ? avoir trop de liens." } if {$hits < 1} { ggoogle_sendtext "{Le nombre de liens demand?s doit ?tre de 1 minimum}" $public $destination return "a mit un nombre invalide de liens." } } else { set hits $ggoogle_hits_default set zoekstring $zoekstring } if {[info exist google_lang]} { switch -exact -- $google_lang { "fr" {set query "http://www.google.fr/search?lr=lang_fr&q="} "linux" {set query "http://www.google.com/linux?q="} } } else { set query "http://www.google.com/search?q=" } for { set index 0 } { $index<[llength $zoekstring] } { incr index } { set query "$query[lindex $zoekstring $index]" if {$index<[llength $zoekstring]-1} then { set query "$query+" } } set query "$query&num=$hits" if {$ggoogle_debug == 1} { putlog "DEBUG: Query built ($query)" putlog "DEBUG: Contacting website..." } set token [http::geturl $query] puts stderr "" upvar #0 $token state if {$ggoogle_debug == 1} {putlog "DEBUG: Got state ($state(http))"} if {[string tolower [lindex $state(http) 2]] != "ok"} { ggoogle_sendtext "{Aucun r?sultat trouv? pour $zoekstring (Erreur: [lrange $state(http) 2 end])}" $public $destination return "a recherch? $zoekstring (google) mais a eu une erreur: [lrange $state(http) 2 end]." } set htmldata [http::data $token] if {$ggoogle_debug == 1} {putlog "DEBUG: Got data ([string length $htmldata] bytes)"} set parsed [ggoogle_parse $htmldata] if {$parsed == 0} { if {$ggoogle_debug == 1} {putlog "DEBUG: Could not find items to parse."} ggoogle_sendtext "{Aucun r?sultat trouv? pour $zoekstring}" $public $destination return "a recherch? $zoekstring mais n'a pas eu de r?sultats. (google)" } if {$ggoogle_debug == 1} {putlog "DEBUG: Data parsed (got [lindex $parsed 0] items)"} set sendtext [ggoogle_template $parsed $detailed $zoekstring] if {$ggoogle_debug == 1} {putlog "DEBUG: Template applied ([llength $sendtext] lines of text)"} ggoogle_sendtext $sendtext $public $destination if {$ggoogle_debug == 1} {putlog "DEBUG: Sent text to output. Done..."} return "a recherch? $zoekstring et a eu [lindex $parsed 0] liens (google - [string length $htmldata] bytes)" } proc ggoogle_parse {data} { set count 0 set outputdata "" regsub -all "\n" $data "" data regsub -all "
" $data \n data regsub -all "" $data \n data set data [split $data \n] set pattern "href=*" foreach elem $data { if {[string match "Results *" $elem] || [string match "R?sultats *" $elem]} { regsub -all "" $elem "\n" elem set elem [lindex [split $elem \n] 0] regsub -all "" $elem "\002" elem regsub -all "" $elem "\002" elem lappend outputdata $elem } if {[string match $pattern $elem]} { set full $elem regsub -all "\"" $elem "" elem regsub -all "class=l>" $elem "" elem regsub -all "" $elem \n elem set elem [split $elem \n] set elem [lindex $elem 0] set full [lrange $full [expr [llength $full]-7] end] set size "N/A" foreach word $full { regexp {[0-9]+k} $word size } set result "" set infos [gere_result $elem] set title [lindex $infos 0] set url [lindex $infos 1] lappend result $title $url $size lappend outputdata $result incr count } } if {$count==0} {return 0} return "$count $outputdata" } proc gere_result { line } { set reply "" regsub -all "href=" $line "" line regsub -all ">" $line \n buf set lien [lindex $buf 0] set lienlen [string length $lien] set title [string range $line [expr $lienlen+1] end] set title [gere_html $title] lappend reply $title $lien return $reply } proc gere_html {title} { regsub -all "" $title "\002" title regsub -all "" $title "\037" title set title [fixhtml $title] return $title } proc images_parse {data} { set count 0 set outputdata "" regsub -all "\n" $data "" data regsub -all "" data regsub -all " " $data "\n" data regsub -all "

(.+)      Groupe : (.+)
.+
(.+) de (.+) - (\[0-9]+) messages? - (\[0-9]+) auteurs?.*$" $elem match url title group date auteur nbmsgs nbauteurs if {$url != "N/A"} { set url "http://groups.google.fr/group/$url" set title [gere_html $title] lappend outputdata [list $title $date $group $auteur $url $nbmsgs $nbauteurs] incr count } } if {$count==0} {return 0} return "$count $outputdata" } proc groups_template {data details terms} { global ggoogle_version set items [lrange $data 1 end] set reply "" set count 0 foreach hit $items { set title [lindex $hit 0] set date [lindex $hit 1] set group [lindex $hit 2] set auteur [lindex $hit 3] set url [lindex $hit 4] set nbmsgs [lindex $hit 5] set nbauteurs [lindex $hit 6] set count [expr $count + 1] if {[lindex $data 0] == 1} then { set temp "$title - $date par $auteur ($group) $url" } else { set temp "\[$count\] $title - $date par $auteur ($group) $url" } lappend reply $temp } return $reply } proc images_template {data details terms} { global ggoogle_version set items [lrange $data 1 end] set reply "" set count 0 foreach hit $items { set url [lindex $hit 0] set size [lindex $hit 1] set count [expr $count + 1] if {[lindex $data 0] == 1} then { # set temp "$url ($size)" // when $size could be used ... set temp "$url" } else { # set temp "\[$count\] $url ($size)" // when $size could be used ... set temp "\[$count\] $url" } lappend reply $temp } return $reply } proc ggoogle_template {data detail terms} { global ggoogle_version # les liens sont [lrange $data 2 end] dans la version pr?c?dente set items [lrange $data 1 end] set reply "" if {$detail == 0} { set count 0 foreach hit $items { set url [lindex $hit 1] set size [lindex $hit 2] if {$size != "-"} then { set count [expr $count + 1] if {[lindex $data 0] == 1} then { # set temp "$url ($size)" // when $size could be used ... set temp "$url" } else { # set temp "\[$count\] $url ($size)" // when $size could be used ... set temp "\[$count\] $url" } lappend reply $temp } } } else { lappend reply "Recherche de $terms ($ggoogle_version)" set count 0 foreach hit $items { set name [lindex $hit 0] set url [lindex $hit 1] set size [lindex $hit 2] if {$size != "-"} then { set count [expr $count + 1] if {[lindex $data 0] == 1} then { # lappend reply "|- $url ($size)" // when $size could be used ... lappend reply "|- $url" lappend reply "|  $name" } else { # lappend reply "|-\[$count\] $url ($size)" // when $size could be used ... lappend reply "|-\[$count\] $url" lappend reply "|  $name" } } } set result [lindex $data 1] regsub -all "for" $result \n result regsub -all "pour" $result \n result set result [split $result \n] set result [lindex $result 0] regsub -all " " $result " " result regsub -all "," $result " " result regsub -all "Results" $result "R?sultats" result regsub -all "of about" $result "sur un total d'environ" result lappend reply "`- $result" } return $reply } proc ggoogle_sendtext {data public destination} { global botnick if {[llength $data] == 1 && $public == 2} {putquick ":$botnick PRIVMSG $destination :[lindex $data 0]"} else { foreach text $data { if {$public == 0} { putquick ":$botnick NOTICE $destination :$text" } elseif {$public == 1 || $public == 2} { putquick ":$botnick PRIVMSG $destination :$text" } else { putdcc $destination $text } } } } set ggoogle_version "GigaGoogle v2.1" putlog "$ggoogle_version par Raphael charg? (root@sbird.org - http://www.sbird.org/)"