Страница 2 из 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. Не простая погода с Яндекса.

СообщениеДобавлено: 16 сен 2010 22:35
tvrsh
Не плачьте.
<tvrsh> !пп оймякон
<Info> Якутия, Оймякон сейчас: -6 °C, Переменная облачность, Ветер: западно-северо-западный, 1 м/с (4 км/ч), Давление: 693 мм рт. ст., Влажность: 82%, Восход: 05:55, Заход: 18:47. (267.49мc.)
<tvrsh> !пп оймякон +1
<Info> В сб 18 в Якутия, Оймякон будет переменная облачность. Температура днем +4 и ночью -7. (410.884мc.)
<tvrsh> !пп +оймякон
<Info> Погода на неделю в Якутия, Оймякон: сегодня 17 сентября: переменная облачность +4/-7. сб 18: переменная облачность +4/-7. вс 19: ясно +5/-7. пн 20 сентября: ясно +6/-6. вт 21: переменная облачность, небольшой снег +6/-5. ср 22: ясно +6/-6. чт 23: ясно +4/-8. (292.457мc.)

Везде минусы и все счастливы. Обновленный скрипт в первом посте темы.

Pers писал(а):и вообще не очень как то удачно реализована эта запоминалка города, лучше еслиб бот записывал в файл это.

Все отлично реализовано. Просто надо поменьше бота рехашить. После каждого рехаша кэш с никами и городами сбрасывается. И чтобы добавить свой ник в базу надо просмотреть погоду в нужном городе на сегодня.

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

СообщениеДобавлено: 16 сен 2010 23:31
tvrsh
Единственное, где может возникнуть проблема, это если температура будет нулевой. Если увидите, то скажите как там она показывается: +0, -0 или просто 0?

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

СообщениеДобавлено: 17 сен 2010 01:17
nksp
[01:16:15] [@SmOkE] !пп оймякон
[01:16:17] [+bot] Якутия, Оймякон сейчас: - °C, Переменная облачность, Ветер: северо-западный, 4 м/с (14 км/ч), Давление: 688 мм рт. ст., Влажность: 54%, Восход: 05:55, Заход: 18:47. (279.0мc.)

Теперь вот так. Не понятно сколько там градусов показывает :)

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

СообщениеДобавлено: 17 сен 2010 06:17
Pers
Ага, место нуля просто минус показывает, и ещё не хватает нового условия в температуре на день.
ноль можно увидеть в !п +якутск

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

СообщениеДобавлено: 17 сен 2010 06:22
tvrsh
Видимо сейчас в Оймяконе ноль градусов. Если да, то замени
    if {[string index [join $wnow] 0] != "+"} {
 
на
    if {[string index [join $wnow] 0] != "+" && [string index [join $wnow] 0] != "0"} {
 
после чего замени
        if {[string index [join $wdaysntt] 0] != "+"} {
 
на
        if {[string index [join $wdaysntt] 0] != "+" && [string index [join $wdaysntt] 0] != "0"} {
 
и ниже
            if {[string index [join $wdaysntt] 0] != "+"} {
на
            if {[string index [join $wdaysntt] 0] != "+" && [string index [join $wdaysntt] 0] != "0"} {

Не тестировал но должно помочь, но только в том случае если температура равна 0.

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

СообщениеДобавлено: 19 сен 2010 11:27
triton
спс за скрипт, с первого раза все работает.

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

СообщениеДобавлено: 27 сен 2010 23:40
Pers
Города из нескольких слов некорректно ищет

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

СообщениеДобавлено: 27 сен 2010 23:45
tvrsh
Pers писал(а):Города из нескольких слов некорректно ищет

Что значит некорректно? Где примеры поиска? Больше конкретики.

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

СообщениеДобавлено: 28 сен 2010 05:51
Pers
!п нижний тагил
По вашему запросу "нижний" найдено 3 города: Нижний Новгород (Россия), Нижний Ломов (Россия), Нижний Тагил (Россия).
Нижегородская область, Нижний Новгород

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

СообщениеДобавлено: 28 сен 2010 10:10
Teppopucm
отличный скрипт.

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

СообщениеДобавлено: 28 сен 2010 18:18
tvrsh
#egghelp @ IrcNet.ru писал(а): <@tvrsh> !пп нижний тагил
<+bionic> Свердловская область, Нижний Тагил сейчас: +6 °C, Облачность с просветами, Ветер: северо-западный, 3 м/с (11 км/ч), Давление: 739 мм рт. ст., Влажность: 60%, Восход: 07:57, Заход: 19:43. (425.746мc.)
<@tvrsh> !пп нижний тагил +1
<+bionic> В ср 29 в Свердловская область, Нижний Тагил будет дождь. Температура днем +6 и ночью +6. (398.076мc.)
<@tvrsh> !пп +нижний тагил
<+bionic> Погода на неделю в Свердловская область, Нижний Тагил: сегодня 28 сентября: переменная облачность +9/-1. ср 29: дождь +6/+6. чт 30: переменная облачность, небольшой дождь +6/-1. пт 1 октября: переменная облачность, небольшой снег +4/-3. сб 2: переменная облачность +3/-6. вс 3: ясно +5/-5. пн 4 октября: переменная облачность +4/-3. (627.382мc.)

Обновленный скрипт в первом посте темы. Пробуйте.

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

СообщениеДобавлено: 03 окт 2010 23:56
madcat600
для жителей прибрежных городов он температуру морской воды будет показывать?

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

СообщениеДобавлено: 04 окт 2010 00:02
tvrsh
madcat600 писал(а):для жителей прибрежных городов он температуру морской воды будет показывать?

Завист от того, будет ли это показывать яндекс.

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

СообщениеДобавлено: 16 окт 2010 20:06
smile
че то не качает:\

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

СообщениеДобавлено: 16 окт 2010 20:13
tvrsh
smile писал(а):че то не качает:\

Иногда бывает полезно почитать форум viewtopic.php?p=981#p981и внимательно посмотреть в архиве eweather2.tcl, ewbase.txt

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

СообщениеДобавлено: 20 окт 2010 04:24
oIIa4ku
Отличный скрипт. Правда вопросы всё-таки присутствуют при просмотре погоды на неделю:
(12:26:14) <@mircbot> Погода на неделю в Магаданская область, Магадан: сегодня 20 октября: переменная облачность ?5/-10. чт 21: переменная облачность ?5/-9. пт 22: переменная облачность, небольшой снег ?2/-8. сб 23: переменная облачность, небольшой снег ?3/-8. вс 24: переменная облачность, небольшой снег ?6/-12. пн 25 октября: переменная облачность ?8/-12. вт 26: снег ?9/-12. (6

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

СообщениеДобавлено: 20 окт 2010 23:45
tvrsh
oIIa4ku писал(а):Отличный скрипт. Правда вопросы всё-таки присутствуют при просмотре погоды на неделю:
(12:26:14) <@mircbot> Погода на неделю в Магаданская область, Магадан: сегодня 20 октября: переменная облачность ?5/-10. чт 21: переменная облачность ?5/-9. пт 22: переменная облачность, небольшой снег ?2/-8. сб 23: переменная облачность, небольшой снег ?3/-8. вс 24: переменная облачность, небольшой снег ?6/-12. пн 25 октября: переменная облачность ?8/-12. вт 26: снег ?9/-12. (6

У меня на непатченном боте никаких вопросительных знаков нет.
<@tvrsh> !пп +магадан
<+bionic> Погода на неделю в Магаданская область, Магадан: сегодня 21 октября: переменная облачность -5/-7. пт 22: ясно -3/-7. сб 23: переменная облачность -4/-8. вс 24: облачно, небольшой снег -6/-9. пн 25 октября: переменная облачность -8/-9. вт 26: переменная облачность -8/-9. ср 27: переменная облачность -8/-9. (428.747мc.)
<@tvrsh> $$ encoding system
<+bionic> OK: utf-8 - 0.059 ms.

Да и на патченном эта ошибка уже исправлена.

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

СообщениеДобавлено: 23 окт 2010 16:11
Radiosignal
tvrsh, можно ли добавить в скрипт во такой девайс, чтоб показывал время и погоду в городе(день недели еще можно), например, в интервале час или полчаса. Город или родной или город-рандом.

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

СообщениеДобавлено: 24 окт 2010 11:47
tvrsh
Radiosignal писал(а):tvrsh, можно ли добавить в скрипт во такой девайс, чтоб показывал время и погоду в городе(день недели еще можно), например, в интервале час или полчаса. Город или родной или город-рандом.

Пока нет.

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

СообщениеДобавлено: 10 ноя 2010 14:29
tvrsh
Столкнулся с проблемой когда прогноз на неделю не умещается в одну строку и не выводится в канал. Чтобы это исправить замените
    putserv "PRIVMSG $chan :[join $wmsg] \00315([expr ($eweather(end) - $eweather(start))/1000.0]мc.)\003"
на
TCL: [ Скачать ] [ Скрыть ]
    if {[expr 512 - [string length ":$::botname PRIVMSG [join $wmsg] :\r\n"]] <= 0} {
        putserv "PRIVMSG $chan :[stripcodes c "[join $wmsg] \00315([expr ($eweather(end) - $eweather(start))/1000.0]мc.)\003"]"
    } else {
        putserv "PRIVMSG $chan :[join $wmsg] \00315([expr ($eweather(end) - $eweather(start))/1000.0]мc.)\003"
    }

Тут мы смотрим, не превышает ли длинна строки текста и служебной информации установленные 512 символов. Если превышает, то мы обрезает цветовые коды.