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,))) { 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),+)