2013-07-30 7 views
2

Приложение Lua делает запрос http: request, получает ответ в формате JSON, декодирует JSON для таблицы. ОК.Самый простой способ загрузить файл в Lua

Теперь я могу извлечь URL-адрес, который был внутри этого файла JSON.

Но как я могу сохранить URL-адрес изображения в файле Lua? Доступны ли библиотеки?

Edit:

Как взять файл JSON в Lua:

json_lib = require('json') 

local http = libs.net.http(); 

    local resp = http:request({ 
     method = "get", 
     url = "http://developer.echonest.com/api/v4/artist/images?api_key=MY_API_KEY_HERE&name=zedd&format=json&results=1&start=0&license=unknown", 
    }); 


    local json_full = resp.content;  

    local str_decoded = json_lib.decode(json_full) 

    function RecursiveSearch(aTable) 

     for key, value in pairs(aTable) do --unordered search 
      if(type(value) == "table") then 
       print(key,value) 
       RecursiveSearch(value) 
      else 
       --Do something with this. 
       print(key,value) 
      end 
     end 
    end 
    RecursiveSearch(str_decoded) 

Мой ответ JSON является:

{ 
        "response":{ 
         "status":{ 
         "version":"4.2", 
         "code":0, 
         "message":"Success" 
         }, 
         "start":0, 
         "total":20, 
         "images":[ 
         { 
          "url":"http://userserve-ak.last.fm/serve/_/67419844/ZEDD.png", 
          "license":{ 
           "type":"unknown", 
           "attribution":"n/a", 
           "url":"http://www.last.fm/music/ZEDD/+images" 
          } 
         } 
         ] 
        } 
       } 

Так что я хочу, чтобы сохранить на диске первый URL с картина художника.

+0

Вы говорите о сохранении самого изображения или только ссылки на него? – greatwolf

+0

Я хочу сохранить изображение. Текст URL-адреса, который я уже выполнил. Спасибо за интерес. – MatheusLPS

+0

Вы уже должны использовать библиотеку для извлечения json-документа, нет? Не просто ли это использовать для загрузки файла изображения? –

ответ

5

Добавить что-то вроде (непроверенные):

local imageresp = http:request({ 
    method = "get", 
    url = url_from_decoded_json, 
}); 

local imagefile = io.open("some_file", "w") 
imagefile:write(resp.content) 
imagefile:close() 

в конце сценария.

+0

Поблагодарите Etan Reisner за последний ответ. Извините за задержку моего возвращения. Проблема заключалась в том, что программа windows, которую я использовал, имела плохую обработку двоичных данных. Он сохранял только 1kb (поврежденный) файл изображения. Я сообщил об ошибке, и разработчики обновили бета-версию программы, и проблема была решена. Теперь я могу загрузить изображение с вашей идеей. bye – MatheusLPS

Смежные вопросы