myDC.ru

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

 

> TopicTemp, API2 | Температура воздуха в топике хаба

alex82
сообщение 26.7.2009, 15:14
Сообщение #41


Местный
*******

Группа: Неактивированные
Сообщений: 908
Регистрация: 26.12.2008
Пользователь №: 1 574
Спасибо сказали: 1389 раз




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 килобайт ) Кол-во скачиваний: 44
Go to the top of the page
+Quote Post
4 страниц V  < 1 2 3 4 >  
Начать новую тему
Ответов
X-Sky
сообщение 19.2.2010, 1:02
Сообщение #42


Освоившийся участник
*****

Группа: Модераторы
Сообщений: 352
Регистрация: 25.7.2009
Пользователь №: 3 960
Спасибо сказали: 73 раза




Отключает как?
Во время работы хаба или что?
Если да - кидай ошибку скрипта, просто так он не может отключиться


Спасибо сказали:
Go to the top of the page
+Quote Post
Nickolya
сообщение 21.2.2010, 21:08
Сообщение #43


Главный ра******й тут...
*********

Группа: Главные администраторы
Сообщений: 1 724
Регистрация: 18.5.2008
Из: RF, 2la
Пользователь №: 1
Спасибо сказали: 772 раза




Бывает скрипт отключается после ошибки в этой строке:
Код
    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 секунд.


Спасибо сказали:
Go to the top of the page
+Quote Post
Dr_Pilulkin™
сообщение 21.2.2010, 21:37
Сообщение #44


Начинающий
*

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




Спасибо, сейчас проверим на практике big_smile.gif extreme_sexy_girl.gif
Всё, тест прошёл на ура! Большое вам человеческое secret_smile.gif
Доброго уважаемые! Помогите пожалуйста побороть вот такую " шляпу " - " Произошла ошибка при обновлении информации о погоде: timeout "( выпадает исключительно у пользователей с "ключами" )
Go to the top of the page
+Quote Post
TommyKaira
сообщение 1.3.2010, 17:20
Сообщение #45


Участник
**

Группа: Пользователи
Сообщений: 38
Регистрация: 8.2.2010
Из: Москва
Пользователь №: 5 994
Спасибо сказали: 0 раз




Работал несколько дней отлично....теперь

[17:16:48] *** Не удалось обработать информацию о погоде. Возможно, было изменено оформление страницы.
Go to the top of the page
+Quote Post
avarking
сообщение 2.3.2010, 18:43
Сообщение #46


Начинающий
*

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




хочу переделать источник температуры под яндекс.погода (с него быстрее загружается да и точнее как-то)
причем конкретно под один город.

страница с которой нужно парсить температуру:
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


пожалуйста, подскажите что нужно изменить в скрипте чтобы температура отображалась с яндекса?
Go to the top of the page
+Quote Post
Nickolya
сообщение 2.3.2010, 22:43
Сообщение #47


Главный ра******й тут...
*********

Группа: Главные администраторы
Сообщений: 1 724
Регистрация: 18.5.2008
Из: RF, 2la
Пользователь №: 1
Спасибо сказали: 772 раза




Рассказываю: идешь по своей ссылке на Яндекс, смотришь исходный код страницы, находишь там то число что сейчас отображается в браузере среди html тегов и записываешь в строках
Код
        local city = msg:match("<h2>.-target=\"_blank\">(.-)<")
        local temp = msg:match("<div class=\"gradus\">.-([%+%-]%d+)")
правильное регулярное выражение с учетом того что это опять же регулярное выражение. Надеюсь изложил понятно и ты прекрасно справишься с тем что хочешь сделать.
Go to the top of the page
+Quote Post
TommyKaira
сообщение 3.3.2010, 1:38
Сообщение #48


Участник
**

Группа: Пользователи
Сообщений: 38
Регистрация: 8.2.2010
Из: Москва
Пользователь №: 5 994
Спасибо сказали: 0 раз




Цитата
хочу переделать источник температуры под яндекс.погода (с него быстрее загружается да и точнее как-то)

Точней? судя по градуснику у меня сейчас за окном +2, маил ру показывает что у меня -2, яндекс говорит что у меня минус 6 + валит снег
Go to the top of the page
+Quote Post
avarking
сообщение 3.3.2010, 22:03
Сообщение #49


Начинающий
*

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




Цитата(TommyKaira @ 3.3.2010, 2:38) *
Точней? судя по градуснику у меня сейчас за окном +2, маил ру показывает что у меня -2, яндекс говорит что у меня минус 6 + валит снег

в разных районах города температура может различаться на пару градусов, это вполне нормальное явление) по крайней мере меня яндекс вполне устраивает + у провайдера пиринг с яндексом


Nickolya спасибо)
сейчас попытаюсь придумать нужную формулу regex beat_brick.gif
Go to the top of the page
+Quote Post
Sinsei
сообщение 22.10.2010, 14:17
Сообщение #50


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

Группа: Пользователи
Сообщений: 65
Регистрация: 29.5.2010
Пользователь №: 6 945
Спасибо сказали: 2 раза




Пытался переделать этот скрипт чтобы грузил погоду с 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
Go to the top of the page
+Quote Post
STIVAN
сообщение 21.12.2010, 16:54
Сообщение #51


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

Группа: Пользователи
Сообщений: 52
Регистрация: 30.6.2010
Из: Волгоград
Пользователь №: 7 181
Спасибо сказали: 1 раз




Здравствуйте все!
Вы не знаете можно ли так сделать?
Например город Москва.
Что бы через топик показывалось скоко градусов и !+! писало например "В Москве Перем.Оболчность,или Идут дожди,или солнечно" (Автомотически менялось)
Возможно ли так зделать?
Я плохо разбираюсь в скриптах,есле кто сможет зделать выложите скрипт.
Спасибо.
Go to the top of the page
+Quote Post
STIVAN
сообщение 22.12.2010, 17:42
Сообщение #52


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

Группа: Пользователи
Сообщений: 52
Регистрация: 30.6.2010
Из: Волгоград
Пользователь №: 7 181
Спасибо сказали: 1 раз




ну что :? :(
Go to the top of the page
+Quote Post
Andry123456
сообщение 26.12.2010, 21:31
Сообщение #53


Начинающий
*

Группа: Пользователи
Сообщений: 16
Регистрация: 24.12.2010
Пользователь №: 8 371
Спасибо сказали: 0 раз




не работает!
у меня он называется -=Kharkov hub=-
Врубаю скрипт и нефига только название хаба стало -=Kharkov - hub=-
Что делать?
Go to the top of the page
+Quote Post
Ksan
сообщение 26.12.2010, 21:39
Сообщение #54


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

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




Andry123456, а, так это ты приходил ко мне сегодня с рекламой своего хаба!
Это я испортил тебе скрипт за это.
Go to the top of the page
+Quote Post
Andry123456
сообщение 26.12.2010, 21:59
Сообщение #55


Начинающий
*

Группа: Пользователи
Сообщений: 16
Регистрация: 24.12.2010
Пользователь №: 8 371
Спасибо сказали: 0 раз




Это не я! я узнал об етом когда комне пришли люди и начали! Пи*деть!
то спамил Swe короче непомню! Я его даже не просил!
ВЕРНИ ОБРАТНО СКРИПТ! Я НЕ ВИНОВАТ ЧТО ИДИОТЫ НА СВЕТЕ СУЩЕСТВУЮТ! beat_plaster.gif
Go to the top of the page
+Quote Post
Just
сообщение 8.3.2011, 13:18
Сообщение #56


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


Группа: Пользователи
Сообщений: 1
Регистрация: 3.8.2009
Пользователь №: 4 050
Спасибо сказали: 0 раз




а можно сделать чтобы скрипт оставлял старый топик но дописывал к нему температуру после) например: hubtopic - температура ?
Go to the top of the page
+Quote Post
fabelum
сообщение 20.12.2014, 18:09
Сообщение #57


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


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




Здравствуйте.
Несколько лет подряд скрипт работал без нареканий, как часы. Но вот поменялась страничка на mail.ru, и всё(((
Кто-нибудь, пожалуйста, исправьте!)
Go to the top of the page
+Quote Post
Marc
сообщение 21.12.2014, 1:27
Сообщение #58


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

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




fabelum!
Исправления есть для бота с температурой в списке пользователей тут: http://mydc.ru/topic5390.html
Если хотите добавить этот скрипт себе, то рекомендую его вам!
Go to the top of the page
+Quote Post
fabelum
сообщение 21.12.2014, 13:18
Сообщение #59


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


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




Благодарю за наводку.
Скрипт заработал после замены
http = require("socket.http")
на
http = require("ssl.https")
Go to the top of the page
+Quote Post
alex82
сообщение 21.12.2014, 18:00
Сообщение #60


Местный
*******

Группа: Неактивированные
Сообщений: 908
Регистрация: 26.12.2008
Пользователь №: 1 574
Спасибо сказали: 1389 раз




Обновил скрипт в первом посте: исправил адрес погодногого информера, исправил ошибку, возникающую после неудачного обновления температуры.
Go to the top of the page
+Quote Post
PPA
сообщение 22.12.2014, 9:39
Сообщение #61


Участник
**

Группа: Пользователи
Сообщений: 36
Регистрация: 6.2.2009
Из: Липецк
Пользователь №: 2 131
Спасибо сказали: 8 раз




Цитата(alex82 @ 21.12.2014, 18:00) *
Обновил скрипт в первом посте: исправил адрес погодногого информера, исправил ошибку, возникающую после неудачного обновления температуры.


Попробую третий раз задать вопрос - почему ты свой код не хранишь на гит-хабе?
там ведь по дифу будет видно что исправляется + возможно будут слать PR
ты не умеешь git или это что-то религиозное?


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

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

 



RSS Сейчас: 17.8.2018, 8:23