All pastes #502951 Raw Edit

Stuff

public text v1 · immutable
·published 2007-05-22 17:53 UTC
rendered paste body
menu * {
  Image Search:dialog -m ig ig
}
dialog ig {
  size -1 -1 200 90
  title "Image Google by Patje`"
  option dbu
  box "Image to look up", 1, 5 3 190 25
  edit "", 2, 10 12 145 10
  button "Search!", 3, 160 12 30 10
  box "Current Download", 4, 5 30 190 34
  text "Status:", 5, 12 38 180 8
  text "Size:", 6, 12 46 180 8
  text "Done:", 7, 12 54 180 8
  box "Settings", 8, 5 66 190 20
  check "Open picture when download is complete", 9, 12 74 180 8
}
on *:DIALOG:ig:sclick:*:{
  if (($did == 3) && ($iif($did(2),$v1,$?="You have to supply data to look up!"))) {
    did -a $dname 5 Status: Searching for image
    did -a $dname 6 Size:
    did -a $dname 7 Done:
    did -b $dname 2
    inc %sc
    sockopen $+(ig.,%sc) images.google.com 80
    sockmark $+(ig.,%sc) $hr($v1)
  }
  if ($did == 9) {
    if ($did(9).state) set %owc 1
    else unset %owc
  }
}
on *:DIALOG:ig:init:*:{
  if (%owc) did -c $dname 9
}
on *:SOCKOPEN:ig.*:{
  .remove igt | unset %y
  sockwrite -nt $sockname GET /images?um=1&tab=wi&ie=UTF-8&oe=UTF-8&q= $+ $sock($sockname).mark HTTP/1.0
  sockwrite -nt $sockname Host: images.google.com
  sockwrite -nt $sockname $crlf
}
on *:SOCKREAD:ig.*:{
  if ($sockerr) halt
  while ($sock($sockname).rq) { sockread &ig | bwrite igt -1 -1 &ig }
  bread igt 0 $file(igt).size &ig
  if ((!%y) && ($bfind(&ig,1,</HTML>))) {
    if ($bfind(&ig,1,58 34 44 34 104 116 116 112 58 47 47)) {
      set %y $bvar(&ig,$calc($v1 + 4),$calc($bfind(&ig,$calc($v1 + 6),34) - $calc($v1 + 4))).text
      if ($exists($nopath($gurl(%y).get))) .remove $nopath($gurl(%y).get)
      did -a ig 5 Status: Waiting for respond from $gurl(%y).host
      inc %sc
      sockopen id $gurl(%y).host 80
      sockmark id $gurl(%y).host $gurl(%y).get
      .timer 1 2 unset %y
    }
    else did -a ig 5 Status: There are no results found for $sock($sockname).mark
  }
  .timer 1 2 .remove igt
}
on *:SOCKOPEN:id:{
  sockwrite -nt $sockname GET $gettok($sock($sockname).mark,2,32) HTTP/1.0
  sockwrite -nt $sockname Host: www. $+ $gettok($sock($sockname).mark,1,32)
  sockwrite -nt $sockname $crlf
  did -a ig 5 Status: Downloading $nopath($gettok($sock($sockname).mark,2,32)) from $gettok($sock($sockname).mark,1,32)
}
on *:SOCKREAD:id:{
  if (!%okay) {
    var %id
    sockread %id
    while ($sockbr) {
      if (Content-Length: * iswm %id) { did -a ig 6 Size: $bytes($gettok(%id,2,32),b) bytes | set %tc $gettok(%id,2,32) }
      if (!%id) { set %okay Olol | break }
      sockread %id
    }
  }
  sockread &id
  while ($sockbr) {
    did -a ig 7 Done: $iif($floor($calc(($sock($sockname).rcvd / %tc) * 100)) <= 100,$v1,100) $+ %
    bwrite $nopath($gettok($sock($sockname).mark,2,32)) -1 -1 &id
    sockread &id
  }
}
on *:SOCKCLOSE:id:{
  did -a ig 7 Done: 100%
  did -a ig 5 Status: Completed!
  did -e ig 2
  unset %tc
  unset %okay
  if (%owc) {
    window -pdCk0 @Image 0 0 $calc($pic($nopath($gettok($sock($sockname).mark,2,32))).width + 8) $calc($pic($nopath($gettok($sock($sockname).mark,2,32))).height + 33)
    drawpic @Image 0 0 $nopath($gettok($sock($sockname).mark,2,32))
  }
}
alias gurl {
  if ($prop == host) return $gettok($remove($1-,http://,www.),1,47)
  if ($prop == get) return / $+ $gettok($remove($1-,http://,www.),2-,47)
}
alias hr return $replace($1-,$chr(32),+)