Как все таки сделать http запрос из Lua?

Страницы: 1
RSS
Как все таки сделать http запрос из Lua?
 
Привет всем!
Как все таки отправить HTTP запрос из Lua(Quik)?
Я пытаюсь использовать LuaSocket ,но Quik в упор не видит эту библиотеку куда бы я ему ее не положил.
Какие шаманские обряды нужно провести,чтобы сие чудо заработало.https://github.com/diegonehab/luasocket
 
Когда-то скачал робота, который заходит на сайт Смарт Лаб и считывает с него календарь дивидендов, сигналит в КВИК если завтра ожидается дивидендный гэп. Сейчас скрипт не работает, потому что смарт лаб поменял вёрстку дивидендной страницы, но раньше я этот скрипт запускал и всё работало.
Код
if string.find(package.path,'C:\\Program Files (x86)\\Lua\\5.1\\lua\\?.lua')==nil then
   package.path=package.path..';C:\\Program Files (x86)\\Lua\\5.1\\lua\\?.lua;'
end
if string.find(package.path,'C:\\Program Files\\Lua\\5.1\\lua\\?.lua')==nil then
   package.path=package.path..';C:\\Program Files\\Lua\\5.1\\lua\\?.lua;'
end

require "socket"
is_run=true
http = require 'socket.http'
local address = 'http://smart-lab.ru/dividends/index/order_by_t2_date/desc/'
local ts={"tr","strong","span"}
local lMax=91 --число строк в таблице


function do_smart ()
   local body = http.request(address)
   ----------------------
   for i=1,#ts do
      body = string.gsub (body,"(<%s*"..ts[i].."[^>]*>)","")
      body = string.gsub (body,"(<%s*/"..ts[i].."[^>]*>)","")
   end
   body = string.gsub (body," "," ")
   local t={}  -- результат
   local j=0; local k=0; local text=0;
   local m=1; 
   local n=string.find(body,"td>",m,#body,true);
   local x=string.byte(body,n-1); 
   m=m+3;
   -----------------
    while #body>m do
      n=string.find(body, "td>",m,#body,true);
      if n then  local n1=n;
        if x~=47 then
          x=string.byte(body,n-1); if x==47 then n=n-1; end
          text = string.sub(body, m,n-2); text = nkdelspace(text);
          local len=string.len(text);
          if len<20 then
            j=j+1; if j==1 then k=k+1; t[k]={} end
            local tt=t[k]; tt[#tt+1]=text;
            if j==8 then     if k==lMax then break end
            j=0 end
          end
        else
          x=string.byte(body,n-1);
        end
      m=n1+3;
      else break;
      end
   end

   trade_date=getParamEx("TQBR","GAZP","TRADE_DATE_CODE").param_image
   prev_date=getParamEx("TQBR","GAZP","PREVDATE").param_image
   for k,v in ipairs (t) do
      local td=trade_date.." "
      local pd=prev_date.." "
      if td==t[k][2] then
         message ("Zavtra GAP "..t[k][1].." div="..t[k][6].." | "..t[k][8],1)
      end
      
      if pd==t[k][2] then
         message ("Segodnya GAP "..t[k][1].." div="..t[k][6].." | "..t[k][8],1)
      end
      
   end

end
function OnCleanUp ()
sleep (700000)
do_smart ()
end

function OnConnected ()
do_smart ()
end

function OnStop ()
   return 100
end

--------------------
function nkdelspace(s)
   local len=string.len(s); local z=""; local x1=32;
   for i=1,len do local x=string.byte(s,i); if x<32 then x=32 end
      if (x~=32 or x1~=32) then
         if z=="" then z=string.char(x) else z=z..string.char(x) end
         x1=x; end
   end    --убираем проблелы
return z;
end

do_smart ()

function main ()
   while is_run do
      sleep (1000)
   end
end
в комплекте скрипта в архиве были библиотеки Socket и mime

Вот пост где автор опубликовал этого робота с описанием что он делает
https://smart-lab.ru/blog/401675.php
Страницы: 1
Читают тему (гостей: 1)
Наверх