eweather2.tcl - Easy weather 2. Не простая погода с Яндекса.

Решение вопросов при работе с TCL скриптами.

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

eweather2.tcl - Easy weather 2. Не простая погода с Яндекса.

Сообщение tvrsh » 08 авг 2010 00:35

###
#
# Название: eweather.tcl
# Версия: 3.0
# Автор: tvrsh
# Оффсайт: http://egghelp.ru/
#
###
#
# Описание: Скрипт "не простой" погоды с Яндекса. Теперь работает с базой(12000+) городов.
# В скрипте есть запоминалка последнего посмотренного города при просмотре сегодняшней погоды. То-есть будет показываться погода
# при команде без параметров. Как только вы посмотрите погоду на любой другой день кроме сегодняшнего, то запоминалка для вас
# сбрасывается. Объяснить трудно но оно работает.
#
###
#
# Версион хистори:
#
# 1.0(20.03.2010) Первая паблик версия.
# 1.1(21.03.2010) + небольшой хелп по использованию
# + погода в случайном городе
# + небольшие изменения скрипта
# 2.0(24.07.2010) Собрана база городов и скрипт переписан для работы с ней.
# 2.1(26.07.2010) Запоминалка последнего города и показ погоды в нем при команде без параметров.
# 2.2(12.08.2010) Погода на неделю если перед городом поставить +.
# 2.3(12.08.2010) Исправлена ошибка с минусовой температурой на ботах с сузи.
# 2.4(28.09.2010) Исправлена ошибка поиска "многословных" городов.
# 19.11.2010 +сортировка найденных городов по алфавиту.
# 2.5(17.12.2010) Переписан скрипт и база под новый формат запросов сайта.
# + раскраска температуры (с) #eggdrop @ RusNet.
# + много обновлений в оформлении.
# 2.6(25.06.2011) Обновлена база городов.
# + небольшие поправки в недельном и дневном выводах.
# 2.7(29.11.2011) Добавлено локальное время, время и место обновления данных о погоде.
# + обновлен вывод в канал всвязи с увеличением размера сообщения.
# + короткие алиасы городов.
# 2.8(19.02.2012) Скрипт обновлен после изменений на сайте.
# 2.9(06.03.2012) Добавлен показа восхода/захода.
# 3.0(09.06.2013) Обновил вывод и добавил показ вчерашней температуры.
#
###


Пример работы:
# Просто просмотр погоды.
<tvrsh> !п подольск
<@bionic> Пoдoльcк: -9 °C, яcнo. Вocхoд: 07:48/19:16, Дaвлeниe: 758 мм.pт.cт, Вeтep: югo-вocтoчный, 4.0 м/c (14.4 км/ч), Влaжнocть: 58%, Вeчepoм: -14 °C, Hoчью: -18 °C. (138.394мc.)

# Поиск города в базе и показ первого из списка найденных.
<tvrsh> !п под*
<@bionic> По вашему запросу "под" найдено 16 городов. Первые 5 найденных: Подбуж, Подволочиск, Подгайцы, Подгоренский, Подгорица (Черногория).
<@bionic> Пoдбyж: +1 °C, яcнo. Вocхoд: 07:48/19:16, Дaвлeниe: 729 мм.pт.cт, Вeтep: Штиль, Влaжнocть: 74%, Вeчepoм: +2 °C, Hoчью: +1 °C. (137.545мc.)

# Просмотр погоды в городе из списка найденных.
<tvrsh> !п под* -3
<@bionic> По вашему запросу "под" найдено 16 городов. Первые 5 найденных: Подбуж, Подволочиск, Подгайцы, Подгоренский, Подгорица (Черногория).
<@bionic> Пoдoльcк: -9 °C, яcнo. Вocхoд: 07:48/19:16, Дaвлeниe: 758 мм.pт.cт, Вeтep: югo-вocтoчный, 4.0 м/c (14.4 км/ч), Влaжнocть: 58%, Вeчepoм: -14 °C, Hoчью: -18 °C. (123.724мc.)

# Срабатывает запоминалка последнего города, которая сбросится при просмотре погода на следующие дни.
<tvrsh> !п
<@bionic> Пoдoльcк: -9 °C, яcнo. Вocхoд: 07:48/19:16, Дaвлeниe: 758 мм.pт.cт, Вeтep: югo-вocтoчный, 4.0 м/c (14.4 км/ч), Влaжнocть: 58%, Вeчepoм: -14 °C, Hoчью: -18 °C. (150.791мc.)

# Просмотр погоды на неделю.
<@tvrsh> !пп +подольск
<@bionic> Пoдoльcк: зaвтpa 20 фeвpaля: oблaчнo c пpoяcнeниями -10/-10. вт 21: oблaчнo -2/-6. cp 22: oблaчнo -3/-6. чт 23: oблaчнo, вpeмeнaми cнeг -1/-2. пт 24: oблaчнo, нeбoльшoй дoждь co cнeгoм 0/-1. cб 25: oблaчнo, нeбoльшoй cнeг 0/-3. вc 26: oблaчнo, нeбoльшoй cнeг -1/-6. (171.096мc.)


Также показывается время выполнения запроса. Кому не нравится, то легко убрать.
Инструкция по установке в шапке скрипта.

Скачать скрипт: eweather2.tcl
Скачать базу городов: ewbase.txt
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: eweather2.tcl - Easy weather 2. Не простая погода с Янде

Сообщение tvrsh » 13 июн 2011 14:14

wr`, а пользоваться поиском по форуму ты не умеешь?
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: eweather2.tcl - Easy weather 2. Не простая погода с Янде

Сообщение wr` » 13 июн 2011 14:27

прошу прощения поспешил с вопросом,но погода не заработала,пишет город не найден,а база городов в корне бота,не пойму что не так
Аватара пользователя
wr`
 
Сообщения: 121
Зарегистрирован: 26 май 2009 21:17
Благодарил (а): 19 раз.
Поблагодарили: 0 раз.
Версия бота: Eggdrop 1.6.21+suzi

Re: eweather2.tcl - Easy weather 2. Не простая погода с Янде

Сообщение sad » 14 июн 2011 03:32

tvrsh писал(а):Попробуйте в строке
regsub -all -- "<h2>| </h2>" $wcity "$eweather(color2)" wcity
убрать пробел между | и <.

Действительно, попробовали - результат тот же самый - в конце любого города идёт </h2>.
Нежелание играться - первый признак деградации ;)
Аватара пользователя
sad
 
Сообщения: 28
Зарегистрирован: 15 авг 2010 16:17
Откуда: Комсомольск-на-Амуре
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Версия бота: Eggdrop 1.6.21+suzi

Re: eweather2.tcl - Easy weather 2. Не простая погода с Янде

Сообщение tvrsh » 15 июн 2011 20:51

sad писал(а):Действительно, попробовали - результат тот же самый - в конце любого города идёт </h2>.

<tvrsh> !пп яровое
<+bionic> Алтайский край, Яровое сейчас: +24 °C,Ясно,Ветер: северо-западный, 5 м/с (18 км/ч),Давление: 747 мм рт. ст.,Влажность: 17%,Восход: 05:19,Заход: 22:12. Местное время: 11:49 (309.395мc.)
<tvrsh> !пп москва
<+bionic> Москва сейчас: +20 °C,Облачно,Ветер: северный, 1 м/с (4 км/ч),Давление: 745 мм рт. ст.,Влажность: 49%,Восход: 04:44,Заход: 22:15. Местное время: 08:49 (313.486мc.)
<tvrsh> !пп дели
<+bionic> Индия, Дели сейчас: +30 °C,Малооблачно,Ветер: восточный, 4 м/с (14 км/ч),Давление: 730 мм рт. ст.,Влажность: 70%,Восход: 05:22,Заход: 19:20. Местное время: 10:20 (756.495мc.)


Добавлено спустя 9 минут 41 секунду:
Re: eweather2.tcl - Easy weather 2. Не простая погода с Яндекса.
Обновил скрипт в архиве. Если и теперь не будет работать то дело точно не в скрипте.
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: eweather2.tcl - Easy weather 2. Не простая погода с Янде

Сообщение wr` » 15 июн 2011 21:15

скачал,всеравно не работает :( в чем может быть проблема?
вот ошибка которую у меня выдает
•(21:13:38)• <(> [21:13:46] Tcl error [::eweather::eweather_pub]: can't read "wcity": no such variable
•(21:13:42)• <ban> .set errorInfo
•(21:13:42)• <(> [21:13:50] #ban# set errorInfo
•(21:13:42)• <(> Currently: can't read "wcity": no such variable
•(21:13:42)• <(> Currently: while executing
•(21:13:42)• <(> Currently: "regsub -all -- "\n|\t| " $wcity "" wcity"
•(21:13:42)• <(> Currently: (procedure "::eweather::eweather_parce" line 29)
•(21:13:42)• <(> Currently: invoked from within
•(21:13:42)• <(> Currently: "::eweather::eweather_parce $nick $uhost $hand $chan $query"
•(21:13:42)• <(> Currently: (procedure "::eweather::eweather_proc" line 119)
•(21:13:42)• <(> Currently: invoked from within
•(21:13:42)• <(> Currently: "::eweather::eweather_proc $nick $uhost $hand $chan $text"
•(21:13:42)• <(> Currently: (procedure "::eweather::eweather_pub" line 8)
•(21:13:42)• <(> Currently: invoked from within
•(21:13:42)• <(> Currently: "::eweather::eweather_pub $_pub1 $_pub2 $_pub3 $_pub4 $_pub5"
Аватара пользователя
wr`
 
Сообщения: 121
Зарегистрирован: 26 май 2009 21:17
Благодарил (а): 19 раз.
Поблагодарили: 0 раз.
Версия бота: Eggdrop 1.6.21+suzi

Re: eweather2.tcl - Easy weather 2. Не простая погода с Янде

Сообщение tvrsh » 15 июн 2011 21:27

Понятия не имею.
У твоего бота есть интернет? Ему доступна страница с погодой?
После строки
     catch {set eweather_tok [::http::geturl "http://pogoda.yandex.ru/$query/" -timeout "20000"]} error
 
добавь
putlog "http://pogoda.yandex.ru/$query/"
запроси погоду и покажи что у тебя выведется в патилайн при этом.
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: eweather2.tcl - Easy weather 2. Не простая погода с Янде

Сообщение wr` » 15 июн 2011 21:32

•(21:31:30)• <(> [21:31:38] [eweather] ban/#chan
•(21:31:30)• <(> [21:31:38] http://pogoda.yandex.ru//moscow//
•(21:31:30)• <(> [21:31:38] Tcl error [::eweather::eweather_pub]: can't read "wcity": no such variable
Аватара пользователя
wr`
 
Сообщения: 121
Зарегистрирован: 26 май 2009 21:17
Благодарил (а): 19 раз.
Поблагодарили: 0 раз.
Версия бота: Eggdrop 1.6.21+suzi

Re: eweather2.tcl - Easy weather 2. Не простая погода с Янде

Сообщение sad » 17 июн 2011 04:21

Вы конечно неповерите, tvrch, но на команду !п яровое бот выдает то же самое, что и у wr`:
.set errorInfo
[11:07] #sad# set errorInfo
Currently: can't read "wcity": no such variable
Currently: while executing
Currently: "regsub -all -- "\n|\t| " $wcity "" wcity"
Currently: (procedure "::eweather::eweather_parce" line 29)
Currently: invoked from within
Currently: "::eweather::eweather_parce $nick $uhost $hand $chan $query"
Currently: (procedure "::eweather::eweather_proc" line 119)
Currently: invoked from within
Currently: "::eweather::eweather_proc $nick $uhost $hand $chan $text"
Currently: (procedure "::eweather::eweather_pub" line 8)
Currently: invoked from within
Currently: "::eweather::eweather_pub $_pub1 $_pub2 $_pub3 $_pub4 $_pub5"

а во всех остальных городах так и остаётся "город</h2>".
Ради эксперемента: закомментрование строк
    regsub -all -- "<h2>|</h2>" $wcity "$eweather(color2)" wcity
    regsub -all -- "<b>|</b>" $wcity "\002" wcity

не дает ничего, такое ощущение что они вообще ни к чему...

Возможно в данном случае происходит то же что и с некоторыми скриптами игр: при установке викторины 3hauka.tcl и игры words.tcl на одного бота words не работает и выдает такую же ошибку в пати: "_pub $_pub1 $_pub2 $_pub3 $_pub4 $_pub5". Конфликт вобщем происходит.
Нежелание играться - первый признак деградации ;)
Аватара пользователя
sad
 
Сообщения: 28
Зарегистрирован: 15 авг 2010 16:17
Откуда: Комсомольск-на-Амуре
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Версия бота: Eggdrop 1.6.21+suzi

Re: eweather2.tcl - Easy weather 2. Не простая погода с Янде

Сообщение tvrsh » 17 июн 2011 09:31

Используйте другую погоду. Надоели уже.
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: eweather2.tcl - Easy weather 2. Не простая погода с Янде

Сообщение wr` » 17 июн 2011 11:39

скажу одно,что она ведь работала,и не с того не с сего перестала,если нас уже двое,значит будут и еще люди у которых такая же ошибка..
Аватара пользователя
wr`
 
Сообщения: 121
Зарегистрирован: 26 май 2009 21:17
Благодарил (а): 19 раз.
Поблагодарили: 0 раз.
Версия бота: Eggdrop 1.6.21+suzi

Re: eweather2.tcl - Easy weather 2. Не простая погода с Янде

Сообщение Radiosignal » 17 июн 2011 15:30

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

Re: eweather2.tcl - Easy weather 2. Не простая погода с Янде

Сообщение wr` » 17 июн 2011 17:03

да это делал не раз,даж на трех ботах попробовал,все тож самое
Аватара пользователя
wr`
 
Сообщения: 121
Зарегистрирован: 26 май 2009 21:17
Благодарил (а): 19 раз.
Поблагодарили: 0 раз.
Версия бота: Eggdrop 1.6.21+suzi

Re: eweather2.tcl - Easy weather 2. Не простая погода с Янде

Сообщение tvrsh » 25 июн 2011 19:23

Обновил базу городов. Теперь в ней есть все города которые знает яндекс, правда они не все работают, но это уже детали. Также обновил недельный и днейвной выводы в самом скрипте.
Have fun.
-
Получить помощь можно на каналах #egghelp в сети IrcNet.ru и #eggdrop в сети RusNet(Ключ канала eggdrop).
Перед созданием новой темы внимательно читайте Правила оформления топиков.

За это сообщение автора tvrsh поблагодарил:
Волк (03 июл 2011 22:54)
Аватара пользователя
tvrsh
 
Сообщения: 1230
Зарегистрирован: 19 авг 2008 16:55
Откуда: Russian Federation, Podolsk
Благодарил (а): 6 раз.
Поблагодарили: 130 раз.
Версия бота: Eggdrop 1.6.20+suzi

Re: eweather2.tcl - Easy weather 2. Не простая погода с Янде

Сообщение Волк » 03 июл 2011 22:54

благодарствуемс, усе робит
сначала на !п нижний новгород не находил города, но после прописания с заглавной буквы названия города вроде все ок стало
Аватара пользователя
Волк
 
Сообщения: 27
Зарегистрирован: 25 ноя 2010 01:47
Благодарил (а): 3 раз.
Поблагодарили: 1 раз.
Версия бота: Eggdrop 1.6.21+suzi

Re: eweather2.tcl - Easy weather 2. Не простая погода с Янде

Сообщение Волк » 14 ноя 2011 18:29

некий глюк народилсо.
погоду выдавать не хочет, пишет в патилайне: Tcl error [::eweather::eweather_pub]: can't read "tz": no such variable
Аватара пользователя
Волк
 
Сообщения: 27
Зарегистрирован: 25 ноя 2010 01:47
Благодарил (а): 3 раз.
Поблагодарили: 1 раз.
Версия бота: Eggdrop 1.6.21+suzi

Re: eweather2.tcl - Easy weather 2. Не простая погода с Янде

Сообщение sad » 14 ноя 2011 18:40

Яндекс сменил страницу.

вместо этого:
set wnow [join [lreplace [split $wnow] 0 0 [split [::eweather::tempcolor [lindex [split $wnow] 0]]]]]; regexp {<span class="forecast-tz-shift">(.*?)</span>} $data "" tz; if {[string match "*-*" $tz]} {regsub -all {\-} $tz "" tz; set tzcalcew "-"} {set tzcalcew "+"}

поставь это:
set wnow [join [lreplace [split $wnow] 0 0 [split [::eweather::tempcolor [lindex [split $wnow] 0]]]]]; regexp {<td colspan="4" class="content-info">(.*?)</td>} $data "" info

и ищем параметры вывода строки:
set nmsg "$yawcity_$wregion :: $::gcolor(14)Cейчас: [::egglib::meta_to_colors [string map {" °c"  " °C" " рт. ст." "" "восход" "восход солнца" "заход" "закат солнца"} [string tolower [join $wnow]]]]. Местное время: $::gcolor(5)[clock format [expr [unixtime] $tzcalcew $tz] -format "%H:%M" -gmt +[expr $tz/3600]]$::gcolor(14).\003"

это сразу за вышеуказанной строкой, и меняем там:
set nmsg "$yawcity_$wregion :: $::gcolor(14)Cейчас: [::egglib::meta_to_colors [string map {" °c"  " °C" " рт. ст." "" "восход" "восход солнца" "заход" "закат солнца"} [string tolower [join $wnow]]]]. [join $info]"

и начинаем радоваться погоде...
Заплатка не раскрашивает данные, просто парсит текст.
Нежелание играться - первый признак деградации ;)
Аватара пользователя
sad
 
Сообщения: 28
Зарегистрирован: 15 авг 2010 16:17
Откуда: Комсомольск-на-Амуре
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Версия бота: Eggdrop 1.6.21+suzi

Re: eweather2.tcl - Easy weather 2. Не простая погода с Янде

Сообщение tvrsh » 14 ноя 2011 19:14

sad, твоя заплатка убивает показ местного времени.

Скрипт нормально обновлен, брать в первом посте.
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: eweather2.tcl - Easy weather 2. Не простая погода с Янде

Сообщение sad » 15 ноя 2011 03:35

sad, твоя заплатка убивает показ местного времени.

[10:33:04] <@sad> !п кмс
[10:33:07] <@Vesemir> Комсомольск-на-Амуре (Хабаровский край) :: Cейчас: -12 °C, облачно, ветер: северный, 3.0 м/с (10.8 км/ч), давление: 763 мм, влажность: 84%, восход солнца: 09:05, закат солнца: 18:06. Местное время 10:31, данные зарегистрированы в 10:00 на станции Горин, расположенной в 74 км от центра населенного пункта

в каком месте?
Нежелание играться - первый признак деградации ;)
Аватара пользователя
sad
 
Сообщения: 28
Зарегистрирован: 15 авг 2010 16:17
Откуда: Комсомольск-на-Амуре
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Версия бота: Eggdrop 1.6.21+suzi

Re: eweather2.tcl - Easy weather 2. Не простая погода с Янде

Сообщение tvrsh » 15 ноя 2011 08:40

sad, пардон, не так выразился. Убивает не сам показ, а концепцию компактности выдаваемой информации. Строка про время и место регистрации данных будет лучше смотреться в таком виде:
Местное время: 10:31. Данные получены: 10:00 (Горин, 74 км.).


Сделаю вечером.
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: eweather2.tcl - Easy weather 2. Не простая погода с Янде

Сообщение tvrsh » 15 ноя 2011 22:34

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

Пред.След.

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

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

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

cron