Тема: AHK: Надёжное скачивание изображения
Есть задача надёжно качать картинку — задействовать условие, чтобы скачивание происходило только когда изображение действительно доступно. В реальном примере ссылка на изображение бывает активна только по определенным условиям (логин, включение доступа и тп), хотя наверно это относится и к любым изображениям. То есть, как скачивать с учётом разрывов соединений, сбросов логина — только когда известно, что это картинка?
HTTP := ComObjCreate("WinHTTP.WinHTTPRequest.5.1")
User_Agent := "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.79 Safari/537.36"
loop ;CONNECT_LOOP
{ ;CONNECT_LOOP
HTTP.Open("GET", URL, true)
HTTP.SetRequestHeader("Referer", URL)
;HTTP.SetRequestHeader("Cookie", cookies)
;HTTP.SetRequestHeader("Cookie2", "$Version=1")
HTTP.SetRequestHeader("Accept-Language", "ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7")
HTTP.SetRequestHeader("User-Agent", User_Agent)
HTTP.SetRequestHeader("Pragma", "no-cache")
HTTP.SetRequestHeader("If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT")
try {
HTTP.Send()
HTTP.WaitForResponse()
;!!MsgBox, % HTTP.StatusText
ResponseHeaders := HTTP.getAllResponseHeaders()
Body := HTTP.ResponseBody
/*
status := HTTP.status
if status in 404
break
*/
If InStr(ResponseHeaders, "Content-Type:") and not InStr(ResponseHeaders, "image/jpeg")
break
pData := NumGet(ComObjValue(Body), A_PtrSize = 8? 16:12, "ptr")
File := FileOpen(A_ScriptDir "\" page_code "\" ren, "w")
File.RawWrite(pData + 0, Body.MaxIndex() + 1)
break
}
catch {
Sleep, 5000
}
} ;CONNECT_LOOP

