biathlon.tcl

Просьбы о написании новых скриптов или поиске уже существующих.

Модератор: Модераторы

biathlon.tcl

Сообщение Radiosignal » 30 ноя 2011 21:58

biathlon.tcl - Выводит статистику c http://winter.sport-express.ru/biathlon ... 2/ratings/ по Кубку мира - общий зачет женщин и мужчин по гонкам, и по командному зачету.
Radiosignal
 
Сообщения: 87
Зарегистрирован: 17 июн 2009 18:01
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.

Re: biathlon.tcl

Сообщение tvrsh » 01 дек 2011 08:55

Вот пример с комментариями. Все элементарно и просто, про ф1 пишется ничуть не сложнее. Не тестировал.

TCL: [ Скачать ] [ Скрыть ]
# Биндим паблик команду.
bind pub - !biathlon biathlon

# Начинаем процедуру.
proc biathlon {nick uhost hand chan text} {

# Указываем юзерагент.
::http::config -useragent "UserAgent"

# Урл и таймаут.
set tok [::http::geturl "http://m.sport-express.ru/winter/biathlon/ratings.wtm?ratingtype=n&sex=0" -timeout 15000]

# Получаем содержимое страницы.
set data [::http::data $tok]

# Очищаем токен.
::http::cleanup $tok

# Превращаем данные в одну строку заменив перенос строки на пустоту.
regsub -all -- {\n} $data "" data

# Забираем тайтл таблицы и выводим его в канал.
regexp -- {<h2 class=\"gray_section\">(.*?)</h2>} $data "" title
putserv "
PRIVMSG $chan :$title"

# Забираем нужную нам часть с таблицей стран и очков.
regexp -- {<tr class=\"playtable_values\">(.*?)</table>} $data "
" a

# Заменяем тэги на символ | чтобы потом разбить по ним строку.
regsub -all -- {<tr class=\"playtable_values\">} $a "
|" a

# Перебираем каждую страну разбивая строку по |, достаем номер, название и очки. Выводим в канал.
foreach line {[split $a "
|"]} {
    regexp -- {<td>(.*?)</td>.*?<td>(.*?)</td>.*?<td class=\"last\">(.*?)</td>} $a "
" b c d
    putserv "
PRIVMSG $chan :$b $c $d"
}

# Процедура закончена.
}
Have fun.
-
Получить помощь можно на каналах #egghelp в сети IrcNet.ru и #eggdrop в сети RusNet(Ключ канала eggdrop).
Перед созданием новой темы внимательно читайте Правила оформления топиков.
Аватара пользователя
tvrsh
 
Сообщения: 1230
Зарегистрирован: 19 авг 2008 16:55
Откуда: Russian Federation, Podolsk
Благодарил (а): 6 раз.
Поблагодарили: 130 раз.
Версия бота: Eggdrop 1.6.20+suzi

Re: biathlon.tcl

Сообщение Radiosignal » 01 дек 2011 16:48

Спасибо за скрипт tvrsh. Но там ошибка появилась.
Tcl error [biathlon]: list element in quotes followed by "]" instead of space
.tcl set errorInfo
Tcl: list element in quotes followed by "]" instead of space
Tcl: while executing
Tcl: "foreach line {[split $a "|"]} {
Tcl: regexp -- {<td>(.*?)</td>.*?<td>(.*?)</td>.*?<td class=\"last\">(.*?)</td>} $a "" b c d
Tcl: putserv "PRIVMSG $chan..."
Tcl: (procedure "biathlon" line 29)
Tcl: invoked from within
Tcl: "biathlon $_pub1 $_pub2 $_pub3 $_pub4 $_pub5"

Но, когда убираешь скобку ], то выводит только одну строку со страной.
Radiosignal
 
Сообщения: 87
Зарегистрирован: 17 июн 2009 18:01
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.

Re: biathlon.tcl

Сообщение Vertigo » 01 дек 2011 19:43

foreach line {[split $a "|"]} { - лолшто
foreach line [split $a "|"] { - пробуй.
Аватара пользователя
Vertigo
 
Сообщения: 107
Зарегистрирован: 20 авг 2008 23:49
Откуда: Москва
Благодарил (а): 0 раз.
Поблагодарили: 37 раз.
Версия бота: Eggdrop 1.8

Re: biathlon.tcl

Сообщение tvrsh » 01 дек 2011 21:25

Я их специально вписал, чтобы вас проверить. Да.
Have fun.
-
Получить помощь можно на каналах #egghelp в сети IrcNet.ru и #eggdrop в сети RusNet(Ключ канала eggdrop).
Перед созданием новой темы внимательно читайте Правила оформления топиков.
Аватара пользователя
tvrsh
 
Сообщения: 1230
Зарегистрирован: 19 авг 2008 16:55
Откуда: Russian Federation, Podolsk
Благодарил (а): 6 раз.
Поблагодарили: 130 раз.
Версия бота: Eggdrop 1.6.20+suzi

Re: biathlon.tcl

Сообщение Radiosignal » 01 дек 2011 21:32

Выдает только одну строку.
Кубок наций (м.)
1 Франция 413
Radiosignal
 
Сообщения: 87
Зарегистрирован: 17 июн 2009 18:01
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.

Re: biathlon.tcl

Сообщение tvrsh » 01 дек 2011 21:43

Замени
    regexp -- {<td>(.*?)</td>.*?<td>(.*?)</td>.*?<td class=\"last\">(.*?)</td>} $a "" b c d
на
    regexp -- {<td>(.*?)</td>.*?<td>(.*?)</td>.*?<td class=\"last\">(.*?)</td>} $line "" b c d

А то регэксп брался не по каждой $line, а по общей $a.
Have fun.
-
Получить помощь можно на каналах #egghelp в сети IrcNet.ru и #eggdrop в сети RusNet(Ключ канала eggdrop).
Перед созданием новой темы внимательно читайте Правила оформления топиков.
Аватара пользователя
tvrsh
 
Сообщения: 1230
Зарегистрирован: 19 авг 2008 16:55
Откуда: Russian Federation, Podolsk
Благодарил (а): 6 раз.
Поблагодарили: 130 раз.
Версия бота: Eggdrop 1.6.20+suzi

Re: biathlon.tcl

Сообщение Radiosignal » 01 дек 2011 21:47

Спасибо Vertigo и tvrsh.

Добавлено спустя 20 минут 41 секунду:
tvrsh, а можешь добавить команду, что б можно было выбирать просмотр результатов - от Общего зачета до Эстафет. Например, !biathlon 1 - выдает результат по Кубку наций мужчин и так далее.
Radiosignal
 
Сообщения: 87
Зарегистрирован: 17 июн 2009 18:01
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.


Вернуться в Заявки на скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3

cron