myDC.ru

Здравствуйте, гость ( Вход | Регистрация )

 

> Temperature, Выводит текущую погоду автом. в чат и по запросу, можно. неск. городов

Ksan
сообщение 3.1.2011, 18:31
Сообщение #1


Белый Волк
*********

Группа: Пользователи
Сообщений: 1 413
Регистрация: 11.9.2008
Из: г.Томск
Пользователь №: 516
Спасибо сказали: 445 раз




Скрипт просмотра текущей погоды в разных городах (в чате периодически или по запросу через меню) с сервера http://pogoda.mail.ru/ (перекочевал из этой темы )
Название: Temperature.lua
Платформа: PtokaX
API: API 2
Авторы: Nickolya, Saymon
Изменил: Ksan
Исправил: Ksan big_smile.gif

Библиотека: Для работы скрипта требуется библиотека Lua Socket

Изменения от Ksan:
- добавил меню
- добавил выборку погодных явлений (облачность, осадки и т.д.)
- подправил чуток вывод градусов и мм.рт.ст
- подогнал под себя дизайн вывода
- можно смотреть текущую погоду разных городов (через меню)
- меню с разными городами строится автоматически в зависимости от таблицы городов
- добавлено ограничение частоты запросов погодного сервера
- добавил сборщик мусора
- добавлена инфа про макс. и мин. температуру в этот же день из архивов этого города (если отсутствует пр выводе, значит, нет информации в архивах)
- добавлено время восхода/захода солнца (для полярной ночи или дня вместо времени будет -*- )
- добавлен вывод текущих даты/времени для просматриваемой местности

Исправления от Ksan:
- при попадании на просмотре через меню города без архивов погоды (есть и такие) следующие города показывались тоже без данных из архива (до перезапуска скрипта). Исправлено.
- на сайте изменили вид ссылки (теперь там вместо кодов городов - названия самих городов латиницей и без пробелов (вместо пробела - символ подчеркивания)). Скрипт переделан под это.

Примечания:
1. Индексы городов находить так: поиск по городу на странице сервера http://pogoda.mail.ru/ в правом верхнем углу, в открывшейся странице в поле адреса последнее число - это индекс нужного города.
2. Таблицу городов стройте аналогично уже вписанным в скрипт.
Названия городов транслитом можно получить через этот же сайт погоды http://pogoda.mail.ru/ (прописываете город в окошке ввода кириллицей, и потом получаете в адресной строке последнее слово - название города латинскими буквами).
3. И да, кому хочется показывать давление и влажность в чате (для всех), можете просто раскомментить 2 строки в функции "functionSendToChat()"

Пример результата работы скрипта - ответ на запрос через меню:

Код
[05:07:40] <Current_Weather_Indy> Сейчас в г.Томск:
            ************************************************************
            Время: четверг, 22 декабря 2011, 05:02 (GMT +7)
            ************************************************************

            Температура:       -14°
            Погодные явления: "пасмурно"
            Давление:         765 мм рт.ст
            Влажность:        80%
            Ветер:            2 м/с ЮЗ
            Солнце:           восход: 09:54
                              заход:  16:43

            В этот же день (из архивов):
                Max.:         +1.1°  (1996г.)
                Min:         -42.0°  (1949г.)
            ************************************************************


UPD:
- добавлена инфа про макс. и мин. температуру в этот же день из архивов этого города (если отсутствует при выводе, значит, нет информации в архивах), скрипт перезалит.
UPD-2:
- добавлена возможность выбора места вывода по запросу - в приват или чат ( local bSendToPrivat = true )
UPD-3:
- скрипт исправлен и добавлена как новая версия. Причина - изменение представления адреса на сайте погоды.
Но нет худа без добра - пока менял скрипт под это изменение, нашёл(и исправил) причину потери временами архивных данных при выводе информации.
UPD-4:
- скрипт исправлен и залит сюда, старые версии удалены за ненадобностью. Причина - полное изменение структуры страницы на сайте.
Пришлось всё перелопатить.
- добавил показ восхода/захода солнца.
UPD-5:
- добавил показ текущей даты/времени местности (UPD: убрал показ даты/времени для вывода в чат местнй погоды (зачем местным показывать их время, тем более, не очень точное))
- исключил вывод данных при получении ошибки с сайта (чтоб все города не получали одну и ту же погоду)
- небольшие косметические малозаметные изменения, улучшающие работу скрипта

Дата перезаливки первой версии: 23-01-2011 03:45 (мск.)
Дата заливки второй версии: 18-11-2011 05:32 (мск.)
Дата заливки третьей версии: 15-12-2011 06:25 (мск.) 19-12-2011 12:05 16:05 (мск.)
Дата заливки последней версии: 22-12-2011 02:20 20:47 (мск.)

Прикрепленные файлы
Прикрепленный файл  Temperature.lua ( 9.49 килобайт ) Кол-во скачиваний: 79
 


Спасибо сказали:
Go to the top of the page
+Quote Post
2 страниц V   1 2 >  
Начать новую тему
Ответов
Ksan
сообщение 19.1.2011, 7:15
Сообщение #2


Белый Волк
*********

Группа: Пользователи
Сообщений: 1 413
Регистрация: 11.9.2008
Из: г.Томск
Пользователь №: 516
Спасибо сказали: 445 раз




UPD-2:
- подправлен чуток код, так как по запросу архивные данные по температуре могли не выводиться, даже если они есть. Также добавлена возможность выбора места вывода по запросу - в приват или чат. ( local bSendToPrivat = true )
Перезалит в первом сообщении.
Go to the top of the page
+Quote Post
BOKOREZ
сообщение 22.1.2011, 6:46
Сообщение #3


Абсолютный новичок


Группа: Пользователи
Сообщений: 7
Регистрация: 20.1.2011
Из: Комса
Пользователь №: 8 586
Спасибо сказали: 0 раз




Блин, скрипт как раз то что нужно, но есть проблемка...
Где можно взять http.lua , socket.dll , http.dll ?
Простите меня нуба, но я реально не знаю откуда их скачать можно) только начал заниматся хабом)
Go to the top of the page
+Quote Post
Saymon21
сообщение 22.1.2011, 6:54
Сообщение #4


Активист!
*********

Группа: Модераторы
Сообщений: 1 614
Регистрация: 27.6.2009
Из: Чувашия, г. Чебоксары
Пользователь №: 3 719
Спасибо сказали: 401 раз




BOKOREZ, http://mydc.ru/topic43.html
Go to the top of the page
+Quote Post
BOKOREZ
сообщение 22.1.2011, 7:54
Сообщение #5


Абсолютный новичок


Группа: Пользователи
Сообщений: 7
Регистрация: 20.1.2011
Из: Комса
Пользователь №: 8 586
Спасибо сказали: 0 раз




За ссылку спасибо большое, нашел уже)))
Автору за скрипт великая признательность)))
Go to the top of the page
+Quote Post
Ksan
сообщение 22.1.2011, 9:36
Сообщение #6


Белый Волк
*********

Группа: Пользователи
Сообщений: 1 413
Регистрация: 11.9.2008
Из: г.Томск
Пользователь №: 516
Спасибо сказали: 445 раз




Да, забыл я написать в первом сообщении про библиотеку...Исправил уже.
Но на всякий случай продублирую тут:
Библиотека: для работы скрипта требуется библиотека Lua Socket
Go to the top of the page
+Quote Post
Dan Claimant
сообщение 23.1.2011, 2:46
Сообщение #7


Участник
**

Группа: Пользователи
Сообщений: 31
Регистрация: 28.11.2009
Пользователь №: 5 196
Спасибо сказали: 0 раз




[01:40:16] <OpChat> D:\()PtokaX\scripts\Temperature.lua:133: attempt to concatenate global 'sArchive' (a nil value)

я так понял это происходит в момент запроса на температуру в общий чат =)
Go to the top of the page
+Quote Post
Ksan
сообщение 23.1.2011, 4:43
Сообщение #8


Белый Волк
*********

Группа: Пользователи
Сообщений: 1 413
Регистрация: 11.9.2008
Из: г.Томск
Пользователь №: 516
Спасибо сказали: 445 раз




Dan Claimant, найди эти строки:
Код
function SendToChat()
    bArchive = GetData(tCities[sCity])
и добавь сразу под ними эту:
Код
local sArchive = ""

Когда делал последнее исправление, забыл с тестируемого скрипта скопировать эту строку сюда.

UPD: Исправил и перезалил в первом сообщении.

Тест ɐwʎ ɔ ɐvmоɔ


Спасибо сказали:
Go to the top of the page
+Quote Post
reidel_viktor
сообщение 24.3.2011, 10:09
Сообщение #9


Начинающий
*

Группа: Пользователи
Сообщений: 14
Регистрация: 6.2.2010
Пользователь №: 5 974
Спасибо сказали: 0 раз




Поставил скрипт, поставил свой город. смотрю -8 в окно смотрю солнышко +2.. бред. secret_smile.gif
Go to the top of the page
+Quote Post
Ksan
сообщение 24.3.2011, 10:33
Сообщение #10


Белый Волк
*********

Группа: Пользователи
Сообщений: 1 413
Регистрация: 11.9.2008
Из: г.Томск
Пользователь №: 516
Спасибо сказали: 445 раз




Градусник должен быть в тени, а также не подогреваться снизу или отражением..
Это как рабочая версия.
Сходи по ссылке из первого сообщения и глянь температуру через сайт и сравни с тем, что сейчас видишь за окном и через скрипт... Если что и не так, всё равно скрипт тут ни при чем (если он у тебя обновлялся с ночи).
Go to the top of the page
+Quote Post
Pickayurik
сообщение 17.11.2011, 7:14
Сообщение #11


Абсолютный новичок


Группа: Пользователи
Сообщений: 3
Регистрация: 12.8.2010
Пользователь №: 7 476
Спасибо сказали: 0 раз




Ставил скрипт и напоролся на то, что pogoga.mail.ru теперь пишет в конце не цифры города, а название в латинской транскрипции. Попробовал в скрипте - не заработало. В общем кому все же нужен номер города - надо навести курсор на вкладу "архив погоды" на странице нужного города и увидете в конце ссылки нужный номер.

И еще, если нужный город состоит из двух слов - в названии не надо ставить пробел. Например:
Новые Васюки - не работает
Новые_Васюки - работает.

Спасибо за скрипт!
Go to the top of the page
+Quote Post
Ksan
сообщение 18.11.2011, 5:38
Сообщение #12


Белый Волк
*********

Группа: Пользователи
Сообщений: 1 413
Регистрация: 11.9.2008
Из: г.Томск
Пользователь №: 516
Спасибо сказали: 445 раз




1. Pickayurik, не знаю, почему у тебя не работал, у меня работает без всяких изменений. big_smile.gif
При запросе по ссылке со скрипта (которая с кодом в конце), ссылка на сайте преобразуется в другую (с городом в конце) и выдаёт необходимую информацию по погоде.
2. А насчёт пробела в названии населённого пункта - это нормально, что не выдаст, ибо в ссылке пробел - недопустимый символ, а символ подчеркивания издавна используется вместо пробела в таких случаях.

PS: Хотя можно и попробовать сразу добавить в скрипт новую ссылку с вытекающими отсюда небольшими изменениями...но стоит ли оно того, если и так работает?
PPS: Решил всё же подкорректировать скрипт. О результатах - ниже.


UPDATE-3:
Скрипт исправлен и перезалит, точнее, дозалит (оставил и первую версию пока)

Исправления:
- при попадании на просмотре через меню города без архивов погоды (есть и такие) следующие города показывались тоже без данных из архива (до перезапуска скрипта). Исправлено.
- на сайте изменили вид ссылки (теперь там вместо кодов городов - названия самих городов латиницей и без пробелов (вместо пробела - символ подчеркивания)). Скрипт переделан под это.

Доп. информация по поводу исправлений - в первом сообщении.
Go to the top of the page
+Quote Post
MIKHAIL
сообщение 27.11.2011, 7:04
Сообщение #13


Активный участник
***

Группа: Пользователи
Сообщений: 59
Регистрация: 4.9.2011
Из: Республика Беларусь, Минск
Пользователь №: 9 667
Спасибо сказали: 0 раз




Хотелось бы узнать как сделать так, чтобы города шли в том порядке, в котором я захочу: алфавитном, или, например, так как в конфиге скрипта. Спрашиваю потому, что порядок следования в конфиге скрипта не всегда соблюдается и зависит от количества городов почему-то?..

Вообщем, короче говоря, порядок следования названий городов в конфиге скрипта не всегда (или почти не всегда) соблюдается в контекстном меню. Почему такое происходит?..
Go to the top of the page
+Quote Post
Ksan
сообщение 27.11.2011, 11:13
Сообщение #14


Белый Волк
*********

Группа: Пользователи
Сообщений: 1 413
Регистрация: 11.9.2008
Из: г.Томск
Пользователь №: 516
Спасибо сказали: 445 раз




MIKHAIL, это зависит от структуры таблицы городов в скрипте. В данном случае таблица с названиями городов не структурирована по номерам, и отправляется юзеру в том порядке, в каком находится в памяти на данный момент. А это, в свою очередь, насколько я понимаю, зависит от предыдущих выборок юзеров при вызовах через меню.
Хотя можно было бы таблицу организовать иначе, по номерам, но лично мне пофиг, как расположены города в меню.
По большому счёту, это не имеет никакого значения, согласись?!
Go to the top of the page
+Quote Post
ustas
сообщение 27.11.2011, 19:03
Сообщение #15


Продвинутый участник
****

Группа: Пользователи
Сообщений: 178
Регистрация: 20.5.2008
Пользователь №: 5
Спасибо сказали: 18 раз




Цитата
По большому счёту, это не имеет никакого значения, согласись?!

Если городов много (например штук 30), то искать в меню их все-таки удобней по алфавиту.
Go to the top of the page
+Quote Post
MIKHAIL
сообщение 28.11.2011, 1:15
Сообщение #16


Активный участник
***

Группа: Пользователи
Сообщений: 59
Регистрация: 4.9.2011
Из: Республика Беларусь, Минск
Пользователь №: 9 667
Спасибо сказали: 0 раз




ustas, +1!
Go to the top of the page
+Quote Post
Dan Claimant
сообщение 9.12.2011, 20:25
Сообщение #17


Участник
**

Группа: Пользователи
Сообщений: 31
Регистрация: 28.11.2009
Пользователь №: 5 196
Спасибо сказали: 0 раз




что-то сегодня скрипт совсем разбушевался:

[19:34] Синтаксис D:\****\PtokaX\scripts\Temperature_New.lua:105: attempt to concatenate global 'sWeather' (a nil value)

а в опчате в итоге:

[19:34:32] <OpChat> Не удалось обработать информацию о погоде. Возможно, было изменено оформление страницы.
[19:34:32] <OpChat> D:\****\PtokaX\scripts\Temperature_New.lua:105: attempt to concatenate global 'sWeather' (a nil value)
Go to the top of the page
+Quote Post
Ksan
сообщение 9.12.2011, 20:34
Сообщение #18


Белый Волк
*********

Группа: Пользователи
Сообщений: 1 413
Регистрация: 11.9.2008
Из: г.Томск
Пользователь №: 516
Спасибо сказали: 445 раз




Наверно, опять что-то на сайте изменили и парсинг не выдаёт нужного..
Придётся опять править..
Go to the top of the page
+Quote Post
Ksan
сообщение 15.12.2011, 7:24
Сообщение #19


Белый Волк
*********

Группа: Пользователи
Сообщений: 1 413
Регистрация: 11.9.2008
Из: г.Томск
Пользователь №: 516
Спасибо сказали: 445 раз





Наконец-то собрался и переделал скрипт.
Причина - полное изменение структуры страницы на сайте.
Пришлось всё перелопатить.
Плюс добавил показ восхода/захода солнца.


Дата заливки: 15-12-2011 06:25 (мск.)

Качайте из первого сообщения темы.


Спасибо сказали:
Go to the top of the page
+Quote Post
Ksan
сообщение 19.12.2011, 12:57
Сообщение #20


Белый Волк
*********

Группа: Пользователи
Сообщений: 1 413
Регистрация: 11.9.2008
Из: г.Томск
Пользователь №: 516
Спасибо сказали: 445 раз




UPD:
Выявился неучтённый момент - в архивных данных могут оказаться 2 года через запятую с одинаковой температурой Max. или Min., и при попадании такого случая скрипт падает. Что сегодня и случилось с Владивостоком.
Хорошо, хоть сам город не пострадал. big_smile.gif
Код подправил, скрипт перезалил в сообщении #1.

UPD-2:
Сделал косметическую подправку - восход/заход солнца разделил на 2 строки, а то слишком длинная получалась:
Код
Солнце:             восход: 09:52
                    заход:  16:42

Скрипт перезалил в сообщении #1.


Спасибо сказали:
Go to the top of the page
+Quote Post

2 страниц V   1 2 >
Ответить в данную темуНачать новую тему
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



RSS Сейчас: 24.5.2012, 2:22