# Биндим паблик команду. bind pub - !pilots f1 # Начинаем процедуру. proc f1 {nick uhost hand chan text} { # Указываем юзерагент. ::http::config -useragent "UserAgent" # Урл и таймаут. set tok [::http::geturl "http://www.f1-world.ru/champ2013/champdrivers.php" -timeout 15000] # Получаем содержимое страницы. set data [::http::data $tok] # Очищаем токен. ::http::cleanup $tok # Проверяем на наличие сузи и перекодируем данные if {[info exists ::sp_version]} { set data [encoding convertfrom cp1251 $data] } else { set data [encoding convertto cp1251 [encoding convertfrom utf-8 $data]] } # Превращаем данные в одну строку заменив перенос строки на пустоту. regsub -all -- {\n} $data "" data # Забираем тайтл таблицы и выводим его в канал. regexp -- {
(.*?)
} $data "" title putserv "PRIVMSG $chan :$title" # Забираем нужную нам часть с таблицей стран и очков. regexp -- {(.*?)
} $data "" a # Заменяем тэги на символ | чтобы потом разбить по ним строку. regsub -all -- {} $a "|" a regsub -all -- {} $a "" a regsub -all -- {} $a "" a regsub -all -- {} $a "" a regsub -all -- {} $a "" a regsub -all -- {} $a "" a regsub -all -- { } $a "n/a" a set i 0 # Перебираем каждую страну разбивая строку по |, достаем номер, название и очки. Выводим в канал. foreach line [lrange [split $a "|"] 1 end] { if {$i < 10} { regexp -- {(.*?)(.*?)(.*?)(.*?)(.*?)(.*?)(.*?)} $line "" b c d e f g h putserv "PRIVMSG $chan :$b - $c - $d - $e - $f - $g - $h" } incr i } # Процедура закончена. }