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

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

MyDC.ru _ Сетевые скрипты [PtokaX] _ TopicTemp

Автор: alex82 26.7.2009, 15:14

TopicTemp

Версия: 1.02
Системные требования: PtokaX 0.4.x.x/0.5.x.x (Lua 5.1); LuaSocket; LuaSec
Автор: alex82

Описание:
Скрипт добавляет в топик хаба информацию о температуре воздуха в указанных городах (в качестве источника информации используется Погода@mail.ru). Также имеется возможность чередования информации о погоде с обычными топиками.

 TopicTemp_1.02.zip ( 1.27 килобайт ) : 48

Автор: Serhio 26.7.2009, 15:36

Спасибо. работает big_smile.gif

Автор: Артём 27.7.2009, 5:54

victory.gif Скрипт хороший,я его даже перевёл под старую птоку.

Автор: Cuba 27.7.2009, 9:20

Можно ли совместить данный прекрасный скрипт с этим??? Чтобы сообщение о погоде чередовалось с сообщениями из базы сменяемых топиков...

 Автотопик.lua ( 2.29 килобайт ) : 71
 

Автор: Артём 27.7.2009, 16:52

Cuba незнаю как у тебя,но у меня он и так чередуется с топиком написанным через менюшку админа
P.S. bad_smile.gif эм....уже не чередуется)))
Cuba кстати,если у тебя стоит скрипт АвтосменаТопика,то топик и так будет чередоватся,незачем два скрипта в один сливать.....пусть стоят оба.



P.S. cкрипт умер(( Ошибка при обновлении топика: invalid chunk size amazing.gif

Автор: Cuba 28.7.2009, 8:55

Цитата(Артём @ 27.7.2009, 17:52) *
Cuba незнаю как у тебя,но у меня он и так чередуется с топиком написанным через менюшку админа
P.S. bad_smile.gif эм....уже не чередуется)))
Cuba кстати,если у тебя стоит скрипт АвтосменаТопика,то топик и так будет чередоватся,незачем два скрипта в один сливать.....пусть стоят оба.



P.S. cкрипт умер(( Ошибка при обновлении топика: invalid chunk size amazing.gif

Эти два скрипта очень конфликтуют друг с другом, при срабатывании скрипта погоды, начинает кикать народ с хаба :(

Автор: Men 6.8.2009, 11:45

Помогите вылечить ошибку !
..............scripts\TopicTemp.lua:32: attempt to index local 'city' (a nil value)

Автор: Артём 6.8.2009, 12:02

greedy.gif у меня такаяже ошибка

Автор: Men 6.8.2009, 12:09

Цитата(Артём @ 6.8.2009, 18:02) *
greedy.gif у меня такаяже ошибка

он у тебя работал? ,у меня поработал часа 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) *
И если есть возможность, поправьте косяк с таймером, он не реагирует на изменения.

unhappy.gif согласен,топик меняется не так как указано время (стоит у меня 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<<=))>>

Автор: Артём 25.10.2009, 13:31

Steep
Держи! big_smile.gif
 API1.rar ( 5.79 килобайт ) : 22

Автор: Steep 25.10.2009, 14:28

Цитата(Артём @ 25.10.2009, 14:31) *
Steep
Держи! big_smile.gif
 API1.rar ( 5.79 килобайт ) : 22

Спасибо тебе))

Автор: Trans 26.10.2009, 2:50

Цитата
Синтаксис 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 сделаете , буду очень благодарен , и думаю не только я big_smile.gif

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

Автор: girs 15.1.2010, 11:55

А лучше версию с rp5.ru По моему там ещё точнее температуру воздуха за бортом показывает...

Автор: Dr_Pilulkin™ 16.1.2010, 23:25

Доброго всем! Первые минут 10 работал нормально, потом такое началось, что пришлось снести. Клиент очень сильно "погнал" tire.gif

Автор: Unterlink(X-Sky) 16.1.2010, 23:27

А конкретнее?

Автор: Dr_Pilulkin™ 24.1.2010, 22:17

Закладки хабов сильно мерцали, пришлось увеличить время обновления. Теперь спасибо, всё работает стабильно. extreme_sexy_girl.gif , но единственное .... городов мало electric_shock.gif

Автор: 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)

Что с этим делать ? nothing_to_say.gif

Автор: Dr_Pilulkin™ 28.1.2010, 11:41

Цитата(sergius @ 25.1.2010, 3:06) *
сделай мультидвижок что бы отсюда брать, тут в реальном времени погода и ветер http://mydc.ru/r/?http://www.realmeteo.ru/

моего города там нет... extreme_sexy_girl.gif

Автор: Dr_Pilulkin™ 17.2.2010, 14:48

Помогите пожалуйста! Скрипт замечательный.Занёс штук 20 городов, но вот теперь проблемка - PtoX начала сбрасывать его (отключать) . Уже скачал и установил Configuration Saver- не помогает.Помогите пожалуйста побороть этот глюк electric_shock.gif

Автор: 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

Спасибо, сейчас проверим на практике big_smile.gif extreme_sexy_girl.gif
Всё, тест прошёл на ура! Большое вам человеческое secret_smile.gif
Доброго уважаемые! Помогите пожалуйста побороть вот такую " шляпу " - " Произошла ошибка при обновлении информации о погоде: 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 beat_brick.gif

Автор: Сем90 22.10.2010, 14:17

Пытался переделать этот скрипт чтобы грузил погоду с gismeteo но он так и не заработал.


Код
--[[##################################################################################

    TopicTemp 1.01a by alex82
    API2 (Lua 5.1; PtokaX 0.4.x.x)
    http://mydc.ru/topic2232.html
    
###################################################################################]]
-- Настройки

tCfg = {
    Update = 5,    -- Время обновления информации о погоде (в минутах)
    Change = 3,    -- Время переключения топиков (в минутах)
    TextTopic = true,    -- Чередовать информацию о погоде с текстовыми топиками
}

tCity = {    -- Коды городов (http://www.gismeteo.ru/catalog/russia)
    4862,    -- Хабаровск
    
}

tTopic = {    -- Топики
    "Размести свою рекламу в Топике Хаба",
    
}

--###################################################################################

tData = {City = 0,Text = false,CurText = 0}
tTemp = {}

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 короче непомню! Я его даже не просил!
ВЕРНИ ОБРАТНО СКРИПТ! Я НЕ ВИНОВАТ ЧТО ИДИОТЫ НА СВЕТЕ СУЩЕСТВУЮТ! beat_plaster.gif

Автор: 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 скрипты для хабов хранить на ваших гит-хабах?
есть админы которые с форума скачать их не могут и запустить на своём хабе, а ты о каких-то гит-хабах ещё настаиваешь. bad_smile.gif

Автор: 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

Ну так поделись решением, у меня тоже не работает. Пишет
* Не удалось обработать информацию о погоде. Возможно, было изменено оформление страницы.

Скорее всего майл изменил адрес или разметку страницы