![]() |
![]() ![]() |
![]() |
Kreon |
![]()
Post
#1
|
![]() Developer ![]() ![]() ![]() ![]() ![]() ![]() Group: Root Admin Posts: 396 Joined: -- From: Внешние пределы Member No.: 2 ![]() |
Прогноз погоды на два дня, представляет собой переделанную версию скрипта Shrike'a.
В запросе после города можно отдельно указывать "завтра" и интересующее время суток. Пример работы: QUOTE !погода самара Сегодня вечером в городе Самара +7..+9°C, давление 753мм рт/с, ветер западный 4 м/с, влажность 81%, пасмурно с дождем. Завтра, 5 июня, температура днем составит +17..+19°C, давление 753мм рт/с, ветер северный 7 м/с, влажность 21%, малооблачно. !погода москва завтра утром Погода в городе Москва на утро вторника, 5 июня - температура +16..+18°C, давление 751мм рт/с, ветер северный 4 м/с, влажность 50%, малооблачно. Помимо этого скрипт включает обновленную версию .weatherupdate'a, которой можно скачать базу городов. 1.0 ![]() 1.01 ![]() -------------------- Не понял сам - не дай понять другому
|
Worker |
![]()
Post
#2
|
Посетитель ![]() Group: Members Posts: 1 Joined: 22-July 07 Member No.: 118 ![]() |
Прогноз погоды на два дня, представляет собой переделанную версию скрипта Shrike'a. В запросе после города можно отдельно указывать "завтра" и интересующее время суток. Пример работы: Помимо этого скрипт включает обновленную версию .weatherupdate'a, которой можно скачать базу городов. Наверно, классный скрипт, только Suzi Project Patch в Сети не нашел.. |
Kreon |
![]()
Post
#3
|
![]() Developer ![]() ![]() ![]() ![]() ![]() ![]() Group: Root Admin Posts: 396 Joined: -- From: Внешние пределы Member No.: 2 ![]() |
http://kreon.net.ru/index.php?name=Files&a...file&lid=56
http://kreon.net.ru/index.php?name=Files&a...file&lid=59 -------------------- Не понял сам - не дай понять другому
|
TuNeR |
![]()
Post
#4
|
Посетитель ![]() Group: Members Posts: 2 Joined: 14-August 07 Member No.: 134 ![]() |
все работает, только не цветное. помнится в старой версии была возможность введя чтото в патилайне наслаждаться цветным скриптом
|
Valdemar |
![]()
Post
#5
|
Посетитель ![]() Group: Members Posts: 4 Joined: 28-January 07 Member No.: 66 ![]() |
Блин... все перепробовал.. и как было указано на eggdrop.ru поменять кодировки и бота скачал с вашего сайта ...все равно выводит название города не понятно как , а остальное все по русски.
QUOTE Сегодня ночью в городе 8=A: +18..+20°C, давление 734мм рт/с, ветер северо-западный 4 м/с, влажность 78%, облачно. Завтра, 15 августа, температура днем составит +28..+30°C, давление 735мм рт/с, ветер северо-западный 4 м/с, влажность 41%, малооблачно. а нада "в городе Минск" . Как заставить бота говорить по русски город. P.S. windrop 1.6.18sp0008.zip скачаный с вашего сайта. спасибо заранее. |
Kreon |
![]()
Post
#6
|
![]() Developer ![]() ![]() ![]() ![]() ![]() ![]() Group: Root Admin Posts: 396 Joined: -- From: Внешние пределы Member No.: 2 ![]() |
Что выдает windrop 1.6.18sp0008 при команде .tcl encoding system с патилайна?
-------------------- Не понял сам - не дай понять другому
|
Sin |
![]()
Post
#7
|
Посетитель ![]() Group: Members Posts: 5 Joined: 17-May 07 Member No.: 96 ![]() |
тоже есть проблема с этим скриптом:
encoding system iso8859-1 Файл weather.dat в непонятной кодировке... оригинальный скрипт генерит файл в другой кодировке при запросе погоды: QUOTE 20:32:21 <Sin> !п Москва 20:32:29 <Service> У меня нет данных о погоде в этом городе... с алиасом: QUOTE 22:20:13 <Sin> !п moscow 22:20:23 <Service> Сегодня ночью в городе ?????? +7..+9°C, давление 746мм рт/с, ветер северо-западный 4 м/с, влажность 74%, ясно. Завтра, 6 июня, температура днем составит +15..+17°C, давление 744мм рт/с, ветер западный 2 м/с, влажность 61%, облачно. если после CODE if {[info exists sp_version]} {set city [encoding convertfrom cp1251 [binary format H* [string map {% {}} $city]]]} else {set city [binary format H* [string map {% {}} $city]]} написать что то вроде CODE set city [encoding convertto cp1251 $city] результат:QUOTE 22:31:04 <Service> Погода в городе %CC%EE%F1%EA%E2%E0 на вечер пятницы, 6 июня - температура +14..+16°C, давление 743мм рт/с, ветер северный 3 м/с, влажность 71%, малооблачно. подскажите в чем проблема ЗЫ: федора 7, еггдроп 1.6.18 с патчем eggdrop1.6.18-sp.0008.diff ЗЫЫ: на всякий случай вложил файл weather.dat Attached File(s) ![]() |
Kreon |
![]()
Post
#8
|
![]() Developer ![]() ![]() ![]() ![]() ![]() ![]() Group: Root Admin Posts: 396 Joined: -- From: Внешние пределы Member No.: 2 ![]() |
Ну не будет никогда работать правильно патченный бот с вот такой вот кодировкой -- iso8859-1.
И поддерживать совместимость в скриптах с нею тоже никто не станет. Поэтому: либо выставляйте encoding system cp1251, либо ставьте бота без патча и пробуйте тыкать в скрипте другие encoding convertto во ВСЕХ процедурах, которые получают данные с сайта, а также перед egglib::urlencode'ом, если там не предусмотрены проверки на [info exists sp_version]. Я не помню. -------------------- Не понял сам - не дай понять другому
|
Sin |
![]()
Post
#9
|
Посетитель ![]() Group: Members Posts: 5 Joined: 17-May 07 Member No.: 96 ![]() |
спс, смена кодировки помогла
|
lingwinni |
![]() ![]()
Post
#10
|
Посетитель ![]() Group: Members Posts: 1 Joined: 13-September 08 Member No.: 249 ![]() |
*deleted*
|
YuS |
![]()
Post
#11
|
Посетитель ![]() Group: Members Posts: 1 Joined: 10-February 09 Member No.: 276 ![]() |
CODE if {[info exists sp_version]} {set city [encoding convertfrom cp1251 [binary format H* [string map {% {}} $city]]]} else {set city [binary format H* [string map {% {}} $city]]} На этой строчке спотыкается запрос погоды с названием города из двух слов, например: !п нижн.тагил как вариант, вот такой костыль с заменой мап помогает: map {% {}} => map {+ {} % {}} |
Alvor |
![]()
Post
#12
|
![]() Участник ![]() ![]() ![]() Group: Members Posts: 30 Joined: 9-March 07 Member No.: 76 ![]() |
Поправил бы скрипт... не работает уже )
|
Чертополох |
![]()
Post
#13
|
Посетитель ![]() Group: Members Posts: 3 Joined: 20-August 10 Member No.: 320 ![]() |
Привет.
странно, у вас на канале викторины погода работает, у меня нет... Бот просто не может забрать погоду с сайта. В дцц пишет подверждение команды (pub:weather [nick: #chan] town) и больше ничего. Пробовал и версию 1.0, и 1.01, на разных серверах, разных ботах. А при попытке обновить базу (.weatherupdate) всегда получаю "[weather] Failed to get cities database... ;/" Ладно, если бы она у всех не работала. Так у вас же работает. С ботом я ничего не делал, все работало некоторое время назад. Может на сайте переделали что-то? |
Wraith |
![]()
Post
#14
|
Участник ![]() ![]() ![]() Group: Members Posts: 25 Joined: -- Member No.: 48 ![]() |
Вот версия 1.03. Должна работать.
Не уверена, правда, что в ней обновление базы городов (weather.dat) не поломалось. Attached File(s) ![]() |
Чертополох |
![]()
Post
#15
|
Посетитель ![]() Group: Members Posts: 3 Joined: 20-August 10 Member No.: 320 ![]() |
Спасибо, Арья.
Скрипт 1.03 все-таки коннектится и берет погоду. Но не ту. Сначала возникли ошибки, видно в патилайне: Tcl error [::weather::pub_weather]: bad option "-nocase": must be -all, -ascii, -decreasing, -dictionary, -exact, -glob, -increasing, -inline, -integer, -not, -real, -regexp, -sorted, or -start Tcl error [::weather::pub_weather]: bad option "-nocase": must be -all, -ascii, -decreasing, -dictionary, -exact, -glob, -increasing, -inline, -integer, -not, -real, -regexp, -sorted, or -start Я подумал, что дело в версии tcl, но обновлять пока не стал, точно не знаю. Исправил такие строки: CODE set num [lsearch -regexp -nocase $weather(shortcuts_in) "^($query)$" ] ... set num [lsearch -regexp -nocase $weather(cities) "^($query)\ \#(.*?)$"] на строки CODE set num [lsearch -regexp -not $weather(shortcuts_in) "^($query)$" ] ... set num [lsearch -regexp -not $weather(cities) "^($query)\ \#(.*?)$"] то есть изменил параметр -nocase на -not. Менял так, на обум, но ошибка пропала. Скрипт после этого хоть и заработал, но начал давать не ту погоду, которая нужна, а погоду города, который стоит первым в дата-файле. В не зависимости от запрашиваемого города. Вот такое происходит в патилайне: CODE [egglib] Initialized HTTP session (::weather::, http337991954) [egglib] Setting up Connection-Timeout: 20 sec [egglib] Setting up User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 1.0.3705) [egglib] Setting up HTTP-Method: GET [egglib] Setting up Protocol: HTTP/1.0 [egglib] Connecting to informer.gismeteo.ru:80 [egglib] Requesting /xml/10394_1.xml [egglib] getting data (http337991954) [egglib] got all data. executing callback... (::weather::on_data) [egglib] Destroying HTTP Session (::weather::, http337991954) [egglib] Non destroyed variables: [egglib] HTTP Session succesfuly destroyed. [egglib] Requesting /xml/10394_1.xml - город с ид 10394 просто стоит первым в дата-файле, его погоду и показывает все время в ответ на запрос. Обновить базу не получается: CODE Updating cities database... [egglib] Initialized HTTP session (::weather::cityfile_, http2659390) [egglib] Setting up Connection-Timeout: 20 sec [egglib] Setting up User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 1.0.3705) [egglib] Setting up HTTP-Method: GET [egglib] Setting up Protocol: HTTP/1.0 [egglib] Connecting to gen.gismeteo.ru:80 [egglib] HTTP Error... executing callback... (::weather::cityfile_on_error) [weather] Failed to get cities database...;/ [egglib] Destroying HTTP Session (::weather::cityfile_, http2659390) [egglib] Non destroyed variables: [egglib] HTTP Session succesfuly destroyed. то есть, как я понял, не может соединиться с gen.gismeteo.ru:80 Возможно, дело в моих исправлениях, или в дата-файле - я не знаю. Пробовал разные дата-файлы, все время дает первый город. Вот что у меня (еггдроп 1.6.19): CODE .tcl [info patchlevel] Tcl error: invalid command name "8.4.19" .tcl $::sp_version Tcl error: invalid command name "0009" .encoding system Tcl: cp1251 |
Wraith |
![]()
Post
#16
|
Участник ![]() ![]() ![]() Group: Members Posts: 25 Joined: -- Member No.: 48 ![]() |
Да, в используемой вами версии tcl нет поддержки ключа -nocase в команде lsearch.
А проблема с отображением погоды не по тому городу взялась именно из-за внесенных вами изменений. Если свериться с документацией, то можно узнать, что параметр -not команды lsearch означает следующее: QUOTE -not This negates the sense of the match, returning the index of the first non-matching value in the list. То есть с таким параметром lsearch будет возвращать первый попавшийся элемент списка из числа тех, которые не совпадают с запрошенным шаблоном. А это явно не то, что вам хотелось бы получить. Поэтому здесь вариантов два: Либо верните обратно -nocase обновите tcl до версии 8.5.x, где есть поддержка ключа регистронезависимого поиска, либо исправьте строки с lsearch на такие: CODE set num [lsearch -regexp $weather(shortcuts_in) "(?i)^($query)$" ] set num [lsearch -regexp $weather(cities) "(?i)^($query)\ \#(.*?)$"] Здесь (?i) - это идентификатор регистронезависимости в терминологии регулярных выражений regexp, он должен поддерживаться старыми версиями tcl. Лично я бы порекомендовала обновить tcl, так как в версии 8.5 по сравнению с 8.4 появилось довольно много новых ключей и функций. В старых скриптах с ними не столкнешься, но постепенно они начинают встречаться все чаще и чаще. |
Чертополох |
![]()
Post
#17
|
Посетитель ![]() Group: Members Posts: 3 Joined: 20-August 10 Member No.: 320 ![]() |
спасибо за помощь. пока на первое время просто заменил строки, все заработало. тцл попозже обновлю
![]() |
Wraith |
![]()
Post
#18
|
Участник ![]() ![]() ![]() Group: Members Posts: 25 Joined: -- Member No.: 48 ![]() |
Представляю слегка переработанную версию скрипта 1.05.
Отличия от предыдущих версий:
Добавлено отображение стран Изменился формат базы данных QUOTE >> !погода москва << Сегодня вечером в городе Москва +6..+8°C, давление 738мм рт/с, ветер юго-западный 5 м/с, влажность 94%, пасмурно. В понедельник, 30 августа, температура днем составит +12..+14°C, давление 745мм рт/с, ветер западный 4 м/с, влажность 61%, облачно. >> !погода нижний новгород << Сегодня вечером в городе Нижний Новгород +10..+12°C, давление 743мм рт/с, ветер юго-западный 3 м/с, влажность 85%, малооблачно. В понедельник, 30 августа, температура днем составит +12..+14°C, давление 748мм рт/с, ветер юго-западный 6 м/с, влажность 61%, малооблачно. >> !погода йыхви << Сегодня вечером в городе Йыхви (Эстония) +9..+11°C, давление 749мм рт/с, ветер северо-восточный 5 м/с, влажность 68%, ясно. В понедельник, 30 августа, температура днем составит +13..+15°C, давление 754мм рт/с, ветер северный 2 м/с, влажность 49%, малооблачно. Внимание! После установки необходимо обновить базу городов с помощью команды .weatherupdate с патилайна. Для корректной работы скрипта требуется Tcl 8.5 и пропатченный eggdrop/windrop. Attached File(s) ![]() |
![]() ![]() |
Lo-Fi Version | Time is now: 28th May 2024 - 02:02 PM |