myDC.ru

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

 

> Курсы Валют Цб, API2 | Скрипт-информатор. 18 валют на выбор.

Теги
Нет тегов для показа
Fodin
сообщение 6.8.2008, 3:34
Сообщение #21


Участник
**

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




Только что дописал. У меня вроде бы работает. Тестируйте.
Поскольку не нашел, когда обновляют курсы, пока обновляется по интервалу. Потом, наверное, как соберу статистику, допишу, чтобы исключались интервалы, когда обновления быть не может.
ЗЫ: Библиотек pxluasocket опять не прикладываю.
Обнаружил баг неприятный. Залил новую версию.
Прикрепленные файлы
Прикрепленный файл  Currency.lua ( 5.08 килобайт ) Кол-во скачиваний: 802
 


Спасибо сказали:
Go to the top of the page
+Quote Post
4 страниц V  < 1 2 3 4 >  
Начать новую тему
Ответов
comua
сообщение 21.3.2009, 6:34
Сообщение #22


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


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




Переделал парсинг строк спецом для курса валют НБУ. Для меня это все еще на грани фантастики и на уровен инстинкта. Запарился приводить отображение в порядок, удалил следующие строчки, так как выравнения текста на выходе у меня нет и я решил не резать названия валют. И всеравно их надо менять на аналоги

Код
fd=string.gsub(fd,"Соединенного королевства", "")
fd=string.gsub(fd,"%(специальные права заимствования%)", "")
fd=string.gsub(fd,"Жэньминьби", "")

В итоге выводит в окно чата что-то типа
Цитата
•••••••••••••• Курсы валют НБУ на 23.03.2009 ••••••••••••••

USD 100 доларів США = 770 грн. +0
EUR 100 ЄВРО = 1043.273 грн. +0
RUB 10 російських рублів = 2.3038 грн. +0

•••••••••••••• Курсы валют НБУ на 23.03.2009 ••••••••••••••
Вообщем главная задача выполнена, красоту уже сами наводите. Для добавления еще каких-то валют, смотрите список доступных "Цифровых кодов" здесь и добавляйте в строчке
Код
Currency={840, 978, 643}

Прикрепленные файлы
Прикрепленный файл  kurs.nbu.lua ( 4.71 килобайт ) Кол-во скачиваний: 41
 
Go to the top of the page
+Quote Post
Санёк
сообщение 21.3.2009, 21:04
Сообщение #23


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

Группа: Пользователи
Сообщений: 83
Регистрация: 14.3.2009
Из: Belarus', Minsk
Пользователь №: 2 593
Спасибо сказали: 0 раз




comua, супер.
Но вот кто бы для бел. валюты сделал ? unhappy.gif
Go to the top of the page
+Quote Post
comua
сообщение 22.3.2009, 0:48
Сообщение #24


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


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




Кто разбирается, подскажите пожалуйста один момент.

вот пирмер для курса рубля

есть строчка в полученом XML
Код
<ValCurs Date="21.03.2009" name="Foreign Currency Market">

за парсинг этой строчки отвечает этот код в скрипте
Код
_,_,Date.day,Date.month,Date.year=string.find(fd,"Date=\"(%d%d)%.(%d%d)%.(%d%d%d%d)")


теперь пытаюсь переделать для белорусов

строчка с датой в XML в таком вот виде
Код
<DailyExRates Date="3/23/2009">

изменяю часть кода вот так
Код
_,_,Date.month,Date.day,Date.year=string.find(fd,"Date=\"(%d%d)%/(%d%d)%/(%d%d%d%d)")

строка не парсится так как надо. Меняю на
Код
_,_,Date.month,Date.day,Date.year=string.find(fd,"Date=\"(%d)%/(%d%d)%/(%d%d%d%d)")

и все работает. Но это будет работать пока месяц не больше 9-ти. Как это обойти?
Go to the top of the page
+Quote Post
Setuper
сообщение 22.3.2009, 1:00
Сообщение #25


RusHub team lead
**************

Группа: Модераторы
Сообщений: 4 030
Регистрация: 20.6.2008
Из: г. Королёв (Моск. обл.)
Пользователь №: 46
Спасибо сказали: 1708 раз




символ / не нуждается в экранировании.

Код
Date.month,Date.day,Date.year=string.match(fd, "Date=\"(%d+)/(%d+)/(%d+)")
Go to the top of the page
+Quote Post
comua
сообщение 22.3.2009, 1:22
Сообщение #26


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


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




Я уже разобрался что ошибка была не в символе разделителе, но благодарю за пример, очень помог. В частности вот это "%d+". Теперь все, держите и для белоруского рубля информер.
Прикрепленные файлы
Прикрепленный файл  kurs.bel.lua ( 5.15 килобайт ) Кол-во скачиваний: 53
 
Go to the top of the page
+Quote Post
li4nost
сообщение 22.3.2009, 3:04
Сообщение #27


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

Группа: Пользователи
Сообщений: 137
Регистрация: 22.2.2009
Из: Минск, Беларусь
Пользователь №: 2 321
Спасибо сказали: 12 раз




ДА ТЫ ПРОСТО МЕГАЗВЕРЬ!
big_smile.gif
все отлично работает! (пока) big_smile.gif
спасибо огромное!!!
Go to the top of the page
+Quote Post
Санёк
сообщение 22.3.2009, 13:11
Сообщение #28


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

Группа: Пользователи
Сообщений: 83
Регистрация: 14.3.2009
Из: Belarus', Minsk
Пользователь №: 2 593
Спасибо сказали: 0 раз




Цитата(comua @ 22.3.2009, 0:22) *
Я уже разобрался что ошибка была не в символе разделителе, но благодарю за пример, очень помог. В частности вот это "%d+". Теперь все, держите и для белоруского рубля информер.

Спасибо!! Работает!
Вот только:


Прикрепленный файл  kurs.jpg ( 18.81 килобайт ) Кол-во скачиваний: 167


У меня как всегда куча вопросов и пожеланий по скрипту ))

Курс евро получается немного смещённым!
Как сделать что бы по комманде курсы отсылались ботом приватной мессагой?
Как убрать подменю "информатор" ? т.е. что бы сразу была менюшка "Курсы валют"
Как сделать что бы курс валют периодически отсылался в общий чат и был видим всем пользователям (вообщем наподобие скрипта погоды с rp5.ru)

заранее огромное спс. за помощь big_smile.gif
Go to the top of the page
+Quote Post
comua
сообщение 23.3.2009, 4:44
Сообщение #29


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


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




Выровнять никак не получится, все упирается в шрифт, он у кадого клиента может быть разным. Я вообще привел все к такому вот виду

Цитата
•••••••••••••• Курсы валют НБУ на 23.03.2009 ••••••••••••••

USD 100 доларів США = 770 грн. +0
EUR 100 ЄВРО = 1043.273 грн. +0
RUB 10 російських рублів = 2.3038 грн. +0

•••••••••••••• Курсы валют НБУ на 23.03.2009 ••••••••••••••

по привату. думаю, надо изменить строчки
Код
Core.SendToUser(user, "<"..sBotName.."> Данные устарели, запрашиваю сервер...")
Core.SendToUser(user, "<"..sBotName.."> \n"..sMsg)

на
Код
Core.SendPmToUser(user, "<"..sBotName..">", "Данные устарели, запрашиваю сервер...")
Core.SendPmToUser(user, "<"..sBotName..">", "\n"..sMsg)

по поводу менюхи, надо менять
Код
Core.SendToUser(user, "$UserCommand 1 3 "..sMainMenu.."Курсы валют ЦБ $<%[mynick]> !курс".."|")

на
Код
Core.SendToUser(user, "$UserCommand 1 3 Курсы валют ЦБ $<%[mynick]> !курс".."|")

и самое интересное - таймер. Возможно сработает (взял за основу другой скрипт)

после строчки
Код
Currency={840, 978, 392, ............

добавляем вот это
Код
timer = 60 -- в минутах
timeron = 1 -- включить - 1, выключить - 0


А после строк
Код
OpConnected = UserConnected
RegConnected = UserConnected

надо добавить
Код
function OnStartup()
    if (timeron = 1) then
        tmr = TmrMan.AddTimer (timer*60*1000)
    end
end

function OnTimer(tmr)
    local difftime = os.difftime(os.time(), iLastTime)
        if (difftime > iExpireTime) then
            table.insert(tReqUsers, user)
            Core.SendToAll("<"..sBotName.."> Данные устарели, запрашиваю сервер...")
            GetInfo()
            iLastTime = os.time()
        else
            Core.SendToAll("<"..sBotName.."> \n"..sMsg)
        end
end
Правильную работу не гарантирую, хотелось бы увидеть комментарии более продвинутых пользователей. Просто сам недавно начал разбираться в синтаксисе и принципах.

зы: на этом форуме есть возможность скрыть часть сообщения под спойлер, чтобы не загромождать?
Go to the top of the page
+Quote Post
Санёк
сообщение 24.3.2009, 17:52
Сообщение #30


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

Группа: Пользователи
Сообщений: 83
Регистрация: 14.3.2009
Из: Belarus', Minsk
Пользователь №: 2 593
Спасибо сказали: 0 раз





Менюшка действительно изменяется как я хотел, но в общий чат проходит лишь !курсбел и ничего не происходит
Go to the top of the page
+Quote Post
Wariner
сообщение 24.3.2009, 19:10
Сообщение #31


Самый главный активист :-D
***********

Группа: Модераторы
Сообщений: 2 790
Регистрация: 29.6.2008
Из: г. Тула
Пользователь №: 97
Спасибо сказали: 440 раз




ошибки смотри!!!
Go to the top of the page
+Quote Post
whuru
сообщение 11.4.2009, 22:19
Сообщение #32


Участник
**

Группа: Пользователи
Сообщений: 40
Регистрация: 22.3.2009
Пользователь №: 2 696
Спасибо сказали: 0 раз




Как реализовать связь птохи с интернетом через прокси, чтобы она знала?
Хаб в локальной сети. Сервер, на котором хаб имеет связь с интернетом через прокси.

Спасибо.
Go to the top of the page
+Quote Post
Wariner
сообщение 11.4.2009, 22:24
Сообщение #33


Самый главный активист :-D
***********

Группа: Модераторы
Сообщений: 2 790
Регистрация: 29.6.2008
Из: г. Тула
Пользователь №: 97
Спасибо сказали: 440 раз




через прокси работать не будет!
Go to the top of the page
+Quote Post
lezvik
сообщение 15.4.2009, 0:56
Сообщение #34


Начинающий
*

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




на первый апи не ожидаетса?
Go to the top of the page
+Quote Post
sergius
сообщение 24.1.2010, 13:30
Сообщение #35


Начинающий
*

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




[13:28] Синтаксис Currency.lua:96: attempt to index field '?' (a nil value)

после запуска не выводит, делаешь второй раз вывести выводит 2 раза лол
Go to the top of the page
+Quote Post
bonch
сообщение 13.3.2010, 13:40
Сообщение #36


Начинающий
*

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




Цитата(sergius @ 24.1.2010, 13:30) *
[13:28] Синтаксис Currency.lua:96: attempt to index field '?' (a nil value)

после запуска не выводит, делаешь второй раз вывести выводит 2 раза лол


Подтверждаю. PtokaX 0.4.1.2. Аналогичная ошибка вываливается и во второй и в третий-четвёртый раз...Рокировка скрипта вверх-вниз результата не даёт.
Go to the top of the page
+Quote Post
Nickolya
сообщение 14.3.2010, 17:13
Сообщение #37


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

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




Решение проблемы с ошибкой:
1. Заменить два раза
Код
while string.find(fd,"<Value>") do
на
Код
while string.find(fd,"<Valute ID=\".-\">") do

2. Заменить
Код
                    sMsg=sMsg..val[i].CharCode.."\t"..val[i].Nominal.." "..val[i].Name..string.rep("\t",math.floor((MaxLen-string.len(val[i].Name)-string.len(val[i].Nominal)+1)/8+1))..val[i].Value.."\t"..((val[i].Diff<0) and "" or "+")..val[i].Diff.."\n"
                    if sMidChar~="" and x<table.getn(Currency) then sMsg = sMsg..string.rep(sMidChar,iMidChar).."\n" end
на
Код
                    if val[i] then
                        sMsg=sMsg..val[i].CharCode.."\t"..val[i].Nominal.." "..val[i].Name..string.rep("\t",math.floor((MaxLen-string.len(val[i].Name)-string.len(val[i].Nominal)+1)/8+1))..val[i].Value.."\t"..((val[i].Diff<0) and "" or "+")..val[i].Diff.."\n"
                        if sMidChar~="" and x<table.getn(Currency) then sMsg = sMsg..string.rep(sMidChar,iMidChar).."\n" end
                    end


Спасибо сказали:
Go to the top of the page
+Quote Post
bonch
сообщение 14.3.2010, 20:28
Сообщение #38


Начинающий
*

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




Благодарствую. Работает. Осталось корректно увести "Данные устарели, запрашиваю сервер" и сам вывод информации в приват, ибо советы выше в других постах ни к чему, кроме ошибок, не приводят.
Причина редактирования: не надо цитировать предыдущий пост, особенно такой большой!
Go to the top of the page
+Quote Post
Nickolya
сообщение 14.3.2010, 20:50
Сообщение #39


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

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




Чтобы убрать сообщение "Данные устарели, запрашиваю сервер..." удали строку
Код
Core.SendToUser(user, "<"..sBotName.."> Данные устарели, запрашиваю сервер...")


А чтобы выводить данные в приват замени
Код
Core.SendToUser(user, "<"..sBotName.."> \n"..sMsg)
на
Код
Core.SendPmToUser(user, sBotName, "\n"..sMsg)


Спасибо сказали:
Go to the top of the page
+Quote Post
bonch
сообщение 14.3.2010, 21:15
Сообщение #40


Начинающий
*

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




Спасибо. Всё корректно.
Go to the top of the page
+Quote Post
Препод
сообщение 1.4.2010, 9:40
Сообщение #41


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


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




scripts\Currency.lua:102: 'end' expected (to close 'for' at line 95) near 'else' вот такая ошибка после замены
Go to the top of the page
+Quote Post

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

Collapse

> Похожие темы

  Тема Ответов Автор Просмотров Последнее сообщение
No New Posts Topic has attachmentsКурс валют/Exchange rate, более чем для 11ти стран.
0 ufo 4 217 23.7.2011, 21:48 Посл. сообщение: ufo
No New Posts От: Курсы Валют Цб
От темы с ID: 245
0 Ksan 3 897 22.11.2010, 20:04 Посл. сообщение: Ksan

 



RSS Сейчас: 28.3.2024, 17:08