Studium Szaleństwa

na granicy potępienia

eggdrop – działający skrypt do google

04 lip 2009 12:15   ~samaelszafran   : IRC

Kręciłem się ostatnio po internecie w poszukiwaniu odpowiedniego skryptu do eggdropa (popularnego bota IRC) umożliwiającego wyszukiwanie za pomocą google. Znalazłem kilka skryptów, lepszych i gorszych. Najlepszy z nich był chyba skrypt zrobiony przez incith, który można znaleźć na egghelp – jednak i on miał czasem problemy. Zwyczajnie sie zawieszał.

Dlatego też, z pomocą Trila (który dał mi swój perlowy regexp, który próbowałem zrozumieć i przerobić go na tcla (;  ) stworzyłem własny skrypt.

Skrypt to narazie faza testowa – nie musi koniecznie działać. Póki co działa poprawnie, nie zauważyłem w nim problemów. Plik do pobrania znajduje się u dołu wpisu.

Krótki opis instalacji:

  • wgrywamy skrypt do jakiegoś folderu, gdzie tam sobie trzymamy skrypty do eggdropa
  • edytujemy plik konfiguracyjny eggdropa (zazwyczaj eggdrop.conf) i dodajemy na końcu linijke
source /ścieżka/do/naszego/folderu/google.tcl
  • telnetujemy się do naszego bota i wpisujemy następującą komende:
.rehash
.chanset #nasz-kanal +gogiel

I cieszymy się działającym skryptem google do eggdropa :)

Poniżej zamieszczam zarówno kod skryptu, jak i plik do pobrania:

# Google 0.9.7 by samaelszafran (samaelszafran.pl)
#
# .chanset #kanal +gogiel
#
# To jest jeszcze wersja testowa. Kombinuje z biblioteka tcllib zeby usprawnic dekodowanie encji htmlowych. Wszystko prawidlowe i dzialajace pojawi sie w wersji 1* :>
package require http
package require htmlparse
bind pub - !g pub:google
bind pub - !google pub:google
set ver "0.9.7"
set agent "Mozilla"
setudef flag gogiel
proc pub:google { nick uhost handle channel arg } {
global agent
if {![channel get $channel gogiel]} {
putlog "Flag is not enabled for $channel"
} else {
if {[llength $arg]==0} {
putquick "PRIVMSG $channel :\002\[GOOGLE\]\002 Nieprawidlowe kryteria wyszukwiania!"
} else {
putquick "NOTICE $nick :\002\[GOOGLE\]\002 szukam -> $arg"
set arg [http::formatQuery $arg]
set query "http://www.google.pl/custom?q=$arg"
set token [http::config -useragent $agent]
set title [http::data [set token [http::geturl $query]]]
set title [string map {"\n" "" "\t" ""} $title]
set title [string map {"<em>" "\002*" "</em>" "*\002"} $title]
regexp -nocase {class=l[^>]*?>(.*?)</a><table} $title -> title2
regexp -nocase {<a href="([^"]+)"[^>]*>}  $title -> newurl
set title2 [string map {"<b>...</b>" ""} $title2]
set title2 [::htmlparse::mapEscapes $title2]
if { [string match "/interstitial?url=*" $newurl] } { set newurl "Ta strona zostala uznana za potencjalnie niebezpieczna i zostala zablokowana zgodnie z ustawieniami bezpieczenstwa" }
if { [info exists title2] && [info exists newurl] } {
putquick "PRIVMSG $channel :\002\[GOOGLE\]\002 $title2 -> $newurl"
} else {
putquick "PRIVMSG $channel :\002\[GOOGLE\]\002 Nic nie znalazlem ;<"
}
}
}
}
putlog "Google $ver by samaelszafran (www.samaelszafran.pl) loaded!"

Pobierz skrypt

Zostaw komentarz

aby udowodnić że nie jesteś botem, przepisz kod z obrazka.
Anti-Spam Image

Subscribe to Studium Szaleństwa