f1.tcl

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

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

f1.tcl

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

f1.tcl - Выводит статистику c http://www.f1-world.ru/ по Кубку конструкторов и личный зачет гонщиков.
Radiosignal
 
Сообщения: 59
Зарегистрирован: 17 июн 2009 18:01
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.

Re: f1.tcl

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

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

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

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

# Урл и таймаут.
set tok [::http::geturl "http://www.f1-world.ru/champ2011/champteams.php" -timeout 15000]

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

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

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

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

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

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

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

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

Re: f1.tcl

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

Выборочно выдает результаты таблицы.
1 Red Bull Renault 12 650
4 Mercedes 165
7 Sauber Ferrari 44
12 Virgin Cosworth 0
Radiosignal
 
Сообщения: 59
Зарегистрирован: 17 июн 2009 18:01
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.

Re: f1.tcl

Сообщение tvrsh » 02 дек 2011 14:46

Что-то пока не вижу из-за чего не выводятся все строки, вроде html у них у всех одинаковый.
Можно сделать так. Заменить форич на на этот:
foreach line [split $a "|"] {
    regexp -- {<.*?>} $line "" line
    putserv "PRIVMSG $chan :$line"
}

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

Re: f1.tcl

Сообщение Radiosignal » 02 дек 2011 15:26

Теперь только одну строку выдает с годом 2011 и все.
Radiosignal
 
Сообщения: 59
Зарегистрирован: 17 июн 2009 18:01
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.

Re: f1.tcl

Сообщение Radiosignal » 02 дек 2011 18:02

Используя твой скрипт по биатлону, сделал для формулы. Выводит статистику нормально. Но вот как вывести не только личный зачет гонщика, но и кубок конструктора. tvrsh, можешь добавить команду для этого.
Radiosignal
 
Сообщения: 59
Зарегистрирован: 17 июн 2009 18:01
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.

Re: f1.tcl

Сообщение tvrsh » 02 дек 2011 20:25

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

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

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

# Урл и таймаут.
set tok [::http::geturl "http://www.f1-world.ru/champ2011/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 -- {<div class="head10b">(.*?)</div>} $data "" title
putserv "PRIVMSG $chan :$title"

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

# Заменяем тэги на символ | чтобы потом разбить по ним строку.
regsub -all -- {</tr>} $a "|" a
regsub -all -- {<a href.*?>} $a "" a
regsub -all -- {<img.*?>} $a "" a
regsub -all -- {<td.*?>} $a "" a
regsub -all -- {&nbsp;} $a "n/a" a

set i 0

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

# Процедура закончена.
}


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

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

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

# Урл и таймаут.
set tok [::http::geturl "http://www.f1-world.ru/champ2011/champteams.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 -- {<div class="head10b">(.*?)</div>} $data "" title
putserv "PRIVMSG $chan :$title"

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

# Заменяем тэги на символ | чтобы потом разбить по ним строку.
regsub -all -- {</tr>} $a "|" a
regsub -all -- {<a href.*?>} $a "" a
regsub -all -- {<img.*?>} $a "" a
regsub -all -- {<td.*?>} $a "" a
regsub -all -- {&nbsp;} $a "n/a" a

set i 0

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

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

Re: f1.tcl

Сообщение Radiosignal » 02 дек 2011 23:38

Оба скрипта работают. tvrsh спасибо.
Radiosignal
 
Сообщения: 59
Зарегистрирован: 17 июн 2009 18:01
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.


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

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

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

cron