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. Не простая погода с Янде

Сообщение hxm » 13 мар 2012 23:20

у меня такая ошибка: сюзи бот 1.6.21, без утф .. но и вроде на других конфигурациях 21 аналогично было:
Tcl error [::eweather::eweather_msg]: bad option "-nocase": must be -all, -ascii, -decreasing, -dictionary, -exact, -glob, -increasing, -inline, -integer, -not, -real, -regexp, -sorted, or -start
-------
на 20 с сузи + утф патчем тоже самое)
------
наверно что то не так в:
set num [lsearch -nocase "$eweather(shortcuts_in)" "$cit"]
.... тут ........
return 0
----------
hxm
 
Сообщения: 21
Зарегистрирован: 16 ноя 2011 03:11
Благодарил (а): 6 раз.
Поблагодарили: 1 раз.
Версия бота: Eggdrop 1.6.21+suzi

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

Сообщение tvrsh » 14 мар 2012 10:34

Не знаю почему он у тебя на -nocase ругается. Такая опция есть как в TCL8.5 так и в TCL8.6
А вот в TCL8.4 ее еще нет.
Так что вывод один - обновляй свой тикль. Про обновление тикля почитать можно тут: nastroyka-bota/obnovlenie-tcl-t481.html
Если это невозможно(фришелл и т.д.), то просто сотри -nocase. В таком случае названия городов придется писать точно так же, как они написаны в базе(первая буква заглавная).
Have fun.
-
Получить помощь можно на каналах #egghelp в сети IrcNet.ru и #eggdrop в сети RusNet(Ключ канала eggdrop).
Перед созданием новой темы внимательно читайте Правила оформления топиков.

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

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

Сообщение hxm » 14 мар 2012 14:55

tvrsh
да это изза 8.4, но например в дебиан
http://packages.debian.org/squeeze/tcl
так что рано многие переходят
поставил бота без сузи и с патчем утф и с коннектом на сервер утф, пишет
По вашему запросу "москва" не найден ни один город.
:mrgreen:
добавлено:
- это было изза того что я перекодировал ewbase.txt в utf-8, не делайте этого
hxm
 
Сообщения: 21
Зарегистрирован: 16 ноя 2011 03:11
Благодарил (а): 6 раз.
Поблагодарили: 1 раз.
Версия бота: Eggdrop 1.6.21+suzi

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

Сообщение tvrsh » 17 мар 2012 13:17

Меня яндекс в погоде зобанил, Не отдает страничку с данными. Так что пока все приостанавливается.
Content-Type text/html
Expires Sat, 17 Mar 2012 07:13:19 GMT
Location http://tune.yandex.ru/api/my/v1.1/my.xm ... Fkovrov%2F
X-Konkurentam Preved
Set-Cookie yandexuid=1454793882332968399; domain=.yandex.ru; path=/; expires=Tue, 19 Jan 2038 03:14:07 GMT
Content-Length 0
Connection close
Date Sat, 17 Mar 2012 07:13:19 GMT
Server lighttpd/1.4.26
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. Не простая погода с Янде

Сообщение hxm » 18 мар 2012 01:53

tvrsh,
вот уроды, как они посмели тебя забанить.
кстати, количество информации вроде уменьшилось в скрипте, по сравнению с раннними версиями
hxm
 
Сообщения: 21
Зарегистрирован: 16 ноя 2011 03:11
Благодарил (а): 6 раз.
Поблагодарили: 1 раз.
Версия бота: Eggdrop 1.6.21+suzi

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

Сообщение tvrsh » 24 мар 2012 12:36

Яндекс розбанил.
Количество информации уменьшилось из-за того, что теперь не показывается местное время и время последнего обновления данных о погоде. Я стараюсь чтобы весь ответ бота влез в одну строку, и я считаю, что эта информация лишняя.
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. Не простая погода с Янде

Сообщение Волк » 21 мар 2013 20:10

А вот в TCL8.4 ее еще нет.
Так что вывод один - обновляй свой тикль. Про обновление тикля почитать можно тут: nastroyka-bota/obnovlenie-tcl-t481.html
Если это невозможно(фришелл и т.д.), то просто сотри -nocase. В таком случае названия городов придется писать точно так же, как они написаны в базе(первая буква заглавная).

недавно пришлось перевести своего зверя на машину где тикль как раз старой версии
просто стирать -nocase не стал, но заменил строку
 set num [lsearch -nocase "$eweather(shortcuts_in)" "$cit"]

на
set num [lsearch -regexp "$eweather(shortcuts_in)" "(?i)^($cit)$"]

вроде съел и заработал, но не захотел видеть города - "по запросу не найден ни один город"
тогда убрал строку
fconfigure $fid -encoding cp1251
из

TCL: [ Скачать ] [ Скрыть ]
catch {set fid [open $eweather(base) "r"]} error
    if {[string match -nocase "*couldn't open*" $error]} {
        putserv "PRIVMSG $chan :$eweather(color1)Ошибка: $eweather(color3)$error$eweather(color1).\003"
        return 0
    }
    fconfigure $fid -encoding cp1251
    foreach city [split [read $fid] "\n"] {


пришел в итоге к <@Lupus> ???????????°: -??5 °C, ???±?»?°??????, ???µ?±???»???????? ?????µ??. Вocхoд: 07:30?/19:44, Дaвлeниe: 748 мм.pт.cт, Вeтep: ???µ???µ????????, 2.0 ??/?? (7.2 ????/??), Влaжнocть: 67%, Hoчью: -??11 °C. (130.827мc.)

окончательно заработал после убирания строк

  set data [encoding convertfrom utf-8 $data]
    } else {

из куска
TCL: [ Скачать ] [ Скрыть ]
if {[info exists ::sp_version]} {
        set data [encoding convertfrom utf-8 $data]
    } else {
        set data [encoding convertto cp1251 [encoding convertfrom utf-8 $data]]
    }
Аватара пользователя
Волк
 
Сообщения: 27
Зарегистрирован: 25 ноя 2010 01:47
Благодарил (а): 3 раз.
Поблагодарили: 1 раз.
Версия бота: Eggdrop 1.6.21+suzi

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

Сообщение tvrsh » 08 фев 2014 23:51

Обновил базу городов и скрипт.
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. Не простая погода с Янде

Сообщение Bart » 19 сен 2014 23:08

tvrsh, посмотри, пожалуйста, скрипт. Там что-то сломалось.
[22:55:42] Tcl error [::eweather::eweather_pub]: can't read "wcity": no such variable
Аватара пользователя
Bart
 
Сообщения: 24
Зарегистрирован: 05 фев 2014 01:35
Благодарил (а): 17 раз.
Поблагодарили: 0 раз.
Версия бота: Eggdrop 1.6.21+suzi

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

Сообщение kraft » 29 сен 2014 17:15

Такая же хрень! Tcl error [::eweather::eweather_pub]: can't read "wcity": no such variable
Все работало нормально раньше.
Аватара пользователя
kraft
 
Сообщения: 14
Зарегистрирован: 12 июн 2011 11:40
Откуда: vladivostok
Благодарил (а): 3 раз.
Поблагодарили: 1 раз.
Версия бота: Eggdrop 1.6.18

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

Сообщение Vertigo » 29 сен 2014 18:36

Скорее всего яндекс зобанил IP твоего бота. Проверить можно так:
Перед строчкой
set data [::http::data $eweather_tok]
добавить
TCL: [ Скачать ] [ Скрыть ]
if {[http::ncode $eweather_tok] != "200"} {
putserv "PRIVMSG $chan :Неверный код ответа сервера ([http::code $eweather_tok])."
return
}
 


Если бот ответит данной фразой, значит всё плохо.
Последний раз редактировалось Vertigo 29 сен 2014 22:06, всего редактировалось 2 раз(а).
Аватара пользователя
Vertigo
 
Сообщения: 107
Зарегистрирован: 20 авг 2008 23:49
Откуда: Москва
Благодарил (а): 0 раз.
Поблагодарили: 37 раз.
Версия бота: Eggdrop 1.8

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

Сообщение kraft » 29 сен 2014 21:26

Если ошибка Tcl error [::eweather::eweather_pub]: can't read "wcity": no such variable
То качаем :
http://62.33.87.124/eweather2.tcl

За это сообщение автора kraft поблагодарил:
Bart (29 сен 2014 21:55)
Аватара пользователя
kraft
 
Сообщения: 14
Зарегистрирован: 12 июн 2011 11:40
Откуда: vladivostok
Благодарил (а): 3 раз.
Поблагодарили: 1 раз.
Версия бота: Eggdrop 1.6.18

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

Сообщение tvrsh » 11 окт 2014 23:42

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

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

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

Сообщение Pitstopper » 05 дек 2014 10:38

Здравтвуйте, уважаемые. Со вчерашнего дня со скриптом погоды стала творится такая вот печаль-беда.
При запросе погоды скрипт на канале ничего не показывает, а в патилайне ругается:
Tcl error [::eweather::eweather_pub]: can't read "wnow": no such variable
При выполнении в патилайне команды .set errorInfo выдает:
<X> Currently: can't read "wnow": no such variable
<X> Currently: while executing
<X> Currently: "regsub -all -- "\n|\t" $wnow "" wnow"
<X> Currently: (procedure "::eweather::eweather_parce" line 39)
<X> Currently: invoked from within
<X> Currently: "::eweather::eweather_parce $nick $uhost $hand $chan $query"
<X> Currently: (procedure "::eweather::eweather_proc" line 130)
<X> Currently: invoked from within
<X> Currently: "::eweather::eweather_proc $nick $uhost $hand $chan $text"
<X> Currently: (procedure "::eweather::eweather_pub" line 8)
<X> Currently: invoked from within
<X> Currently: "::eweather::eweather_pub $_pub1 $_pub2 $_pub3 $_pub4 $_pub5"

Подскажите, как сию напасть победить?
Pitstopper
 
Сообщения: 13
Зарегистрирован: 03 фев 2014 14:40
Благодарил (а): 1 раз.
Поблагодарили: 0 раз.
Версия бота: Eggdrop 1.6.21

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

Сообщение kraft » 06 дек 2014 10:32

Опять 25 :) Tcl error [::eweather::eweather_pub]: can't read "wnow": no such variable

Этот скрипт пока работает https://dl.dropboxusercontent.com/u/240701/foreca.tcl по команде !пф
Аватара пользователя
kraft
 
Сообщения: 14
Зарегистрирован: 12 июн 2011 11:40
Откуда: vladivostok
Благодарил (а): 3 раз.
Поблагодарили: 1 раз.
Версия бота: Eggdrop 1.6.18

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

Сообщение tvrsh » 20 дек 2014 20:46

Больше нет желания поддерживать данный скрипт. Код большой, сложный, и при регулярных изменениях на сайте не получается исправлять его "на коленке". Пользуйтесь скриптом от гисметео. К тому же он без базы городов работает.
egismeteo.tcl - Погода с gismeteo.ru
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 скрипты

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

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

cron