f1.tcl

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

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

f1.tcl

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

f1.tcl - Выводит статистику c http://www.f1-world.ru/ по Кубку конструкторов и личный зачет гонщиков.
Radiosignal
 
Сообщения: 87
Зарегистрирован: 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
 
Сообщения: 1230
Зарегистрирован: 19 авг 2008 16:55
Откуда: Russian Federation, Podolsk
Благодарил (а): 6 раз.
Поблагодарили: 130 раз.
Версия бота: 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
 
Сообщения: 87
Зарегистрирован: 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
 
Сообщения: 1230
Зарегистрирован: 19 авг 2008 16:55
Откуда: Russian Federation, Podolsk
Благодарил (а): 6 раз.
Поблагодарили: 130 раз.
Версия бота: Eggdrop 1.6.20+suzi

Re: f1.tcl

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

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

Re: f1.tcl

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

Используя твой скрипт по биатлону, сделал для формулы. Выводит статистику нормально. Но вот как вывести не только личный зачет гонщика, но и кубок конструктора. tvrsh, можешь добавить команду для этого.
Radiosignal
 
Сообщения: 87
Зарегистрирован: 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
 
Сообщения: 1230
Зарегистрирован: 19 авг 2008 16:55
Откуда: Russian Federation, Podolsk
Благодарил (а): 6 раз.
Поблагодарили: 130 раз.
Версия бота: Eggdrop 1.6.20+suzi

Re: f1.tcl

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

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

Re: f1.tcl

Сообщение Radiosignal » 23 апр 2013 21:21

Скрипт стал выдавать ошибку
Tcl error [f1]: can't read "b": no such variable
и пишет только одну строку с годом чемпионата 2013. С сайтом все нормально.
tvrsh, можешь подправить скрипт или переделать его под этот сайт http://formula.sport-express.ru/personal/.
Заранее спасибо.
Radiosignal
 
Сообщения: 87
Зарегистрирован: 17 июн 2009 18:01
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.

Re: f1.tcl

Сообщение tvrsh » 09 май 2013 10:04

Замени в урлах для парсинга champ2011 на champ2013.
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: f1.tcl

Сообщение Radiosignal » 10 май 2013 15:46

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

Re: f1.tcl

Сообщение tvrsh » 01 июн 2013 17:29

Немного припозднился.

Пилоты:
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/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 -- {<div class="head10b">(.*?)</div>} $data "" title
putserv "PRIVMSG $chan :$title"

# Забираем нужную нам часть с таблицей стран и очков.
regexp -- {<table class="f1cup" width="92%" align="center" >(.*?)</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 -- {<div.*?>} $a "" a
regsub -all -- {</div>} $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>(.*?)</a></td></td>(.*?)</td>(.*?)</td>(.*?)</td>(.*?)</td>(.*?)</td>} $line "" b c d e f g h
        putserv "PRIVMSG $chan :$b - $c - $d - $e - $f - $g - $h"
    }
    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/champ2013/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 class="f1cup" width="80%" align="center" >(.*?)</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 -- {<div.*?>} $a "" a
regsub -all -- {</div>} $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>(.*?)</td>(.*?)</td>(.*?)</td>(.*?)</td>(.*?)</td>} $line "" b c d e f g
        putserv "PRIVMSG $chan :$b - $c - $d - $e - $f - $g"
    }
    incr i
}

# Процедура закончена.
}
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: f1.tcl

Сообщение Radiosignal » 01 июн 2013 22:24

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

Re: f1.tcl

Сообщение Radiosignal » 24 мар 2014 23:11

tvrsh привет. Сайт поменял таблицы статистики, можешь подправить скрипты. Адреса со статистикой :
http://www.f1-world.ru/champ2014/champdrivers.php
http://www.f1-world.ru/champ2014/champteams.php
Radiosignal
 
Сообщения: 87
Зарегистрирован: 17 июн 2009 18:01
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.

Re: f1.tcl

Сообщение tvrsh » 04 апр 2014 19:42

Мне помогла просто замена даты в ссылке с 13 на 14.
Как я понимаю, все остальное на сайте осталось неизменным:
<tvrsh> !pilots
<+bionic> Чемпионат пилотов 2014
<+bionic> 1 - Нико Росберг - Mercedes - 1 - n/a
<+bionic> 2 - Льюис Хэмильтон - Mercedes - 1 - 2
<+bionic> 3 - Фернандо Алонсо - Ferrari - n/a - n/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: f1.tcl

Сообщение Radiosignal » 04 апр 2014 21:42

Да, это я сделал в первую очередь. Но там они изменили таблицу. Добавились столбцы ЛК и Очки.
Radiosignal
 
Сообщения: 87
Зарегистрирован: 17 июн 2009 18:01
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.

Re: f1.tcl

Сообщение tvrsh » 04 апр 2014 22:56

Обновил скрипты в предыдущем сообщении. Не тестировал, пробуй.
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: f1.tcl

Сообщение Radiosignal » 05 апр 2014 00:59

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


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

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

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

cron