Current_Weather_All_Cities, Выводит текущую погоду автом. в чат и по запросу, любые города |
Здравствуйте, гость ( Вход | Регистрация )
Current_Weather_All_Cities, Выводит текущую погоду автом. в чат и по запросу, любые города |
3.1.2011, 17:31
Сообщение
#41
|
|
Белый Волк Группа: Пользователи Сообщений: 1 723 Регистрация: 11.9.2008 Из: г.Томск Пользователь №: 516 Спасибо сказали: 657 раз |
Скрипт просмотра текущей погоды в разных городах (в чате периодически или по запросу через меню) с сервера
Название: Current_Weather_All_Cities.lua Платформа: PtokaX API: API 2 Автор: Ksan (по мотивам скриптов от Nickolya и Saymon в этой теме Библиотека: Для работы скрипта требуется библиотека SSL Изменения от Ksan: - добавил меню - добавил выборку погодных явлений (облачность, осадки и т.д.) - подправил чуток вывод градусов и мм.рт.ст - подогнал под себя дизайн вывода - можно смотреть текущую погоду разных городов (через меню) - меню с разными городами строится автоматически в зависимости от таблицы городов - добавлено ограничение частоты запросов погодного сервера - добавил сборщик мусора - добавлена инфа про макс. и мин. температуру в этот же день из архивов этого города (если отсутствует пр выводе, значит, нет информации в архивах) - добавлено время восхода/захода солнца (для полярной ночи или дня будет так и написано - "Полярная ночь" , "Полярный день") - добавлен вывод текущих даты/времени для просматриваемой местности - добавлен вывод прогноза на ближайшее время суток Примечания: 1. 2. Таблицу городов стройте аналогично уже вписанным в скрипт. Названия городов транслитом можно получить через этот же сайт погоды 3. И да, кому хочется показывать давление и влажность в чате (для всех), можете просто раскомментить 2 строки в функции "function SendToChat()" ToDo: - - есть возможность сделать отдельный вывод по запросу и на следующие дни, только не знаю, есть ли в этом смысл, ведь прогноз погоды на несколько дней - вещь рискованная.. Пример результата работы скрипта - ответ на запрос полного прогноза и вывод по времени в чат: Код По запросу: [20:39:04] <Current_Weather> Погода в городе Томск (Россия, Томская область) : ************************************************************ Время: воскресенье, 22 июня 2014, 20:37 ************************************************************ Температура: 29° Погодные явления: "малооблачно" Давление: 748 мм рт.ст. Влажность: 33% (низкая) Ветер: 1 м/c (СВ легкий ветер) Солнце: восход: 04:29 заход: 22:14 В этот же день (из архивов): Max.: 33° (1982 год) Min.: 0° (2008 год) ***************************************************************************** НОЧЬЮ... t°: 18° "Ясно" Ветер: 3 м/c (С-СВ) Влажн. 56% Давл. 749 мм ***************************************************************************** УТРОМ... t°: 24° "Ясно" Ветер: 4 м/c (С-СВ) Влажн. 27% Давл. 748 мм ***************************************************************************** В чате: [18:17:46] <-Bot-> Погода в городе Томск (Россия, Томская область) : ************************************************************ Температура: 30° Погодные явления: малооблачно Ветер: 1 м/c (СВ легкий ветер) В этот же день (из архивов): Max.: 33° (1982 год) Min.: 0° (2008 год) ************************************************************ При запросе только текущей погоды вид такой же, только не будет нижних двух участков (прогноза на ближайшее время). Для периодического вывода в чат вид такой же, разве что нет показа времени и параметров чуть меньше (но это всё включаемо через раскомментирование нужных строк в скрипте). UPD: - при попадании на просмотре через меню города без архивов погоды (есть и такие) следующие города показывались тоже без данных из архива (до перезапуска скрипта). Исправлено. - на сайте изменили вид ссылки (теперь там вместо кодов городов - названия самих городов латиницей и без пробелов (вместо пробела - символ подчеркивания)). Скрипт переделан под это. UPD-2: - добавлена инфа про макс. и мин. температуру в этот же день из архивов этого города (если отсутствует при выводе, значит, нет информации в архивах), скрипт перезалит. UPD-3: - добавлена возможность выбора места вывода по запросу - в приват или чат ( local bSendToPrivat = true ) UPD-4: - скрипт исправлен и добавлена как новая версия. Причина - изменение представления адреса на сайте погоды. Но нет худа без добра - пока менял скрипт под это изменение, нашёл(и исправил) причину потери временами архивных данных при выводе информации. UPD-5: - скрипт исправлен и залит сюда, старые версии удалены за ненадобностью. Причина - полное изменение структуры страницы на сайте. Пришлось всё перелопатить. - добавил показ восхода/захода солнца. UPD-6: - добавил показ текущей даты/времени местности (UPD: убрал показ даты/времени для вывода в чат местнй погоды (зачем местным показывать их время, тем более, не очень точное)) - исключил вывод данных при получении ошибки с сайта (чтоб все города не получали одну и ту же погоду) - небольшие косметические малозаметные изменения, улучшающие работу скрипта UPD-7: - добавил возможность выбрать через меню любой город/посёлок мира (но оставил возможность просмотра жёстко привязанных к меню городов)...для этого пришлось писать отдельный скрипт для выборки из сайта погоды и сборки в таблицу списков всех городов со странами и областями. - в архиве есть папка с обязательными файлами (таблицы городов и цифровых кодов городов (последнее - для архивных температур)) UPD-8: - пришлось перелопатить скрипт из-за изменений на странице погоды, в том числе и кодировки символов. - для городов США уверенно отсутствуют архивные температуры. На сайте архивных данных сильно изменили представление страницы именно для США, для них необходимо отдельно парсить страницы и вытаскивать архив. Начал было делать эту работу, почти добил, потом подумал - а нафиг это надо кому, зачем эта лишняя работа, и забил. А так уже давно мог бы выложить исправленный скрипт, но так получилось, сорри.. плюс лень одолела в последнее время (это, скорее минус). UPD-9: - ввиду того, что на сайте полностью переделали интерфейс вывода погоды, изменился и код страницы, пришлось полностью перелопачивать парсинг - теперь архивы берутся из этой же страницы (раньше для многих стран приходилось парсить другой сайт с архивом), но вот насчёт точности архивных данных не ручаюсь - добавил вывод температуры воды (для городов у моря и если этот параметр присутствует на странице погоды) UPD-10: - добавлена возможность запроса на выдачу (кроме текущей погоды) и прогноза на ближайшее время суток - исправлена небольшая ошибка в коде UPD-11: - добавил возможность менять через меню частоту вывода текущей погоды в чат (не открывая скрипт и не перезапуская его), особенно будет удобно для тех, у кого хаб стоит далеко от своего компа. При необходимости отмены вывода погоды в чат достаточно ввести одну цифру 0 (ноль) в данном меню вместо периода времени. Для включения нужно просто просто написать период в минутах, не равный 0 (нулю). Файл перезалит. UPD-12: - сегодня вдруг скрипт стал выдавать результат с лишним словом из исходника (</span>) при годе минимальной температуры архивных данных (не знаю, почему, до этого было без таких ляпов), не стал копать глубоко, просто добавил в одну строку исправляющий код. Архив перезалил (изменение только в самом скрипте). UPD-13: - обнаружился баг - при попытке просмотра погоды городов из подменю "Другие города", если оставить первое окошко ввода пустым (а там надо вводить 0 или 1), то скрипт падал с ошибкой вроде этого: Цитата [03:45:32] <#OpChat#> ...r/ptokax/scripts/Current_Weather_All_Cities_Mint.lua:118: attempt to index local 'sCity' (a nil value) То есть, не было "защиты от дурака". Скрипт исправил и архив перезалил. Изменение только в самом скрипте.UPD-14: - пришлось исправить пару строк в связи с переходом сайта погоды на безопасный режим, а также в связи с этим необходимо доустановить библиотеку SSL UPD-15: - пришлось изменить чуток код, ибо на сайте погоды внесли небольшие изменения в исходники страницы (добавили "+" к положительной температуре, в другом месте тоже изменили кусок и из-за этого температура воды не получалась, и была давненько появившаяся проблемка - перестало выдавать архивные температуры (для России), и тоже исправил). И да, заменил один из доп. файлов в папке, так что рекомендую у себя его заменить на мой - называется "citylist_Other.tbl") UPD-16: - заметил, что для некоторых местностей сайт не предоставляет данные о восходе и закате, в том числе и для заполярных территорий, поэтому везде, где эти данные отсутствуют, скрипт стал выдавать "Полярный день" и, возможно, "Полярная ночь" (зависит от даты). Дабы не вызывало недоумения, сделал выдачу типа этого - "Нет данных (либо полярный день)". Скрипт перезалит, из архива достаточно заменить основной файл (если вы изменили для себя основной скрипт на своё усмотрение, то посмотрите свой скрипт на предмет разницы). Вот изменённый участок кода: Код if tonumber(os.date("%m")) > 3 and tonumber(os.date("%m")) <10 then sSun = "Нет данных (либо там полярный день)" elseif tonumber(os.date("%m")) < 4 or tonumber(os.date("%m")) > 9 then sSun = "Нет данных (либо там полярная ночь)" end UPD-17: - на сайте погоды опять изменили код страницы (у них там руки чешутся, что ли?), пришлось вновь подправлять скрипт (правда, не сразу руки дошли, прошу прощения за это), возможно, где-то пошли уже корявости из-за частых исправлений скрипта (как правило, не по моей вине).. Но вроде работает пока. Если что не так, напишите, для какой местности и какая ошибка.. Дата заливки последней версии: 2020-04-30 14:27 (мск.)
Прикрепленные файлы
|
|
|
20.9.2013, 10:48
Сообщение
#42
|
|
Начинающий Группа: Пользователи Сообщений: 29 Регистрация: 11.1.2009 Из: Владивосток Пользователь №: 1 774 Спасибо сказали: 5 раз |
Температура: +24°
Погодные явления: "полупрозрачная облачность" Давление: 740 мм рт.ст Влажность: 56% Ветер: 8 Рј/СЃ ЮЗ Солнце: РІРѕСЃС…РѕРґ: 07:57, заход: 20:14 В этот же день (из архивов): Max.: +25.2° (1960Рі.) Min: +3.6° (1977Рі.) ой,это другая версия уже.. |
|
|
18.10.2013, 16:43
Сообщение
#43
|
|
Абсолютный новичок Группа: Пользователи Сообщений: 1 Регистрация: 1.5.2013 Пользователь №: 11 492 Спасибо сказали: 0 раз |
Чкет у меня на 0.5.0.0 не пашет
в чате кажет !curtemp1 Okha Оха в логах Синтаксис C:\PtokaX\scripts\Current_Weather_All_Cities.lua:174: attempt to concatenate global 'sRegion1' (a nil value) где что и как не понятно, подскажите что не правильно делаю. |
|
|
1.11.2013, 18:05
Сообщение
#44
|
|
Белый Волк Группа: Пользователи Сообщений: 1 723 Регистрация: 11.9.2008 Из: г.Томск Пользователь №: 516 Спасибо сказали: 657 раз |
Скрипт с изменениями выложен в сообщении #1.
UPD-7: - пришлось перелопатить скрипт из-за изменений на странице погоды, в том числе и кодировки символов. - теперь для городов США уверенно отсутствуют архивные температуры. На сайте архивных данных сильно изменили представление страницы именно для США, для них необходимо отдельно парсить страницы и вытаскивать архив. Начал было делать эту работу, почти добил, потом подумал - а нафиг это надо кому, зачем эта лишняя работа, и забил. А так уже давно мог бы выложить исправленный скрипт, но так получилось, сорри.. плюс лень одолела в последнее время (но это скорее минус). Дата заливки последней версии: 2013-11-01 19:00 (мск.) |
|
|
25.4.2014, 23:47
Сообщение
#45
|
|
Активный участник Группа: Пользователи Сообщений: 93 Регистрация: 25.1.2010 Пользователь №: 5 828 Спасибо сказали: 7 раз |
Со вчерашнего дня стал скрипт выдавать такую ошибку:
[00:41] Синтаксис ...\scripts\Current_Weather_All_Cities.lua:235: attempt to index global 'msg1' (a nil value) Причём, не выдаёт погоду города по таймеру в чат и любую погоду любого города в личку по запросу! Сам же скрипт запускается без ошибок: [00:37] Нет синтаксических ошибок в файле скрипта Current_Weather_All_Cities.lua [00:37] Скрипт запущен. До вчерашнего дня работал без проблем он. Подскажите, что надо поправить? |
|
|
26.4.2014, 1:14
Сообщение
#46
|
|
Белый Волк Группа: Пользователи Сообщений: 1 723 Регистрация: 11.9.2008 Из: г.Томск Пользователь №: 516 Спасибо сказали: 657 раз |
Marc,
Есть такая проблема. Похоже, на сайте снова изменили структуру страниц, и теперь не парсится нужный текст и получается такая ошибка. Надо снова переписать код парсинга. Сделаю...наверно. Но не сейчас. Точнее, не сразу..попозже. Недосуг просто пока. |
|
|
20.6.2014, 19:15
Сообщение
#47
|
|
Белый Волк Группа: Пользователи Сообщений: 1 723 Регистрация: 11.9.2008 Из: г.Томск Пользователь №: 516 Спасибо сказали: 657 раз |
Наконец-то, дошли руки переделать и привести скрипт в рабочее состояние..Прошу прощения, что заставил так долго ждать, ну так получилось!
UPD-9: - ввиду того, что на сайте полностью переделали интерфейс вывода погоды, изменился и код страницы, пришлось полностью перелопачивать парсинг - теперь архивы берутся из этой же страницы (раньше для многих стран приходилось парсить другой сайт с архивом), но вот насчёт точности архивных данных не ручаюсь - добавил вывод температуры воды (для городов у моря и если этот параметр присутствует на странице погоды) Скрипт перезалит в первом сообщении темы. ToDo: - возможно, добавлю вывод по отдельному запросу полного прогноза на ближайшее время суток - на сейчас + на 2 из следующих времён суток - утро + день, вечер + ночь и т.д. (как на сайте сделано) - есть возможность сделать отдельный вывод по запросу и на следующие дни, только не знаю, есть ли в этом смысл, ведь прогноз погоды на несколько дней - вещь рискованная.. Дата заливки текущей версии: 2014-06-20 20:10 (мск.) |
|
|
22.6.2014, 17:02
Сообщение
#48
|
|
Белый Волк Группа: Пользователи Сообщений: 1 723 Регистрация: 11.9.2008 Из: г.Томск Пользователь №: 516 Спасибо сказали: 657 раз |
UPD-10:
Цитата ToDo: СДЕЛАНО.- Ещё исправил небольшую ошибку. Скрипт перезалит в первом сообщении. Жду комментов. Дата заливки текущей версии: 2014-06-22 17:50 (мск.) |
|
|
23.6.2014, 22:30
Сообщение
#49
|
|
Активный участник Группа: Пользователи Сообщений: 93 Регистрация: 25.1.2010 Пользователь №: 5 828 Спасибо сказали: 7 раз |
Ksan!
Спасибо за работу! Поставил и попробовал: смотрю, что теперь нет кодов городов, но он их видит всё равно! Удачно получилось с прогнозом погоды: показывает погоду "Ночью" и "Утром" (это я сейчас тестил) По запросу погоду в разных городах выдает всё отлично! Вывод погоды в чат также работает по таймеру на отлично!! |
|
|
26.6.2014, 2:42
Сообщение
#50
|
|
Белый Волк Группа: Пользователи Сообщений: 1 723 Регистрация: 11.9.2008 Из: г.Томск Пользователь №: 516 Спасибо сказали: 657 раз |
UPD-11:
- добавил возможность менять через меню частоту вывода текущей погоды в чат (не открывая скрипт и не перезапуская его), особенно будет удобно для тех, у кого хаб стоит далеко от своего компа. При необходимости отмены вывода погоды в чат достаточно ввести одну цифру 0 (ноль) в данном меню вместо периода времени. Для включения нужно просто просто написать период в минутах, не равный 0 (нулю). Файл перезалит. Дата заливки последней версии: 2014-06-26 03:40 (мск.) |
|
|
11.11.2014, 23:29
Сообщение
#51
|
|
Белый Волк Группа: Пользователи Сообщений: 1 723 Регистрация: 11.9.2008 Из: г.Томск Пользователь №: 516 Спасибо сказали: 657 раз |
UPD-12:
- сегодня вдруг скрипт стал выдавать результат с лишним словом из исходника (/span) при годе минимальной температуры архивных данных (не знаю, почему, до этого было без таких ляпов), не стал копать глубоко, просто добавил в одну строку исправляющий код. Архив перезалил (изменение только в самом скрипте). Дата заливки последней версии: 2014-11-11 23:22 (мск.) |
|
|
14.11.2014, 10:18
Сообщение
#52
|
|
Начинающий Группа: Пользователи Сообщений: 10 Регистрация: 5.10.2014 Пользователь №: 12 532 Спасибо сказали: 1 раз |
Ksan, все поставил как сказано но при запуске скрипта в итоге получил:
[12:05:12] Синтаксис error loading module 'pxsocket' from file 'C:\0.5.0.2_Lua5.1.5\scripts\libs\pxsocket.dll': Не найдена указанная процедура. stack traceback: [C]: ? [C]: in function 'require' C:\0.5.0.2_Lua5.1.5\scripts\libs\socket.lua:13: in main chunk [C]: in function 'require' C:\0.5.0.2_Lua5.1.5\scripts\libs\socket\http.lua:11: in main chunk [C]: in function 'require' ....0.2_Lua5.1.5\scripts\Current_Weather_All_Cities.lua:71: in function <....0.2_Lua5.1.5\scripts\Current_Weather_All_Cities.lua:70> просьба помочь в исправлении ошибки |
|
|
14.11.2014, 15:09
Сообщение
#53
|
|
Наруто на аваторке Группа: Пользователи Сообщений: 2 606 Регистрация: 11.10.2008 Из: Харькова Пользователь №: 771 Спасибо сказали: 774 раза |
Nikolaevich, значит не всё, библиотеки не поставил, поставь и будет работать.
|
|
|
15.11.2014, 0:48
Сообщение
#54
|
|
Начинающий Группа: Пользователи Сообщений: 10 Регистрация: 5.10.2014 Пользователь №: 12 532 Спасибо сказали: 1 раз |
|
|
|
29.11.2014, 1:48
Сообщение
#55
|
|
Белый Волк Группа: Пользователи Сообщений: 1 723 Регистрация: 11.9.2008 Из: г.Томск Пользователь №: 516 Спасибо сказали: 657 раз |
UPD-13:
- обнаружился баг - при попытке просмотра погоды городов из подменю "Другие города", если оставить первое окошко ввода пустым (а там надо вводить 0 или 1), то скрипт падал с ошибкой вроде этого: Цитата [03:45:32] <#OpChat#> ...r/ptokax/scripts/Current_Weather_All_Cities_Mint.lua:118: attempt to index local 'sCity' (a nil value) То есть, не было "защиты от дурака". Скрипт исправил и архив перезалил. Изменение только в самом скрипте.Дата заливки последней версии: 2014-11-29 01:45 (мск.) |
|
|
13.12.2014, 23:23
Сообщение
#56
|
|
Активный участник Группа: Пользователи Сообщений: 93 Регистрация: 25.1.2010 Пользователь №: 5 828 Спасибо сказали: 7 раз |
Конечно не знаю, но вот у меня уже дня три данный скрипт не работает, хотя до этого, с изменениями тут выложенными, работал исправно!
Перестал выводить погоду в чат хаба и по запросу в личку с данной ошибкой: ...\scripts\Current_Weather_All_Cities.lua:275: attempt to index a nil value Попробовал сам подправить, но безуспешно. Просьба или подправить или подсказать, что поправить, так как скрипт очень хороший! Скрипт запускается без ошибок, ошибка появляется по срабатыванию таймера и по запросу погоды. |
|
|
14.12.2014, 4:23
Сообщение
#57
|
|
Белый Волк Группа: Пользователи Сообщений: 1 723 Регистрация: 11.9.2008 Из: г.Томск Пользователь №: 516 Спасибо сказали: 657 раз |
Marc,
Сайт поменял префикс с "http://" на "https://", и просто так исходник страницы не скачать...тут надо новую библиотеку применять (SSL). Подробных рекомендаций я не могу дать, но как отправную точку могу посоветовать вот эту тему. Судя по тексту автора темы, с виндовой Птокой особой проблемы не должно быть (хотя могу ошибаться насчёт 64-бит), но вот с линуксовой версией у меня с лёту не прокатило...Как установить библиотеку под Дебиан/Убунту - для этого есть команда в комменте #2. У меня поставилась (вроде), но скрипт всё равно выдаёт ошибку, версия библиотеки, возможно, не нравится.. У меня стоит Птока мод 6 от Alex82. Короче, возникающие вопросы нужно там задавать. Потом, если прокатит, расскажете тут, что и как вы сделали. Поделитесь опытом! А то мне сейчас чуток нет возможности плотно заняться этим. |
|
|
14.12.2014, 5:49
Сообщение
#58
|
|
Активный участник Группа: Пользователи Сообщений: 93 Регистрация: 25.1.2010 Пользователь №: 5 828 Спасибо сказали: 7 раз |
Ksan!
Расскажу о своих действиях: -видел, что поменялась страница на "https://" Всвязи с этим, по некоторой подсказке из другого скрипта Артёма (TempUserList2.lua) пытался внести изменения в этот твой скрипт с изменением кода: Код function OnStartup() https = require("ssl.https") -библиотека для работы с "ssl.https" установлена -запуск скрипта идёт без ошибки, как на х32 так и на х64 Win 7 -но, при срабатывании таймера или при попытке вывести погоду в лс идёт такое следующее сообщение: "Произошла ошибка при обновлении информации о погоде. Причина: wrong version number" Это я описал свои действия, которые предпринимал при попытке поправить изменение страницы на "https://" Может поможет при анализе... Других ошибок не наблюдалось. Проверял на PtokaX 0.4.1.2 |
|
|
14.12.2014, 7:36
Сообщение
#59
|
|
Белый Волк Группа: Пользователи Сообщений: 1 723 Регистрация: 11.9.2008 Из: г.Томск Пользователь №: 516 Спасибо сказали: 657 раз |
Marc,
Цитата Причина: wrong version number Это мне Артём уже показывал. Откуда идёт, не знаю, но это не от скрипта, текст ошибки писан либо на сайте, либо в библиотеке.У вас винда, и у вас хотя бы до этого места доходит.. В отличие от моей убунто-минтовой Птоки.. |
|
|
14.12.2014, 9:00
Сообщение
#60
|
|
Местный Группа: Неактивированные Сообщений: 908 Регистрация: 26.12.2008 Пользователь №: 1 574 Спасибо сказали: 1406 раз |
У меня скрипт завелся после десятиминутного колдовства. 71 строка:
Код http = require("ssl.https") 270 строка: Код local msg,err = http.request("https://pogoda.mail.ru/prognoz/"..index.."/") Вывод: при решении подобного рода проблем нужно ВНИМАТЕЛЬНО смотреть на то, что находится в адресной строке Вашего браузера, который, в отличие от отлаживаемого скрипта, смог нормально загрузить страницу. Говновебмастеры очень любят переименовывать страницы, и делать редиректы на них со старых адресов. Браузеры молча переходят по новым адресам, вставляя их в адресную строку, а библиотека сокетов так делать, увы, не умеет. |
|
|
14.12.2014, 13:12
Сообщение
#61
|
|
Белый Волк Группа: Пользователи Сообщений: 1 723 Регистрация: 11.9.2008 Из: г.Томск Пользователь №: 516 Спасибо сказали: 657 раз |
alex82,
Цитата У меня скрипт завелся после десятиминутного колдовства. Но у тебя же Винда, или я ошибаюсь? Хотя у некоторых и на винде не катит, судя по комментам.. Надо завтра мне тоже на винде проверить у себя. С линуховой версией скрипта (точнее, библиотеки) пока не справился. |
|
|
|
Сейчас: 23.11.2024, 5:29 |