rendered paste bodymenu * {
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
did -a ig 5 Status: Waiting for respond from $gurl(%y).host
sockopen $+(id.,%sc) $gurl(%y).host 80
sockmark $+(id.,%sc) $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: $gettok($sock($sockname).mark,1,32)
sockwrite -nt $sockname $crlf
}
on *:SOCKREAD:id.*:{
if ($sockerr) halt
if (!%tc) {
did -a ig 5 Status: Downloading $nopath($gettok($sock($sockname).mark,2,32)) from $gettok($sock($sockname).mark,1,32)
var %id | sockread %id
while ($sockbr) {
if (Content-Length: * iswm %id) { set %tc $gettok(%id,2,32) | did -a ig 6 Size: %tc bytes }
if ((!%id) && (%tc)) break
if (*was not found on this server* iswm %id) { did -a ig 5 Status: An error has occured! | halt }
sockread %id
}
}
if (!%tc) { did -a ig 5 Status: An error has occured! | halt }
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
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),+)