You can download all pictures of a site, or just supply links, you can supply multiply links too.
dialog Download {
title "Download pictures"
size -1 -1 221 149
option dbu
text "", 2, 49 15 0 8
tab "Single/Multiple pictures", 1, 0 -2 222 151
edit "", 4, 6 16 180 10, tab 1 return autohs
list 5, 6 26 133 103, tab 1 sort size hsbar vsbar
button "Add", 6, 187 16 28 10, tab 1
text "", 7, 141 27 74 102, tab 1
button "Download all", 8, 7 130 37 10, tab 1
button "Download selected", 9, 46 130 52 10, tab 1
button "Clear list", 10, 100 130 37 10, tab 1
tab "All pictures of a site", 3
text "", 11, 141 27 74 102, tab 3
edit "", 12, 6 16 180 10, tab 3 return autohs
button "Find", 13, 187 16 28 10, tab 3
list 14, 6 26 133 103, tab 3 sort size hsbar vsbar
button "Download all", 15, 7 130 37 10, tab 3
button "Download selected", 16, 46 130 52 10, tab 3
button "Clear list", 17, 100 130 37 10, tab 3
}
menu * {
Download:Download
}
alias Download dialog -md Download Download
on *:Dialog:Download:*:*:{
if ($devent == sclick) {
if ($did == 6) {
did -r $dname 7
var %r $remove($did(4),http://),%y $ticks,%1 $gettok(%r,1,47),%o $pos(%r,/),%2 $mid(%r,%o,$calc(1+$pos(%r,/,$count(%r,/))-%o)),%u $remove(%r,%1,%2),%4 $iif($count(%u,.),$gettok(%u,$calc(1+$v1),46)),%3 $remove(%u,%4),%i %3 $+ %4
if (!%i) {
did -ra $dname 7 Invalid link.
}
if ($exists($mircdirDownload $+ \ $+ %i)) || ($exists($mircdirDownload $+ \ $+ $replace(%i,jpg,jpeg,jpeg,jpg))) { did -ra $dname 7 Already exists }
else {
did -a $dname 5 $did(4)
did -r $dname 4
}
}
if ($did == 8) {
did -r $dname 7
if (!$did(5).lines) did -ra $dname 7 Suplly a link.
else {
var %a 1
.hfree -w Download
.sockclose DownloadB.*
.sockclose DownloadA.*
.mkdir Download
while (%a <= $did(5).lines) {
hadd -m Download $calc($hget(Download, 0).item + 1) $did($dname,5,%a)
var %r $remove($hget(Download, %a),http://),%y $ticks,%1 $gettok(%r,1,47),%o $pos(%r,/),%2 $mid(%r,%o,$calc(1+$pos(%r,/,$count(%r,/))-%o)),%u $remove(%r,%1,%2),%4 $iif($count(%u,.),$gettok(%u,$calc(1+$v1),46)),%3 $remove(%u,%4),%i %3 $+ %4
if ($exists($qt($mircdirDownload $+ \ $+ %i))) || ($exists($qt($mircdirDownload $+ \ $+ $replace(%i,jpg,jpeg)))) { did -ra $dname 7 Already exists ( $+ $hget(Download, %a) $+ ) | var %a $calc($did(5).lines + 5) }
inc %a
}
var %r $remove($hget(Download, 1),http://),%y $ticks,%1 $gettok(%r,1,47),%o $pos(%r,/),%2 $mid(%r,%o,$calc(1+$pos(%r,/,$count(%r,/))-%o)),%u $remove(%r,%1,%2),%4 $iif($count(%u,.),$gettok(%u,$calc(1+$v1),46)),%3 $remove(%u,%4),%i %3 $+ %4
sockopen DownloadA.1 %1 80
sockmark DownloadA.1 %1 %2 %3 %4
}
}
if ($did == 9) {
if (!$did(5).seltext) {
did -ra $dname 7 Select a link, or add one.
}
else {
did -r $dname 7
.hfree -w Download
.sockclose DownloadB.*
.sockclose DownloadA.*
.mkdir Download
hadd -m Download 1 $did(5).seltext
var %r $remove($hget(Download, 1),http://),%y $ticks,%1 $gettok(%r,1,47),%o $pos(%r,/),%2 $mid(%r,%o,$calc(1+$pos(%r,/,$count(%r,/))-%o)),%u $remove(%r,%1,%2),%4 $iif($count(%u,.),$gettok(%u,$calc(1+$v1),46)),%3 $remove(%u,%4),%i %3 $+ %4
sockopen DownloadA.1 %1 80
sockmark DownloadA.1 %1 %2 %3 %4
}
}
if ($did == 10) {
did -r $dname 5
}
if ($did == 13) {
did -r $dname 11
if (!$did(12)) {
did -ra $dname 11 Supply a link
}
else {
var %x $remove($did(12),http://), %a $gettok(%x,1,47), %b $iif($gettok(%x,2-,47),/ $+ $v1,/), %check $iif($count($remove(%a,www.),.),1,0)
if (!%check) {
did -ra $dname 7 Invalid link
}
else {
did -r $dname 14
sockopen Pictures %a 80
sockmark Pictures %a %b
}
}
}
if ($did == 15) {
did -r $dname 11
if (!$did(14).lines) did -ra $dname 11 Search a site for pictures first.
else {
var %a 1
.hfree -w Download
.sockclose DownloadB.*
.sockclose DownloadA.*
.mkdir Download
while (%a <= $did(14).lines) {
hadd -m Download $calc($hget(Download, 0).item + 1) $did($dname,14,%a)
var %r $remove($hget(Download, %a),http://),%y $ticks,%1 $gettok(%r,1,47),%o $pos(%r,/),%2 $mid(%r,%o,$calc(1+$pos(%r,/,$count(%r,/))-%o)),%u $remove(%r,%1,%2),%4 $iif($count(%u,.),$gettok(%u,$calc(1+$v1),46)),%3 $remove(%u,%4),%i %3 $+ %4
if ($exists($qt($mircdirDownload $+ \ $+ %i))) || ($exists($qt($mircdirDownload $+ \ $+ $replace(%i,jpg,jpeg)))) { did -ra $dname 11 Already exists ( $+ $hget(Download, %a) $+ ) | halt }
inc %a
}
var %r $remove($hget(Download, 1),http://),%y $ticks,%1 $gettok(%r,1,47),%o $pos(%r,/),%2 $mid(%r,%o,$calc(1+$pos(%r,/,$count(%r,/))-%o)),%u $remove(%r,%1,%2),%4 $iif($count(%u,.),$gettok(%u,$calc(1+$v1),46)),%3 $remove(%u,%4),%i %3 $+ %4
sockopen DownloadB.1 %1 80
sockmark DownloadB.1 %1 %2 %3 %4
}
}
if ($did == 16) {
did -r $dname 11
if (!$did(14).seltext) {
did -ra $dname 11 Please select one/Find pictures on a site.
}
else {
.hfree -w Download
.sockclose DownloadB.*
.sockclose DownloadA.*
.mkdir Download
hadd -m Download 1 $did(14).seltext
var %r $remove($hget(Download, 1),http://),%y $ticks,%1 $gettok(%r,1,47),%o $pos(%r,/),%2 $mid(%r,%o,$calc(1+$pos(%r,/,$count(%r,/))-%o)),%u $remove(%r,%1,%2),%4 $iif($count(%u,.),$gettok(%u,$calc(1+$v1),46)),%3 $remove(%u,%4),%i %3 $+ %4
sockopen DownloadB.1 %1 80
sockmark DownloadB.1 %1 %2 %3 %4
}
}
if ($did == 17) {
did -r $dname 14
}
}
}
on *:SOCKOPEN:DownloadA.*:{
tokenize 32 $sock($sockname).mark
sockwrite $sockname $+(GET $2,$3,$4 $chr(32) HTTP/1.1,$lf,Host: $1,$lf,$lf)
:error
if ($error) {
reseterror
did -ra Download 7 Invalid link: $hget(Download, $gettok($sockname,2,46))
}
}
on *:SOCKREAD:DownloadA.*:{
if ($sockerr) {
did -ra Download 7 Socket error in: $hget(Download, $gettok($sockname,2,46))
}
else {
var %read 1, %check $numtok($sock($sockname).mark,32)
while (%read && %check > 3) {
sockread %read
if ($regex(%read,/Content\-Type: .*?\/([^\s;]+)/i)) var %t $iif($regml(1) != plain,$v1)
if ($regex(%read,/Content\-Length: (\d+)/i)) var %l $regml(1)
}
if (%check > 3) {
sockmark $sockname $gettok($sock($sockname).mark,3,32) $+ %t %l
}
tokenize 32 $sock($sockname).mark
while $sock($sockname).rq {
var %file $qt($mircdir $+ Download\ $+ $regsubex($1,/[^a-z0-9_ \.]/gi,)), %progress $calc(((($v1 + $lof(%file)) / $2 * 100) + (($gettok($sockname,2,46) * 100) - 100)) / $hget(Download, 0).item)
did -ra Download 7 Download progress: $round(%progress,2) $+ %
sockread &b
bwrite %file -1 -1 &b
}
if ($lof(%file) >= $2) {
var %s $gettok($sockname,2,46)
if (%s == $hget(Download, 0).item) { did -ra Download 7 Downloading complete }
else {
var %r $remove($hget(Download, $calc(%s + 1)),http://),%y $ticks,%1 $gettok(%r,1,47),%o $pos(%r,/),%2 $mid(%r,%o,$calc(1+$pos(%r,/,$count(%r,/))-%o)),%u $remove(%r,%1,%2),%4 $iif($count(%u,.),$gettok(%u,$calc(1+$v1),46)),%3 $remove(%u,%4),%i %3 $+ %4
sockopen DownloadA. $+ $calc(%s + 1) %1 80
sockmark DownloadA. $+ $calc(%s + 1) %1 %2 %3 %4
}
}
}
}
on *:SOCKOPEN:Pictures:{
tokenize 32 $sock($sockname).mark
sockwrite -nt $sockname GET $2 HTTP/1.1
sockwrite -nt $sockname Host: $1 $+ $str($crlf,2)
}
on *:SOCKREAD:Pictures:{
if ($sockerr) {
did -ra Download 11 Socket error
}
else {
var %read
sockread %read
if ($regex(%read,/<img.*src="(.+)"/i)) {
var %r $remove($regml(1),http://),%y $ticks,%1 $gettok(%r,1,47),%o $pos(%r,/),%2 $mid(%r,%o,$calc(1+$pos(%r,/,$count(%r,/))-%o)),%u $remove(%r,%1,%2),%4 $iif($count(%u,.),$gettok(%u,$calc(1+$v1),46)),%3 $remove(%u,%4),%i %3 $+ %4
if (%i) {
var %reg $regml(1)
var %a 0
while (%a <= $did(Download,14).lines) {
if ($did(Download,14,%a) == $iif($gettok($sock($sockname).mark,1,32) !isin $gettok(%reg,1,34),$v1 $+ $iif($left($v2,1) != /,/) $+ $gettok(%reg,1,34),$gettok(%reg,1,34))) { var %x 1 }
inc %a
}
if (!%x) did -a Download 14 $remove($iif($gettok($sock($sockname).mark,1,32) !isin $gettok(%reg,1,34),$v1 $+ $iif($left($v2,1) != /,/) $+ $gettok(%reg,1,34),$gettok(%reg,1,34)),http://)
}
}
}
}
on *:SOCKOPEN:DownloadB.*:{
tokenize 32 $sock($sockname).mark
sockwrite $sockname $+(GET $2,$3,$4 $chr(32) HTTP/1.1,$lf,Host: $1,$lf,$lf)
}
on *:SOCKREAD:DownloadB.*:{
if ($sockerr) {
did -ra Download 11 Socket error in: $hget(Download, $gettok($sockname,2,46))
}
else {
var %read 1, %check $numtok($sock($sockname).mark,32)
while (%read && %check > 3) {
sockread %read
if ($regex(%read,/Content\-Type: .*?\/([^\s;]+)/i)) var %t $iif($regml(1) != plain,$v1)
if ($regex(%read,/Content\-Length: (\d+)/i)) var %l $regml(1)
}
if (%check > 3) {
sockmark $sockname $gettok($sock($sockname).mark,3,32) $+ %t %l
}
tokenize 32 $sock($sockname).mark
while $sock($sockname).rq {
var %file $qt($mircdir $+ Download\ $+ $regsubex($1,/[^a-z0-9_ \.]/gi,)), %progress $calc(((($v1 + $lof(%file)) / $2 * 100) + (($gettok($sockname,2,46) * 100) - 100)) / $hget(Download, 0).item)
did -ra Download 11 Download progress: $round(%progress,2) $+ %
sockread &b
bwrite %file -1 -1 &b
}
if ($lof(%file) >= $2) {
var %s $gettok($sockname,2,46)
if (%s == $hget(Download, 0).item) { did -ra Download 11 Downloading complete }
else {
var %r $remove($hget(Download, $calc(%s + 1)),http://),%y $ticks,%1 $gettok(%r,1,47),%o $pos(%r,/),%2 $mid(%r,%o,$calc(1+$pos(%r,/,$count(%r,/))-%o)),%u $remove(%r,%1,%2),%4 $iif($count(%u,.),$gettok(%u,$calc(1+$v1),46)),%3 $remove(%u,%4),%i %3 $+ %4
sockopen DownloadB. $+ $calc(%s + 1) %1 80
sockmark DownloadB. $+ $calc(%s + 1) %1 %2 %3 %4
}
}
}
}