Download dialog

By [-Srankie-] on Jun 14, 2008

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
      }
    } 
  }
} 

Comments

Sign in to comment.
FordLawnmower   -  May 29, 2010

@findfriend it looks like the alias is /download and there is also a right click menu on all pages.
Who gave this a 3? You should get a 5 just for trying something like this ;/

 Respond  
findfriend   -  May 29, 2010

What, Where alias lof? Im using mirc 6.35 :(

 Respond  
Are you sure you want to unfollow this person?
Are you sure you want to delete this?
Click "Unsubscribe" to stop receiving notices pertaining to this post.
Click "Subscribe" to resume notices pertaining to this post.