rendered paste bodydialog dler {
title "Downloader"
size -1 -1 429 126
option pixels
edit "Url example: www.google.com", 1, 31 15 97 21, autohs
edit "File name example: file.zip", 2, 162 15 139 21, autohs
button "Download", 3, 110 49 75 25
edit "Messages", 4, 44 91 340 21, read
}
alias dler dialog -md dler dler
on *:dialog:dler:sclick:3: {
if ($regex($did(1),/(?:http:\/\/)?(?:www\.)?(\w+)\.(\w+)(\/.*)?/i)) {
if (!$regml(4)) { set %end $chr(47) }
else { set %end $regml(4) }
set %host www. $+ $regml(1) $+ . $+ $regml(2)
sockopen dl %host 80
did -ra $dname 4 Initializing download...
}
else { did -ra $dname 4 Invalid URL }
}
on *:sockopen:dl: {
did -ra dler 4 Opening connection
sockwrite -nt $sockname GET %end HTTP/1.1
sockwrite -nt $sockname Host: %host
sockwrite -nt $sockname $crlf
}
on *:sockread:dl: {
if ($sockerr) { did -ra dler 4 Error, closing connection }
else {
var %a = 1,%x = $numtok($sock($sockname).mark,32)
while %a && %x = 0 {
sockread %a
if ($regex(%a,/Content\-Length: (\d+)/i)) { set %size $regml(1) }
}
sockmark $sockname Done it!
while $sock($sockname).rq {
sockread &b
bwrite $did(dler,2) -1 -1 &b
did -ra dler 4 $calc(($lof($did(dler,2))) / %size * 100) percent complete
inc %l
}
if ($file($did(dler,2)).size >= %size) { did -ra dler 4 Download Complete! | sockclose $sockname }
}
}