Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

MyDC.ru _ Запросы скриптов для PtokaX _ Скрипт онлайн-погоды

Автор: Perspect 27.12.2009, 17:22

Просьба модераторам: не удаляйте эту тему, т.к. скрипт реально нужен. Это скрипт НЕ прогноза погоды.
Подобные запросы я обнаружил в мусорке этого форума!


У нас на хабе постоянно спрашивают: "Какая у вас погода?". Подобный скрипт был бы очень к стати. Давно о нём размышляю.
Хорошо было бы в чат выводить подобный текст: [GMT +2:00] Симферополь, время: 15:00:00, температура: +3°C

Данные об онлайн погоде можно брать например здесь http://mydc.ru/r/?http://gismeteo.ua/city/daily/4995/

Автор: Хабыч 27.12.2009, 17:28

на форуме есть скрипт же, юзай поиск

Автор: Perspect 27.12.2009, 17:35

Цитата(Хабыч @ 27.12.2009, 16:28) *
на форуме есть скрипт же, юзай поиск

Повторяю: Это скрипт НЕ прогноза погоды, Погода не по запросу, а автоматом в чат, каждый час, погода за окном сейчас!
Совершенно разные скрипты!!!

Автор: Хабыч 27.12.2009, 17:37

флуду будет в чате...

Автор: Perspect 27.12.2009, 17:39

Цитата(Хабыч @ 27.12.2009, 16:37) *
флуду будет в чате...

Ты же был на моём хабе и видел ФЛУД?
1 раз в час - это нормальной. Время так выдаёт уже более 2 лет. Никто не жалуется, а наоборот - возникают диалоги. big_smile.gif

Автор: Setuper 27.12.2009, 17:56

Ну так возьми скрипт погоды и запихни вызов в таймер.

Автор: Хабыч 27.12.2009, 17:59

скрипт погоды с rp5.ru который Nickolya писал вроде выводит по таймеру

Автор: Setuper 27.12.2009, 18:03

Вот вот. Всё есть, нужно только хорошенько посмотреть.

Автор: Perspect 27.12.2009, 18:04

Цитата(Setuper @ 27.12.2009, 16:56) *
Ну так возьми скрипт погоды и запихни вызов в таймер.

Мне не нужен прогноз на завтра и т.д. Нужна погода нынешняя, которая сейчас. Вначале же написано!

Автор: Хабыч 27.12.2009, 18:11

ты не ленись, попробуй что есть найти и поставить http://mydc.ru/topic393.html

Автор: Perspect 27.12.2009, 18:15

Цитата(Хабыч @ 27.12.2009, 17:11) *
ты не ленись, попробуй что есть найти и поставить http://mydc.ru/topic393.html

Да я его видел. Скрипт выводит много информации, а надо - миниум: время и нанешняя температура воздуха за окном.
Ковырял я его уже.

Автор: Хабыч 27.12.2009, 18:19

ну прости, я думаю чисто для тебя скрипт никто не будет переделывать. с любым скриптом хотя бы немного но ручками придётся поработать

Автор: X-Sky 27.12.2009, 18:24

Конечно нужен такой скрипт, я кстати хотел только сегодня создать такую тему, но только чтоб погода вызывалась по команде и без задержек. Например время обновления была минута.

Вот пример (взято с одного из красноярских хабов)

Цитата
[22:27:47] <X-Sky> !темп
[22:27:47] <[^_^]> Поздний вечер. Температура на улице: -9.9 °C

Автор: Perspect 27.12.2009, 18:33

Ручками там запаришься переделывать. Проще с нуля написать. К тому же, тот скрипт ресурсов больше кушает, чем этот. Нужен простенький скрипт. big_smile.gif

Автор: X-Sky 27.12.2009, 19:46

Моих знаний луа не хватит написать даже такой скриптик.
Я вообще не скриптер, в основном фиксер.
Придётся просить помощи у наших знающих LUA, как свои пять пальцев (на одной руке, всмысле big_smile.gif ), парней ;)

Автор: Perspect 27.12.2009, 20:27

Вот ещё что-то похожее. Отображается ввиде топика.


 Topic_Pogoda_______.rar ( 1.14 килобайт ) : 76
 

Автор: X-Sky 27.12.2009, 20:56

Если это тот скрипт, который выдает погоду с weather.mail.ru (не помню точно сайт) - сразу скажу, что фигня.
Фигня, потому что погода на "майле" не точная.
Переделывал его так, чтобы погоду выдавало по команде в чат (кому нужен - могу сделать).
Погоду -14 мне показывало около 3-х часов (погода за это время прилично изменилась), при том, что время обновления погоды стояло 2 минуты.
Пробовал сделать, чтобы он парсил гисметео или weather.kraslan.ru (где самая точная погода моего города(Красноярск)), но у меня ничего не вышло.

Автор: Perspect 27.12.2009, 21:27

Пока что показывает правильно. Час назад было +5, сейчас поднялась до +6, точно по термометру. Может они там уже наладили систему? big_smile.gif

Автор: X-Sky 27.12.2009, 21:30

Всё может быть)

Автор: Strannik 28.12.2009, 0:38

Цитата(Perspect @ 27.12.2009, 18:35) *
Повторяю: Это скрипт НЕ прогноза погоды, Погода не по запросу, а автоматом в чат, каждый час, погода за окном сейчас!
Совершенно разные скрипты!!!


так вот же он http://mydc.ru/topic2232.html?hl=погода

Автор: Perspect 28.12.2009, 0:56

Цитата(Strannik @ 27.12.2009, 23:38) *
так вот же он http://mydc.ru/topic2232.html?hl=погода

Этот скрипт показывает погоду в топике, но ставить его не советую. Проверил, он изначально глюченный!!! Погоду показывает не правильно и т.д.
Скрипт нужен, который бы каждый час в чат выдавал сообщение, типа этого: [GMT +2:00] Симферополь, время: 15:00:00, температура: +3°C

Автор: Wariner 28.12.2009, 8:12

Я никак не пойму что вы заладили одно и тоже?! Все уже давно поняли что вам нужно. Может уже стоит попробовать самому что то изобразить?!

Автор: Nickolya 31.12.2009, 1:00

Вот скрипт что получился для Евгения, если хотите - переделывайте, если не можете - кидайте ссылку на страницу где находятся данные, если страница локальная - можно код этой страницы.
Скрипт скачивает страницу и находит на ней температуру, по команде выводит в чат и может выдавать в чат через определенный интервал времени погоду.

 Temp.lua ( 1.22 килобайт ) : 63
 

Автор: Хабыч 31.12.2009, 1:08

http://mydc.ru/r/?http://rp5.ru/town.php?id=8935 можно под это? big_smile.gif сорри засыпаю уже beat_plaster.gif

Автор: Nickolya 31.12.2009, 1:33

Это переделка моего скрипта, написал http://mydc.ru/index.html?showtopic=393&view=findpost&p=24795

Автор: Артём 2.1.2010, 8:49

Nickolya
http://mydc.ru/r/?http://pogoda.mail.ru/?city=3913
Можно ?

Автор: X-Sky 3.1.2010, 16:39

Nickolya, частенько стал вылазить репорт:

Цитата
Произошла ошибка при обновлении информации о погоде: timeout


За минут 5 может раза 3 вылезти.
Частота обновления у меня 1 минута

Автор: CrackWG 11.1.2010, 18:13

Сделайте пожалуйста для новосибирска а то уже мозг сломал:( сайт www.ngs.ru

Цитата(CrackWG @ 11.1.2010, 16:13) *
Сделайте пожалуйста для новосибирска а то уже мозг сломал:( сайт www.ngs.ru

огромное спасибо за исходник вот сделал для новосибирска кому надо берите пользуйтесьbig_smile.gif  Temp.lua ( 1.19 килобайт ) : 24


И еще вопрос к автору какой временной интервал по умолчанию сделан а то что то у меня полторачаса хаб включен а он не отсылает автоматом:(

Автор: Nickolya 12.1.2010, 23:37

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

Код
    if bSendToChat then
        TmrMan.AddTimer(iTimeToSend*1000,"GetData")
    end
на
Код
    if bSendToChat then
        TmrMan.AddTimer(iTimeToSend*1000,"SendToChat")
    end

Еще нашел странный косяк, если у кого есть подобное - правьте:
Код
    Core.SendToAll(tUser,"*** Погода в Новосибирске: "..(sTemp or "[нет данных]"))
заменяем на
Код
    Core.SendToAll("*** Погода в Новосибирске: "..(sTemp or "[нет данных]"))


Цитата(Артём @ 2.1.2010, 8:49) *
Nickolya
http://mydc.ru/r/?http://pogoda.mail.ru/?city=3913
Можно ?

Держи, прости что не так быстро как бы ты хотел, если еще сам не переделал big_smile.gif
+ добавил установку задержки для закачки страницы из интернета, чтобы хаб особо не подисал. Если этого нет в вашем скрипте в самом начале делаем настройку
Код
-- Таймаут ожидания загрузки страницы (чтобы хаб не подвисал), в секундах:
iTimeOut = 5
и после
Код
    http = require("socket.http")
дописываем
Код
    http.TIMEOUT = iTimeOut


 Temp_pogoda.mail.ru_.lua ( 1.37 килобайт ) : 32
 

Автор: Хабыч 12.1.2010, 23:40

Nickolya пожалуйста http://mydc.ru/r/?http://6.pogoda.by/27581 big_smile.gif Очень очень благодарен))

Автор: Nickolya 12.1.2010, 23:43

И где там погода онлайн? Я вижу только

Цитата
Фактическая погода

Чебоксары → Нет данных о фактической погоде

Автор: Хабыч 12.1.2010, 23:46

странно очень попробуй тут плиз http://mydc.ru/r/?http://zontik.net.ua/cebokcary/ baffle.gif

Автор: Nickolya 12.1.2010, 23:48

Почитай внимательно тему и посмотри страницы в которых ищутся данные и какие данные ищутся, тогда поймешь о чем речь, советую так делать всегда. Скрипт парсит страницы на которых выведен ТЕКУЩИЙ ПОКАЗАТЕЛЬ ТЕМПЕРАТУРЫ, а не какой-то прогноз...

Автор: Хабыч 12.1.2010, 23:51

пробовал не получилось unhappy.gif

Автор: Nickolya 12.1.2010, 23:54

Думай, что тут еще сказать... И не превращайте тему в флудильню, пожалуйста.

Автор: CrackWG 13.1.2010, 18:34

у меня не виснит хаю если сделать норм интервал при автоматическом я бы рекомендовал не менее 15 минут

Автор: Хабыч 14.1.2010, 11:50

добил этот скрипт под себя но спустя два дня в чате

Цитата
[10:35:58] Не удалось обработать информацию о погоде. Возможно, было изменено оформление страницы.
[10:36:58] Не удалось обработать информацию о погоде. Возможно, было изменено оформление страницы.
[10:52:03] Произошла ошибка при обновлении информации о погоде: timeout


что можно с этим поделать?

Автор: Nickolya 14.1.2010, 13:13

Не обрабатывается информация на странице, возможно там немного изменили теги или что-то еще, может ты не так сделал под себя, давай ссылку и сам скрипт, посмотрим что там и как...

Автор: Хабыч 14.1.2010, 13:39

Всё тоже самое что ты сделал Артёму. Я только город изменил, присобачил чтобы от ника бота выходило в чат и когда юзер даёт запрос то ему идёт вот так
[13:38:20] <ChebZoneBot> Saymon, Погода в Чебоксарах: -9 big_smile.gif

 ____.lua ( 1.43 килобайт ) : 19
 

Автор: Ksandor 24.2.2010, 17:49

Нужна помощь если можно, чтоб брал не с майла, а с нашего местного http://mydc.ru/r/?http://pogodavtomske.ru/ . А то в Майле он берет не с левого угла, а с центра

 

Автор: Saymon 24.2.2010, 18:04

можно попробовать переделать и скрипт мэйла big_smile.gif
а насчёт вашего сайта ещё надо подумать, могу после работы попробовать сделать для практики. big_smile.gif

Автор: Ksandor 24.2.2010, 18:12

Цитата(Saymon @ 24.2.2010, 18:04) *
можно попробовать переделать и скрипт мэйла big_smile.gif
а насчёт вашего сайта ещё надо подумать, могу после работы попробовать сделать для практики. big_smile.gif


Можно и с майла, я попробовал не вышло. Подумал, кто может переделать сделает на наш, но это не принципиально. Все равно показывают одну и ту же практически, с разницей в пол градуса. Хуже когда при минус 27, он показывает -1 =))

Автор: Saymon 24.2.2010, 18:25

Ну да, подобная проблема встретилась у этого скрипта http://mydc.ru/topic3121.html (Моя переделка. Парсер основан на этом же) Придётся оба чуть переделать. big_smile.gif Ладно не будем оффтопить и флудить, как нибудь попробуем занятся. big_smile.gif

Автор: Perspect 24.2.2010, 18:49

Подскажите, как сделать, чтобы инфо бралась отсюда: http://mydc.ru/r/?http://gismeteo.ua/ ?

Автор: Ksandor 24.2.2010, 22:39

Интересно было бы если будет добавленно в скрипт то, что в скрипте по ссылке выше

Это по запросу:

Цитата
Температура за окном:
Атмосферное давление:
Влажность:
Скорость ветра:


А это (более простенько только погода) по времени в Хаб. Я в существующем скрипте сделал таким вывод.

Цитата
******************************************************************

*** Сейчас в г.Томске за окном: -1°

******************************************************************

Автор: Saymon 24.2.2010, 22:43

Как время будет - займусь big_smile.gif
Но точно не сегодня и завтра. Возможно на выходных.

Автор: Saymon 25.2.2010, 20:24

Ksandor, Готово щас чуть пойже выложу big_smile.gif

Автор: Ksandor 25.2.2010, 21:11

Цитата(Saymon @ 25.2.2010, 20:24) *
Ksandor, Готово щас чуть пойже выложу big_smile.gif


При много благодарен. Жду. big_smile.gif

Автор: Saymon 25.2.2010, 21:24

Тестируй  Temp.lua ( 2.99 килобайт ) : 58
big_smile.gif

Пример

[21:09:57] <Bot[Security]> Информация о погоде
***************************************************************************
Сейчас в г. Чебоксары за окном -7
Атмосферное давление 748mmHg
Влажность 99%
Скорость и направление ветра 1 м/с СЗ
***************************************************************************


Находим строку local msg,err = http.request("http://pogoda.mail.ru/?city=2867")
Заменяем 2867 на свой код города.
Находим City = "Чебоксары" --Город хаба
Пишем свой город.

Автор: Ksandor 26.2.2010, 11:59

Бегло посмотрев, по команде выводит нормально. По времени в Хаб поставил 1 минуту, чтоб посмотреть. Ждать час долго )))
Первое, что вылезло.

Цитата
[14:57] Синтаксис \0.4.1.2\scripts\Temp.lua:55: bad argument count to 'SendToAll' (1 expected, got 2)


Убрал. Здесь tUser,
Код
Core.SendToAll("<"..sBot.."> \tИнформация о погоде\r\n\t"..sLine.."\r\n"..


Теперь все нормально выводит.

Переодически вылетает правда:
Раскрывающийся текст
Цитата
[15:11:47] <OpChat> Произошла ошибка при обновлении информации о погоде. Причина: timeout


Информация о погоде
***************************************************************************
*** Сейчас в г. Томск за окном [нет данных] °
*** Атмосферное давление [Ошибка. Нет данных]
*** Влажность [Ошибка. Нет данных]
*** Скорость и направление ветра [Ошибка. Нет данных]
***************************************************************************


Но чаще все нормально.

Огромное спасибо big_smile.gif

Автор: Ksandor 28.2.2010, 14:20

Подобное лучше наверное вообще убрать, ибо все же этот отчет начинает доставать сильно big_smile.gif

Раскрывающийся текст
[17:12:36] <OpChat> Произошла ошибка при обновлении информации о погоде. Причина: timeout
[17:15:39] <OpChat> Произошла ошибка при обновлении информации о погоде. Причина: timeout
[17:16:36] <OpChat> Произошла ошибка при обновлении информации о погоде. Причина: timeout
[17:17:39] <OpChat> Произошла ошибка при обновлении информации о погоде. Причина: timeout


Автор: WINS 1.3.2010, 21:11

Цитата(Ksandor @ 28.2.2010, 15:20) *
Подобное лучше наверное вообще убрать, ибо все же этот отчет начинает доставать сильно big_smile.gif

Раскрывающийся текст
[17:12:36] <OpChat> Произошла ошибка при обновлении информации о погоде. Причина: timeout
[17:15:39] <OpChat> Произошла ошибка при обновлении информации о погоде. Причина: timeout
[17:16:36] <OpChat> Произошла ошибка при обновлении информации о погоде. Причина: timeout
[17:17:39] <OpChat> Произошла ошибка при обновлении информации о погоде. Причина: timeout

Код
iTimeOut = 10
или больше поставить.
добавил вызов через меню, переделал чтоб парсил с апорта, останется только ссыль заменить, может кому пригодится. Если будут ошибки поправьте пожалуйста, так вродь робит)

 Temp.lua ( 2.56 килобайт ) : 35
 

Автор: ProGeTTo 3.1.2011, 11:03

Отличный скрипт, только трабла, неизвестно почему на на погода@mail.ru тупо нету моего города...
можно его как-то переделать чтоб брал с http://mydc.ru/r/?http://www.gismeteo.ru/city/daily/5018/ , там есть он...

Автор: Ksan 3.1.2011, 12:00

1. Пусть скрипт берёт информацию про ближайший к тебе большой город, который есть в списках майл.ру (для тебя, наверно, Саратов), а ты перед выводом этой информации просто подмени тот город на свой через

Код
s = string.gsub(s,x,y)
где
s - всё сообщение, выводимое в чат,
x - чужой город,
y - твой город.
Чужой город подменится твоим.
Близкие города - погода одинаковая, особенно в европейской части России.

2. Хотя можно ещё проще - как значение переменной City пишешь свой город, а индекс города для получения погоды ставишь саратовский (ближайший с индексом).

Автор: ProGeTTo 3.1.2011, 13:41

неа, ближайший город с похожей погодой оказался http://mydc.ru/r/?http://pogoda.mail.ru/?city=2066
его ставлю, он вместо "0°" ставит "-3°"
+ гисметео правдивей.

Автор: Ksan 3.1.2011, 17:33

Кстати, выложу-ка я тоже чуть подправленную версию этого скрипта.
Изменения:
- добавил меню
- добавил выборку погодных явлений (облачность, осадки и т.д.)
- подправил чуток вывод градусов и мм.рт.ст
- подогнал под себя дизайн вывода big_smile.gif
- при запуске скрипта сразу же с сайта берётся инфа о погоде, не дожидаясь сигнала от таймера (дальше уже отработает таймер)

Думаю, можно добавить в меню разные города (по желанию админа)
---------------------------------------------------------------------------------------

UPD: Всё, сделал с городами.
Готовый скрипт с меню и разными городами переложил http://mydc.ru/topic4227.html

Автор: Sinsei 17.7.2014, 5:17

Кто сможет подправит данный скрипт под mail.ru

Раскрывающийся текст
Код
bSendToChat = false            -- Отправлять ли в чат сообщения по таймеру (true) или нет (false)
local sLine = ("*"):rep(75)
sBot = SetMan.GetString(21)
City = "Хабаровске"             -- Город хаба
iTimeToSend = 60*60            -- Интервал в секундах для отправления в чат при включенной опции выше
iTimeOut = 5                -- Таймаут ожидания загрузки страницы (чтобы хаб не подвисал), в секундах
function UserConnected(tUser)
    Core.SendToUser(tUser,"$UserCommand 1 3 Развлечения\\Погода$<%[mynick]> !temp|")
end
OpConnected = UserConnected
RegConnected = UserConnected
function ChatArrival(tUser, sData)
  local cmd = sData:match"%b<>%s+(%S+).*|"
  if cmd == "!темп" or cmd == "!temp" or cmd == "!темп" or cmd == "+temp" then
    if not sTemp then
        GetData()
    end
    Core.SendToUser(tUser,"<"..sBot.."> \tИнформация о погоде\r\n\t"..sLine.."\r\n"..
     "\tСейчас в г. "..City.." за окном: "..(sTemp or "[нет данных]").."\r\n"..
     "\tАтмосферное давление: "..(sAtmos or "[Ошибка. Нет данных]").."\r\n"..
     "\tВлажность: "..(sHumidity or "[Ошибка. Нет данных]").."\r\n"..
     "\tСкорость и направление ветра: "..(sWind or "[Ошибка. Нет данных]").."\r\n"..
     "\t"..sLine.."")
    return true
  end    
end

function OnStartup()
    http = require("socket.http")
    http.TIMEOUT = iTimeOut
    TmrMan.AddTimer(1*60000,"GetData")
    if bSendToChat then
        TmrMan.AddTimer(iTimeToSend*1000, "SendToChat")
    end
end

function SendToChat()
    Core.SendToAll(tUser,"<"..sBot.."> \tИнформация о погоде\r\n\t"..sLine.."\r\n"..
     "\tСейчас в г. "..City.." за окном "..(sTemp or "[нет данных]").."\r\n"..
     "\tАтмосферное давление "..(sAtmos or "[Ошибка. Нет данных]").."\r\n"..
     "\tВлажность "..(sHumidity or "[Ошибка. Нет данных]").."\r\n"..
     "\tСкорость и направление ветра "..(sWind or "[Ошибка. Нет данных]").."\r\n"..
     "\t"..sLine.."")
end

function GetData()
    local msg,err = http.request("http://weather.aport.ru/auto/31735/Habarovsk.htm")
    if msg then
        local temp = msg:match("<div class=\"field2\">(.-)</div>")
        local atmos = msg:match("Давление:(.-)<br>")
        local humidity = msg:match("Влажность:(.-)<br>")
        local wind = msg:match("<div class=\"field3\">.-%b<((.-)%b<>")
        if temp then
            sTemp = temp:gsub("[%&deg;%s]", "")
            sAtmos = atmos:gsub("[%&de;C%s]", "")
            sHumidity = humidity:gsub("[%&de;C%s]", "")
            sWind = wind:gsub("[%&nbsp;(;C%s]", "")
        else

            Core.SendToOpChat(" Не удалось обработать информацию о погоде. Возможно, было изменено оформление страницы.")
        end
        else
        Core.SendToOpChat(" Произошла ошибка при обновлении информации о погоде. Причина: "..err)
    end
end

Автор: Ksan 17.7.2014, 11:52

Sinsei,
http://mydc.ru/topic4227.html