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

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

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)