Версия для печати темы
UoKit.com Форумы _ UO Pilot _ lua (html)
Автор: yodich 6.4.2021, 13:45
Всем по привету!)
столкнулся с такой задачей: например, есть курс рубля и курс доллара и как известно он постоянно скачет, то дороже, то дешевле.
задача заключилась в том, чтобы получить данные с веб-страницы, а именно число (цену) доллара/рубля. но столкнулся с такой проблемой: я понятия не имею как с помощью lua, а тем более через uopilot получить это значение т.к. практики подобной не было...
p.s. получать можно не только данное значение... например какой-нибудь тот же текст.
есть знатоки или кто сталкивался с подобной задачей именно на lua?
Автор: Madeus 6.4.2021, 13:52
Понадобится Lua socket
Код
--lua
local ltn12 = require('ltn12')
local https = require('ssl.https') -- для HTTPS
--local http = require('socket.http') -- для HTTP
local t = {}
local h, err = https.request{
url = 'https://example.com',
sink = ltn12.sink.table(t)
}
log(table.concat(t))
Распаковаться рядом с exe пилота
Прикрепленные файлы
lua_socket.zip ( 2,73 мегабайт )
Кол-во скачиваний: 229
Автор: yodich 6.4.2021, 13:53
Цитата(Madeus @ 6.4.2021, 15:52)
Понадобится Lua socket
Код
--lua
local ltn12 = require('ltn12')
local https = require('ssl.https') -- для HTTPS
--local http = require('socket.http') -- для HTTP
local t = {}
local h, err = https.request{
url = 'https://example.com',
sink = ltn12.sink.table(t)
}
log(table.concet(t))
я так понимаю это вытасуивать и сохранять текст и уже в сохраненном тексте искать нужное значение/текст?
Автор: Madeus 6.4.2021, 13:57
Цитата(yodich @ 6.4.2021, 13:53)
я так понимаю это вытасуивать и сохранять текст и уже в сохраненном тексте искать нужное значение/текст?
Можно сохранять, можно сразу дернуть нужную инфу. Если у сайта с курсом есть api проще запросить через api.
Автор: yodich 6.4.2021, 13:59
Цитата(Madeus @ 6.4.2021, 15:57)
Можно сохранять, можно сразу дернуть нужную инфу. Если у сайта с курсом есть api проще запросить через api.
вот как раз сразу дернуть самое то... есть более подробная информация об этом что-бы почитать?
Автор: Madeus 6.4.2021, 14:02
У сайта/сервиса должен быть свой api, формируешь конкретный запрос - получаешь конкретный ответ, но это есть далеко не везде, и читать тебе надо там от куда хочешь брать инфу.
В примере выше опечатка была, исправил.
Луа сокет в прикрепленном файле под пирмером
Автор: yodich 6.4.2021, 14:12
Цитата(Madeus @ 6.4.2021, 16:02)
У сайта/сервиса должен быть свой api, формируешь конкретный запрос - получаешь конкретный ответ, но это есть далеко не везде, и читать тебе надо там от куда хочешь брать инфу.
ага, понял, спасибо за помощь =)
Цитата(Madeus @ 6.4.2021, 16:02)
У сайта/сервиса должен быть свой api, формируешь конкретный запрос - получаешь конкретный ответ, но это есть далеко не везде, и читать тебе надо там от куда хочешь брать инфу.
В примере выше опечатка была, исправил.
Луа сокет в прикрепленном файле под пирмером
ошибку выдает при подключении:
a runtime error.
error loading module 'socket.core' from file '.\socket\core.dll':
%1 не является приложением Win32.
мы это уже решали и я помню, что все работало, но я Ваш файл залил и опять 25 началось
Автор: Madeus 6.4.2021, 14:21
Цитата(yodich @ 6.4.2021, 14:12)
ага, понял, спасибо за помощь =)
ошибку выдает при подключении:
a runtime error.
error loading module 'socket.core' from file '.\socket\core.dll':
%1 не является приложением Win32.
мы это уже решали и я помню, что все работало, но я Ваш файл залил и опять 25 началось
У меня работает, раз уже решали, попробуй использовать тот который работал, если сокет уже был, можно не распаковывать мой.
Автор: yodich 6.4.2021, 14:24
Цитата(Madeus @ 6.4.2021, 16:21)
У меня работает, раз уже решали, попробуй использовать тот который работал, если сокет уже был, можно не распаковывать мой.
хеее, осталось только найти где я его в прошлый раз откопал)))
довольно странно почему у меня он начал показывать свои характер и меня аж бомбануло)
Автор: cirus 6.4.2021, 14:25
http.zip ( 1,07 килобайт )
Кол-во скачиваний: 204
Архив распаковать в папку с пилотом.
Код
--lua
local h = require('http')
log 'clear' log 'mode compact'
local s = h.http('GET', 'cbr.ru', '') -- получить содержимое страницы
local uds = s:match('USD.-(%d+,%d+)') -- найти курс доллара
log('Курс доллара: ' .. tostring(uds))
local eur = s:match('EUR.-(%d+,%d+)')
log('Курс евро: ' .. tostring(eur))
Автор: Madeus 6.4.2021, 14:27
Цитата(cirus @ 6.4.2021, 14:25)
http.zip ( 1,07 килобайт )
Кол-во скачиваний: 204 Архив распаковать в папку с пилотом.
С https работает?
Автор: yodich 6.4.2021, 14:30
Цитата(cirus @ 6.4.2021, 16:25)
http.zip ( 1,07 килобайт )
Кол-во скачиваний: 204 Архив распаковать в папку с пилотом.
Код
--lua
local h = require('http')
log 'clear' log 'mode compact'
local s = h.http('GET', 'cbr.ru', '') -- получить содержимое страницы
local uds = s:match('USD.-(%d+,%d+)') -- найти курс доллара
log('Курс доллара: ' .. tostring(uds))
local eur = s:match('EUR.-(%d+,%d+)')
log('Курс евро: ' .. tostring(eur))
спасибо) https бы мне еще
Автор: Madeus 6.4.2021, 14:31
Цитата(yodich @ 6.4.2021, 14:24)
хеее, осталось только найти где я его в прошлый раз откопал)))
довольно странно почему у меня он начал показывать свои характер и меня аж бомбануло)
Перенес на ноут, все работает
Видимо это https://forum.uokit.com/index.php?act=Attach&type=post&id=3343
Автор: yodich 6.4.2021, 14:40
Цитата(Madeus @ 6.4.2021, 15:52)
Понадобится Lua socket
Код
--lua
local ltn12 = require('ltn12')
local https = require('ssl.https') -- для HTTPS
--local http = require('socket.http') -- для HTTP
local t = {}
local h, err = https.request{
url = 'https://example.com',
sink = ltn12.sink.table(t)
}
log(table.concat(t))
Распаковаться рядом с exe пилота
Довольно странно: я удалил lua файл и вставил старый и все заработало (ошибка пропала)
С твоим файлом lua выдает такую ошибку:
a runtime error.
C:***\socket.lua:42: attempt to call global 'newtry' (a nil value)
Автор: Madeus 6.4.2021, 14:48
Цитата(yodich @ 6.4.2021, 14:40)
Довольно странно: я удалил lua файл и вставил старый и все заработало (ошибка пропала)
С твоим файлом lua выдает такую ошибку:
a runtime error.
C:***\socket.lua:42: attempt to call global 'newtry' (a nil value)
Какой lua файл ты удалил?
Автор: yodich 6.4.2021, 14:56
Цитата(Madeus @ 6.4.2021, 16:48)
Какой lua файл ты удалил?
а вот теперь не замарачивайся.
я щас ради прикола брал папку lua у тебя и старую со старым socket (когда обнаружили, что lua51 переименовать надо) и просто по 1 файлу кидал и смотрел подключение socket (local s = require ('socket')) и вуаля, волшнбным образом все заработало. НО если я беру всю папку lua и кидаю ее как обычно рядом с пилотом, то выдает ошибку (писал о ней выше). причина, если честно мне не понятна, но у меня проблема в итоге решена и твои файлы все рабочие 👍
не знаю, может у меня что-то не так...
просто пусть будет на заметку, может кому-то данный способ поможет.
Автор: Madeus 6.4.2021, 15:04
Там должны быть два файла lua51 и lua5.1 первый чтобы ssl работал
Автор: yodich 6.4.2021, 15:14
Цитата(Madeus @ 6.4.2021, 17:04)
Там должны быть два файла lua51 и lua5.1 первый чтобы ssl работал
Дак в том то и дело, что все было как надо... не знаю в чем была проблема если честно, но щас все заработало. Спасибо за помощь!)
задачу уже решил и все работает как часики
даже благодаря этому в голову закралась одга идея которую попробую воплотить)
Автор: yodich 6.4.2021, 18:59
Это опять я. теперь столкнулся с такой проблемой: html страница отображается в ненужной кодировки. т.е. сохраняются русские символы в абракадабру. шурстил как в lua преобразовать нужную кодировку но что-то ничего путного не нашел.
кто с этим может помочь?
Автор: Madeus 6.4.2021, 21:20
Цитата(yodich @ 6.4.2021, 18:59)
Это опять я. теперь столкнулся с такой проблемой: html страница отображается в ненужной кодировки. т.е. сохраняются русские символы в абракадабру. шурстил как в lua преобразовать нужную кодировку но что-то ничего путного не нашел.
кто с этим может помочь?
Ты страницу сохранаешь куда-то?
А можно пример? Проверю кое что мб и помогу
Автор: yodich 7.4.2021, 7:26
Цитата(Madeus @ 6.4.2021, 23:20)
Ты страницу сохранаешь куда-то?
А можно пример? Проверю кое что мб и помогу
с работы приеду, покажу
Русская версия Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)