Страница 5 из 7

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

СообщениеДобавлено: 08 авг 2010 00:35
tvrsh
###
#
# Название: 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

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

СообщениеДобавлено: 13 июн 2011 14:14
tvrsh
wr`, а пользоваться поиском по форуму ты не умеешь?

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

СообщениеДобавлено: 13 июн 2011 14:27
wr`
прошу прощения поспешил с вопросом,но погода не заработала,пишет город не найден,а база городов в корне бота,не пойму что не так

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

СообщениеДобавлено: 14 июн 2011 03:32
sad
tvrsh писал(а):Попробуйте в строке
regsub -all -- "<h2>| </h2>" $wcity "$eweather(color2)" wcity
убрать пробел между | и <.

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

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

СообщениеДобавлено: 15 июн 2011 20:51
tvrsh
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. Не простая погода с Яндекса.
Обновил скрипт в архиве. Если и теперь не будет работать то дело точно не в скрипте.

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

СообщениеДобавлено: 15 июн 2011 21:15
wr`
скачал,всеравно не работает :( в чем может быть проблема?
вот ошибка которую у меня выдает
•(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"

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

СообщениеДобавлено: 15 июн 2011 21:27
tvrsh
Понятия не имею.
У твоего бота есть интернет? Ему доступна страница с погодой?
После строки
     catch {set eweather_tok [::http::geturl "http://pogoda.yandex.ru/$query/" -timeout "20000"]} error
 
добавь
putlog "http://pogoda.yandex.ru/$query/"
запроси погоду и покажи что у тебя выведется в патилайн при этом.

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

СообщениеДобавлено: 15 июн 2011 21:32
wr`
•(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

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

СообщениеДобавлено: 17 июн 2011 04:21
sad
Вы конечно неповерите, 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". Конфликт вобщем происходит.

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

СообщениеДобавлено: 17 июн 2011 09:31
tvrsh
Используйте другую погоду. Надоели уже.

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

СообщениеДобавлено: 17 июн 2011 11:39
wr`
скажу одно,что она ведь работала,и не с того не с сего перестала,если нас уже двое,значит будут и еще люди у которых такая же ошибка..

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

СообщениеДобавлено: 17 июн 2011 15:30
Radiosignal
Попробуйте убрать скрипт погоды, потом снова его добавить (новую обновленную версию с базой городов) и сделать два раза !rehash вашему боту.

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

СообщениеДобавлено: 17 июн 2011 17:03
wr`
да это делал не раз,даж на трех ботах попробовал,все тож самое

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

СообщениеДобавлено: 25 июн 2011 19:23
tvrsh
Обновил базу городов. Теперь в ней есть все города которые знает яндекс, правда они не все работают, но это уже детали. Также обновил недельный и днейвной выводы в самом скрипте.

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

СообщениеДобавлено: 03 июл 2011 22:54
Волк
благодарствуемс, усе робит
сначала на !п нижний новгород не находил города, но после прописания с заглавной буквы названия города вроде все ок стало

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

СообщениеДобавлено: 14 ноя 2011 18:29
Волк
некий глюк народилсо.
погоду выдавать не хочет, пишет в патилайне: Tcl error [::eweather::eweather_pub]: can't read "tz": no such variable

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

СообщениеДобавлено: 14 ноя 2011 18:40
sad
Яндекс сменил страницу.

вместо этого:
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]"

и начинаем радоваться погоде...
Заплатка не раскрашивает данные, просто парсит текст.

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

СообщениеДобавлено: 14 ноя 2011 19:14
tvrsh
sad, твоя заплатка убивает показ местного времени.

Скрипт нормально обновлен, брать в первом посте.

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

СообщениеДобавлено: 15 ноя 2011 03:35
sad
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 км от центра населенного пункта

в каком месте?

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

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


Сделаю вечером.

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

СообщениеДобавлено: 15 ноя 2011 22:34
tvrsh
Обновил скрипт.