Quiz Memorial Forum

Welcome Guest ( Log In | Register )

 
Reply to this topicStart new topic
> Прогноз погоды (gismeteo_new.tcl) 1.0
Kreon
post Jun 4 2007, 02:55 PM
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.0Attached File  gismeteo_new.tcl ( 15.21k ) Number of downloads: 1484
1.01Attached File  gismeteo_new.tcl ( 15.08k ) Number of downloads: 1066


--------------------
Не понял сам - не дай понять другому
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Worker
post Jul 22 2007, 01:13 AM
Post #2


Посетитель
*

Group: Members
Posts: 1
Joined: 22-July 07
Member No.: 118



QUOTE(Kreon @ Jun 4 2007, 04:55 PM) *

Прогноз погоды на два дня, представляет собой переделанную версию скрипта Shrike'a.
В запросе после города можно отдельно указывать "завтра" и интересующее время суток.

Пример работы:

Помимо этого скрипт включает обновленную версию .weatherupdate'a, которой можно скачать базу городов.


Наверно, классный скрипт, только Suzi Project Patch в Сети не нашел..
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Kreon
post Jul 22 2007, 10:14 AM
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


--------------------
Не понял сам - не дай понять другому
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
TuNeR
post Aug 14 2007, 06:51 PM
Post #4


Посетитель
*

Group: Members
Posts: 2
Joined: 14-August 07
Member No.: 134



все работает, только не цветное. помнится в старой версии была возможность введя чтото в патилайне наслаждаться цветным скриптом
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Valdemar
post Aug 14 2007, 08:14 PM
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 скачаный с вашего сайта.

спасибо заранее.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Kreon
post Aug 16 2007, 02:47 PM
Post #6


Developer
******

Group: Root Admin
Posts: 396
Joined: --
From: Внешние пределы
Member No.: 2



Что выдает windrop 1.6.18sp0008 при команде .tcl encoding system с патилайна?


--------------------
Не понял сам - не дай понять другому
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Sin
post Jun 5 2008, 10:38 PM
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)
Attached File  weather.zip ( 17.96k ) Number of downloads: 725
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Kreon
post Jun 5 2008, 11:50 PM
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]. Я не помню.


--------------------
Не понял сам - не дай понять другому
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Sin
post Jun 6 2008, 07:30 AM
Post #9


Посетитель
*

Group: Members
Posts: 5
Joined: 17-May 07
Member No.: 96



спс, смена кодировки помогла
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
lingwinni
post Sep 14 2008, 01:55 PM
Post #10


Посетитель
*

Group: Members
Posts: 1
Joined: 13-September 08
Member No.: 249



*deleted*
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
YuS
post Feb 10 2009, 01:42 PM
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 {+ {} % {}}
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Alvor
post Aug 28 2009, 07:57 AM
Post #12


Участник
***

Group: Members
Posts: 30
Joined: 9-March 07
Member No.: 76



Поправил бы скрипт... не работает уже )
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Чертополох
post Aug 21 2010, 09:39 AM
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... ;/"
Ладно, если бы она у всех не работала. Так у вас же работает. С ботом я ничего не делал, все работало некоторое время назад. Может на сайте переделали что-то?
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Wraith
post Aug 23 2010, 11:32 AM
Post #14


Участник
***

Group: Members
Posts: 25
Joined: --
Member No.: 48



Вот версия 1.03. Должна работать.
Не уверена, правда, что в ней обновление базы городов (weather.dat) не поломалось.


Attached File(s)
Attached File  gismeteo_new.tcl ( 19.19k ) Number of downloads: 719
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Чертополох
post Aug 26 2010, 12:06 PM
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
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Wraith
post Aug 26 2010, 03:59 PM
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 появилось довольно много новых ключей и функций. В старых скриптах с ними не столкнешься, но постепенно они начинают встречаться все чаще и чаще.
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Чертополох
post Aug 27 2010, 12:45 AM
Post #17


Посетитель
*

Group: Members
Posts: 3
Joined: 20-August 10
Member No.: 320



спасибо за помощь. пока на первое время просто заменил строки, все заработало. тцл попозже обновлю smile.gif
User is offlineProfile CardPM
Go to the top of the page
+Quote Post
Wraith
post Aug 29 2010, 06:39 PM
Post #18


Участник
***

Group: Members
Posts: 25
Joined: --
Member No.: 48



Представляю слегка переработанную версию скрипта 1.05.

Отличия от предыдущих версий:
    Исправлено обновление городов (.weatherupdate)
    Добавлено отображение стран
    Изменился формат базы данных
Пример работы скрипта:
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)
Attached File  gismeteo_new.tcl ( 16.71k ) Number of downloads: 763
User is offlineProfile CardPM
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 User(s) are reading this topic (1 Guests and 0 Anonymous Users)
0 Members:

 



Lo-Fi Version Time is now: 16th April 2024 - 07:00 PM
Design by GPF © 2006