Описание: Скрипт добавляет в топик хаба информацию о температуре воздуха в указанных городах (в качестве источника информации используется Погода@mail.ru). Также имеется возможность чередования информации о погоде с обычными топиками.
Cuba незнаю как у тебя,но у меня он и так чередуется с топиком написанным через менюшку админа P.S. эм....уже не чередуется))) Cuba кстати,если у тебя стоит скрипт АвтосменаТопика,то топик и так будет чередоватся,незачем два скрипта в один сливать.....пусть стоят оба.
P.S. cкрипт умер(( Ошибка при обновлении топика: invalid chunk size
Автор: Cuba 28.7.2009, 8:55
Цитата(Артём @ 27.7.2009, 17:52)
Cuba незнаю как у тебя,но у меня он и так чередуется с топиком написанным через менюшку админа P.S. эм....уже не чередуется))) Cuba кстати,если у тебя стоит скрипт АвтосменаТопика,то топик и так будет чередоватся,незачем два скрипта в один сливать.....пусть стоят оба.
P.S. cкрипт умер(( Ошибка при обновлении топика: invalid chunk size
Эти два скрипта очень конфликтуют друг с другом, при срабатывании скрипта погоды, начинает кикать народ с хаба :(
Автор: Men 6.8.2009, 11:45
Помогите вылечить ошибку ! ..............scripts\TopicTemp.lua:32: attempt to index local 'city' (a nil value)
Автор: Артём 6.8.2009, 12:02
у меня такаяже ошибка
Автор: Men 6.8.2009, 12:09
Цитата(Артём @ 6.8.2009, 18:02)
у меня такаяже ошибка
он у тебя работал? ,у меня поработал часа 3 и отрубился переставлял не помогает .
Автор: Артём 6.8.2009, 12:19
11 дней работал)
Автор: Serhio 6.8.2009, 20:05
Как работал, так и работает. Ни каких ошибок.
Автор: alex82 7.8.2009, 4:03
Версия 1.01
Изменения:
[F] В качестве источника информации теперь используется Погода@mail.ru. [+] Возможность отображения информации о погоде в нескольких городах (чередование). [+] Возможность чередования информации о погоде с обычными топиками.
Автор: Cuba 7.8.2009, 11:38
что-то не меняет топики :(
Автор: Ingvar72 7.8.2009, 12:24
Цитата(Cuba @ 7.8.2009, 14:38)
что-то не меняет топики :(
Меняет, только время не соответствует
Автор: Cuba 7.8.2009, 14:56
alex82, правильно ли я ставлю???
tData = {City = 1,Text = true,CurText = 1}
Мне нужно что текстовые топики чередовались с температурой в трех городах через промежуток в 15 минут.
Change = 15, -- Время переключения топиков (в минутах)
Или оставить все так???
tData = {City = 0,Text = false,CurText = 0}
И если есть возможность, поправьте косяк с таймером, он не реагирует на изменения.
Автор: Артём 7.8.2009, 17:13
Цитата(Cuba @ 7.8.2009, 14:56)
И если есть возможность, поправьте косяк с таймером, он не реагирует на изменения.
согласен,топик меняется не так как указано время (стоит у меня Change = 1 ) ,а меняется гдето минут через 12
Автор: LyaKich 7.8.2009, 18:40
А нельзя ли сделать что бы он ещё выдавал типо солнечно, облачно и всякое такое в этом родк?
Автор: alex82 7.8.2009, 19:12
Исправил
Цитата
alex82, правильно ли я ставлю???
tData = {City = 1,Text = true,CurText = 1}
Это служебные параметры. Их нельзя трогать.
Автор: Uncle_Dif 8.8.2009, 15:24
/пост удален, нашел ответ/
Работает... в чат инфу погоды можно выдавать? как анекдоты..
Автор: lewonchik 19.9.2009, 15:29
у меня такая ошибка:
Синтаксис E:\PtokaX\scripts\TopicTemp.lua:65: attempt to perform arithmetic on field '?' (a nil value)
вот строчка:
if not tTemp[tCity[tData.City]] or tTemp[tCity[tData.City]][2]+tCfg.Update*60 < os.time() then
Что нужно исправить? Помогите!
Автор: ktrnk 12.10.2009, 9:57
точно такая же ошибка! но скрипт тем не менее, вроде работает... по крайней мере города меняются в топике, а вот обновляется ли информация надо проверить...
Автор: Sergey613 14.10.2009, 23:07
Скрипт замечательный, работает на ура. Однако работает только в винде, во freebsd нет! Luasocet 2.0.2 установлены! Погода тоже не работает! В чём может быть причина? Спасибо.
Автор: Steep 25.10.2009, 12:02
Уважаемые Админы И Познователи Lua, Можете Поделиться Етим Скриптом Только под AIP1<<=))>>
Синтаксис E:\PtokaX\scripts\TopicTemp.lua:65: attempt to perform arithmetic on field '?' (a nil value)
вот строчка:
if not tTemp[tCity[tData.City]] or tTemp[tCity[tData.City]][2]+tCfg.Update*60 < os.time() then
Подтверждаю, выскочила такая ошибка! В строке:
Цитата
tData = {City = 0,Text = false,CurText = 0}
ничего не менял.
Автор: Trans 30.10.2009, 17:49
Ну вот, проблема опять с ресурсом:
"[20:32:30] Не удалось обработать информацию о погоде. Возможно, было изменено оформление страницы."
Это минут 15 назад. Потом было еще раз. Жду третьего раза и ваших сообщений или способов решения.
P.S.: Теперь то и дело выкидывает вот эту ошибку (и отключается): "[21:04:02] <_OpChat_> ...\P2P\HUBS\PtokaX_360_512\scripts\TopicTemp_API1_.lua:72: attempt to perform arithmetic on field '?' (a nil value)"
Автор: lewonchik 3.11.2009, 20:33
Цитата
у меня такая ошибка:
Синтаксис E:\PtokaX\scripts\TopicTemp.lua:65: attempt to perform arithmetic on field '?' (a nil value)
вот строчка:
if not tTemp[tCity[tData.City]] or tTemp[tCity[tData.City]][2]+tCfg.Update*60 < os.time() then
Что нужно исправить? Помогите!
Сделал так:
Код
if not tTemp[tCity[tData.City]] or tTemp[tCity[tData.City]][2]+tCfg.Update*60000 < os.time() then
Не знаю правильно или нет но ошибки пока нет, поэтому буду надеяться что и не будет, так как помощи здесь все равно не дождаться!
Автор: alex82 9.11.2009, 1:00
lewonchik Методом научного тыка скрипты лучше не лечить.
Чтобы данная ошибка не возникала, нужно найти в скрипте строку:
Код
tTemp[id] = {}
и заменить на
Код
tTemp[id] = {"",0}
Но это всего лишь костыль, не позволяющий ошибке светиться в логе, и первопричину глюка (неправильные данные, приходящие с сервера mail.ru) он не исправляет.
Автор: lewonchik 9.11.2009, 5:43
Спасибо!!!
Автор: MARVELtm 26.11.2009, 15:16
Такая проблема! При перезапуске работает , а спустя какое то время не выдает погоду, тока топики меняет которые вписаны
Автор: mwnn 9.12.2009, 10:29
скрипт отличный
вот только погода с pogoda.mail.ru не точная!!! , больше вызывает доверие gismeteo . может отдельную версию с gismeteo сделаете , буду очень благодарен , и думаю не только я
и если возьмётесь , ещё было бы отлично чтобы погода показывалась в соответсвии с временем суток - утром погода одна , днём другая и т.д.
Автор: girs 15.1.2010, 11:55
А лучше версию с rp5.ru По моему там ещё точнее температуру воздуха за бортом показывает...
Автор: Dr_Pilulkin™ 16.1.2010, 23:25
Доброго всем! Первые минут 10 работал нормально, потом такое началось, что пришлось снести. Клиент очень сильно "погнал"
Автор: Unterlink(X-Sky) 16.1.2010, 23:27
А конкретнее?
Автор: Dr_Pilulkin™ 24.1.2010, 22:17
Закладки хабов сильно мерцали, пришлось увеличить время обновления. Теперь спасибо, всё работает стабильно. , но единственное .... городов мало
Автор: sergius 25.1.2010, 0:06
сделай мультидвижок что бы отсюда брать, тут в реальном времени погода и ветер http://mydc.ru/r/?http://www.realmeteo.ru/
Автор: Санёк 25.1.2010, 1:20
Цитата
Синтаксис ...am Files\PtokaX 0.4.1.1\scripts\18.Topic_weather.lua:61: attempt to perform arithmetic on field '?' (a nil value)
Что с этим делать ?
Автор: Dr_Pilulkin™ 28.1.2010, 11:41
Цитата(sergius @ 25.1.2010, 3:06)
сделай мультидвижок что бы отсюда брать, тут в реальном времени погода и ветер http://mydc.ru/r/?http://www.realmeteo.ru/
моего города там нет...
Автор: Dr_Pilulkin™ 17.2.2010, 14:48
Помогите пожалуйста! Скрипт замечательный.Занёс штук 20 городов, но вот теперь проблемка - PtoX начала сбрасывать его (отключать) . Уже скачал и установил Configuration Saver- не помогает.Помогите пожалуйста побороть этот глюк
Автор: X-Sky 19.2.2010, 1:02
Отключает как? Во время работы хаба или что? Если да - кидай ошибку скрипта, просто так он не может отключиться
Автор: Nickolya 21.2.2010, 21:08
Бывает скрипт отключается после ошибки в этой строке:
Код
if not tTemp[tCity[tData.City]] or tTemp[tCity[tData.City]][2]+tCfg.Update*60 < os.time() then
Для того чтобы убрать ошибку мы меняем строку на
Код
if not tTemp[tCity[tData.City]] or not tTemp[tCity[tData.City]][2] or tTemp[tCity[tData.City]][2]+tCfg.Update*60 < os.time() then
Плюсом я бы еще советовал приписать после
Код
http = require("socket.http")
вот такую строку:
Код
http.TIMEOUT = 10
где 10 - таймаут на получение страницы в секундах, у кого хорошее соединение, те могут занижать эту цифру, при плохом соединении мы наоборот увеличиваем таймаут. Без этой приписки таймаут стандартный - 60 секунд.
Автор: Dr_Pilulkin™ 21.2.2010, 21:37
Спасибо, сейчас проверим на практике Всё, тест прошёл на ура! Большое вам человеческое Доброго уважаемые! Помогите пожалуйста побороть вот такую " шляпу " - " Произошла ошибка при обновлении информации о погоде: timeout "( выпадает исключительно у пользователей с "ключами" )
Автор: TommyKaira 1.3.2010, 17:20
Работал несколько дней отлично....теперь
[17:16:48] *** Не удалось обработать информацию о погоде. Возможно, было изменено оформление страницы.
Автор: avarking 2.3.2010, 18:43
хочу переделать источник температуры под яндекс.погода (с него быстрее загружается да и точнее как-то) причем конкретно под один город.
страница с которой нужно парсить температуру: http://mydc.ru/r/?http://m.weather.yandex.ru/?city=29634 (яндекс-погода(мобильная версия))
собсна оригинальный код скрипта:
Раскрывающийся текст
Код
function GetTemp(id) tTemp[id] = {} local msg,err = http.request("http://pogoda.mail.ru/informer/weather.html?view=1&encoding=win&city="..id) if msg then local city = msg:match("<h2>.-target=\"_blank\">(.-)<") local temp = msg:match("<div class=\"gradus\">.-([%+%-]%d+)") if city and temp then tTemp[id][1] = (city or "???")..": "..(temp or "?").."°" tTemp[id][2] = os.time() else Core.SendToOps("Не удалось обработать информацию о погоде. Возможно, было изменено оформление страницы.") end else Core.SendToOps("Произошла ошибка при обновлении информации о погоде: "..err) end end
пожалуйста, подскажите что нужно изменить в скрипте чтобы температура отображалась с яндекса?
Автор: Nickolya 2.3.2010, 22:43
Рассказываю: идешь по своей ссылке на Яндекс, смотришь исходный код страницы, находишь там то число что сейчас отображается в браузере среди html тегов и записываешь в строках
Код
local city = msg:match("<h2>.-target=\"_blank\">(.-)<") local temp = msg:match("<div class=\"gradus\">.-([%+%-]%d+)")
правильное регулярное выражение с учетом того что это опять же регулярное выражение. Надеюсь изложил понятно и ты прекрасно справишься с тем что хочешь сделать.
Автор: TommyKaira 3.3.2010, 1:38
Цитата
хочу переделать источник температуры под яндекс.погода (с него быстрее загружается да и точнее как-то)
Точней? судя по градуснику у меня сейчас за окном +2, маил ру показывает что у меня -2, яндекс говорит что у меня минус 6 + валит снег
Автор: avarking 3.3.2010, 22:03
Цитата(TommyKaira @ 3.3.2010, 2:38)
Точней? судя по градуснику у меня сейчас за окном +2, маил ру показывает что у меня -2, яндекс говорит что у меня минус 6 + валит снег
в разных районах города температура может различаться на пару градусов, это вполне нормальное явление) по крайней мере меня яндекс вполне устраивает + у провайдера пиринг с яндексом
Nickolya спасибо) сейчас попытаюсь придумать нужную формулу regex
Автор: Сем90 22.10.2010, 14:17
Пытался переделать этот скрипт чтобы грузил погоду с gismeteo но он так и не заработал.
tCfg = { Update = 5, -- Время обновления информации о погоде (в минутах) Change = 3, -- Время переключения топиков (в минутах) TextTopic = true, -- Чередовать информацию о погоде с текстовыми топиками }
tCity = { -- Коды городов (http://www.gismeteo.ru/catalog/russia) 4862, -- Хабаровск
}
tTopic = { -- Топики "Размести свою рекламу в Топике Хаба",
function OnStartup() http = require("socket.http") topic = SetMan.GetString(10) if topic and topic:match("%d+°") then topic = nil end if not tCfg.TextTopic and #tCity <= 1 then OneTopic() TmrMan.AddTimer(tCfg.Update*60000,"OneTopic") else NewTopic() TmrMan.AddTimer(tCfg.Change*60000,"NewTopic") end end
function OnExit() SetMan.SetString(10,topic or "") end
function NewTopic() if tCfg.TextTopic then if tData.Text then tData.Text = false tData.CurText = tData.CurText+1 if tData.CurText > #tTopic then tData.CurText = 1 end SetMan.SetString(10,tTopic[tData.CurText]) return true else tData.Text = true end end tData.City = tData.City+1 if tData.City > #tCity then tData.City = 1 end if not tTemp[tCity[tData.City]] or tTemp[tCity[tData.City]][2]+tCfg.Update*60 < os.time() then GetTemp(tCity[tData.City]) end SetMan.SetString(10,tTemp[tCity[tData.City]][1] or "") end
function OneTopic() GetTemp(tCity[1]) SetMan.SetString(10,tTemp[tCity[1]][1] or "") end
function GetTemp(id) tTemp[id] = {} local msg,err = http.request("http://informer.gismeteo.ru/html/2.php?tnumber=1&city0="..id) if msg then local city = msg:match("<h2>.-target=\"_blank\">(.-)<") local temp = msg:match("<div class=\"gradus\">.-([%+%-]%d+)") if city and temp then tTemp[id][1] = (city or "???")..": "..(temp or "?").."°" tTemp[id][2] = os.time() else Core.SendToOps("Не удалось обработать информацию о погоде. Возможно, было изменено оформление страницы.") end else Core.SendToOps("Произошла ошибка при обновлении информации о погоде: "..err) end end
Автор: STIVAN 21.12.2010, 16:54
Здравствуйте все! Вы не знаете можно ли так сделать? Например город Москва. Что бы через топик показывалось скоко градусов и !+! писало например "В Москве Перем.Оболчность,или Идут дожди,или солнечно" (Автомотически менялось) Возможно ли так зделать? Я плохо разбираюсь в скриптах,есле кто сможет зделать выложите скрипт. Спасибо.
Автор: STIVAN 22.12.2010, 17:42
ну что :? :(
Автор: Andry123456 26.12.2010, 21:31
не работает! у меня он называется -=Kharkov hub=- Врубаю скрипт и нефига только название хаба стало -=Kharkov - hub=- Что делать?
Автор: Ksan 26.12.2010, 21:39
Andry123456, а, так это ты приходил ко мне сегодня с рекламой своего хаба! Это я испортил тебе скрипт за это.
Автор: Andry123456 26.12.2010, 21:59
Это не я! я узнал об етом когда комне пришли люди и начали! Пи*деть! то спамил Swe короче непомню! Я его даже не просил! ВЕРНИ ОБРАТНО СКРИПТ! Я НЕ ВИНОВАТ ЧТО ИДИОТЫ НА СВЕТЕ СУЩЕСТВУЮТ!
Автор: Just 8.3.2011, 13:18
а можно сделать чтобы скрипт оставлял старый топик но дописывал к нему температуру после) например: hubtopic - температура ?
Автор: fabelum 20.12.2014, 18:09
Здравствуйте. Несколько лет подряд скрипт работал без нареканий, как часы. Но вот поменялась страничка на mail.ru, и всё((( Кто-нибудь, пожалуйста, исправьте!)
Автор: Marc 21.12.2014, 1:27
fabelum! Исправления есть для бота с температурой в списке пользователей тут: http://mydc.ru/topic5390.html Если хотите добавить этот скрипт себе, то рекомендую его вам!
Автор: fabelum 21.12.2014, 13:18
Благодарю за наводку. Скрипт заработал после замены http = require("socket.http") на http = require("ssl.https")
Автор: alex82 21.12.2014, 18:00
Обновил скрипт в первом посте: исправил адрес погодногого информера, исправил ошибку, возникающую после неудачного обновления температуры.
Автор: PPA 22.12.2014, 9:39
Цитата(alex82 @ 21.12.2014, 18:00)
Обновил скрипт в первом посте: исправил адрес погодногого информера, исправил ошибку, возникающую после неудачного обновления температуры.
Попробую третий раз задать вопрос - почему ты свой код не хранишь на гит-хабе? там ведь по дифу будет видно что исправляется + возможно будут слать PR ты не умеешь git или это что-то религиозное?
Автор: Артём 22.12.2014, 12:37
PPA, что за чушь, зачем lua скрипты для хабов хранить на ваших гит-хабах? есть админы которые с форума скачать их не могут и запустить на своём хабе, а ты о каких-то гит-хабах ещё настаиваешь.
Автор: Saymon21 22.12.2014, 15:00
Артём, Научаться. Там ничего сложного.
Автор: Артём 22.12.2014, 17:24
Saymon21, мало кому интересен ваш гит-хаб, точнее только линуксоидам он интересен. Есть форум специальный, здесь и выкладывать нужно, а не всякие там гит-хабы и тому подобное.
Автор: alex82 22.12.2014, 18:14
Цитата(PPA @ 22.12.2014, 8:39)
Попробую третий раз задать вопрос - почему ты свой код не хранишь на гит-хабе? там ведь по дифу будет видно что исправляется + возможно будут слать PR ты не умеешь git или это что-то религиозное?
Тогда, пожалуй, и я задам вопрос: зачем мне хранить код на гитхабе? Для чего оно мне? В таких простых скриптах изменения видны невооруженным глазом. А если и не видны, то есть WinMerge. Баг-репорты и фича-реквесты можно оставить на форуме. Продвинутый контроль версий мне не нужен, поскольку совместной разработкой не занимаюсь. Ну так зачем?
git я действительно не умею, ибо ни разу не пробовал.
Автор: PPA 23.12.2014, 8:17
Цитата(alex82 @ 22.12.2014, 18:14)
Тогда, пожалуй, и я задам вопрос: зачем мне хранить код на гитхабе? Для чего оно мне? В таких простых скриптах изменения видны невооруженным глазом.
1. В топике прикреплен один архив между чем и чем смотреть изменения? 2. Речь не только о скриптах - у тебя ведь есть и PtokaX-mod 2. Когда изменений много то сравнить два архива бывает проблематично (ведь сам знаешь как геморно сливать руками фиксы от PtokaX - он также выкатывает пачкой новый архив сорцов где исправлена 150 ошибок) когда у тебя идет живая разработка в github (или другом месте) то каждый коммит можно посмотреть в виде дифа и увидеть что конкретно поправлено для исправления бага №n.
И совсем не важно сколько разработчичков вносит изменения. Если ты и у себя не хранишь код в приватном контроллере версий то это в 2014 году делать просто не прилично )
Автор: Sinsei 27.5.2015, 13:02
Перестал работать данный скрипт.
Автор: Ksan 27.5.2015, 19:24
Sinsei, во-первых, нужно писать, КАК именно он не работает - какую ошибку пишет, или вообще не включается, ещё что-то.. Во-вторых, скрипт работает, только что поставил проверил. Возможно, у вас нет нужной библиотеки, они указаны в топовом сообщении темы. Подозреваю, что у вас нет LuaSec.. Хотя не исключаю, что вы сами что-то в скрипте напортачили.
Автор: Sinsei 6.6.2015, 17:51
Все решил проблему, теперь работает.
Автор: Андрей-rzn 7.6.2015, 21:57
Ну так поделись решением, у меня тоже не работает. Пишет * Не удалось обработать информацию о погоде. Возможно, было изменено оформление страницы.
Скорее всего майл изменил адрес или разметку страницы