Alexyz21

Silver Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору [РЕШЕНО] Подскажите, пожалуйста, возможно ли скачать файл с ЯДиска по короткой публичной ссылке с помощью curl или lua-скрипт + curl? Как получить прямую ссылку на файл, если короткая указывает на папку, в которой лежит нужный файл? Посмотрел содержимое ответа, возвращаемого curl -k "https://yadisk.sk/public_short_link" - что-то можно из него использовать и как? Ответ. Сделал так (lua-script): Код: function fread(f) local h,x = io.open(f,"rb"),nil if h then x=h:read("*all"); io.close(h) end return x end function fwrite(s,f) s = s or "" local h,x = io.open(temp..f:gsub(fnflt,"_"),"wb"),nil if h then x=h:write(s); io.close(h) end return x end function GetPage(x) local i,s0 = 0,"" if x then s0 = io.popen("curl.exe"..opt..x,"rb"):read("*all") end return s0 end fnflt = '[%?%*"<>|:/\]' temp='C:\\Temp\\' mark='marker' patt='"mediatype":"document","size":(%d-)},"mtime":(%d-),"path":".-","utime":%d-,"type":"file","id":".-","name":"(.-)",.-,"idEncoded":"/public/(.-)%%3A/(filename)"' link='"https://yadi.sk/public_short_link"' opt=' -k ' fsize,ftime,fname,key,fpath=GetPage(link):match(patt) link='"https://cloud-api.yandex.net/v1/disk/public/resources/download?public_key='..key..'&path=/'..fpath..'"' patt='"href":"(.-)"' link='"'..GetPage(link):match(patt)..'"' line1='fname: '..fname..'\nfsize: '..fsize..'\nftime: '..os.date("%d.%m.%y %H:%M:%S",ftime)..'\nfpath: '..fpath..'\nkey: '..key line0=fread(temp..mark) if not line0 then line0="" end if line1~=line0 then fwrite(line1,mark) line1=GetPage(link) if #line1>1024 then fwrite(line1,fname) end end | | Всего записей: 3762 | Зарегистр. 16-06-2007 | Отправлено: 11:17 06-05-2015 | Исправлено: Alexyz21, 12:25 09-05-2015 |
|