;### ;Events ;########### on *:LOAD: { .echo -ta !Google Search v0.4 successfully loaded, type /google to set it up. } on *:UNLOAD: { .echo -ta !Google Search v0.4 successfully unloaded. } on *:TEXT:*:#: { if ($1 == $g.ini(trigger)) && ($g.check($chan,$iif($network,$network,$server))) && ($g.ini(active) == on) { if (!$2) { g.add $nick !Google Search v0.4 by MEiJ EFnet/NewNet, #sCRiPTs @ NewNet g.add $nick Useage: $g.ini(trigger) [-dn] eg: $g.ini(trigger) -dn10 mIRC g.add $nick Flags: -nN will return up to N results, -d will return results with descriptions, -dnN will return N results with descriptions } elseif ($2) && ($left($2,1) != $chr(45)) { var %s = $+(g.,$md5($+($ticks,$ctime,$nick))) sockopen %s google.com 80 sockmark %s $+($g.mode($nick,$chan),~,-,~,1,~,$replace($2-,$chr(32),$chr(43))) } elseif ($3) && ($left($2,1) == $chr(45)) { var %s = $+(g.,$md5($+($ticks,$ctime,$nick))) if ($left($2,3) == -dn) { sockopen %s google.com 80 | sockmark %s $+($g.mode($nick,$chan),~,d~,$right($2,$calc($len($2) - 3)),~,$replace($3-,$chr(32),$chr(43))) } elseif ($2 == -d) { sockopen %s google.com 80 | sockmark %s $+($g.mode($nick,$chan),~,d,~,1,~,$replace($3-,$chr(32),$chr(43))) } elseif ($left($2,2) == -n) { sockopen %s google.com 80 | sockmark %s $+($g.mode($nick,$chan),~,-,~,$right($2,$calc($len($2) - 2)),~,$replace($3-,$chr(32),$chr(43))) } } } } on *:SOCKOPEN:g.*: { sockwrite -nt $sockname GET $+(/search?hl=en&ie=UTF-8&oe=UTF-8&q=,$gettok($sock($sockname).mark,4-,126),&num=,$iif($gettok($sock($sockname).mark,3,126) > 10,10,$gettok($sock($sockname).mark,3,126))) HTTP/1.0 sockwrite -nt $sockname Accept-Language: en-us sockwrite -nt $sockname User-Agent: Mozilla/?? sockwrite -nt $sockname Host: $iif($ip,$ip,127.0.0.1) sockwrite -nt $sockname Connection: Keep-Alive sockwrite -t $sockname $str($crlf,2) } on *:SOCKREAD:g.*: { if ($sockerr > 0) return :nextread sockread -n &v if ($sockbr == 0) sockread &v var %i 1 while (%i <= $bvar(&v,0)) { tokenize 32 $bvar(&v,%i,800).text if (% [ $+ [ $sockname ] $+ ] .u) { tokenize 32 $+(% [ $+ [ $sockname ] $+ ] .u,$1-) | unset % [ $+ [ $sockname ] $+ ] .u } if ( isin $1-) { g.close $sockname } elseif ($left($1,1) != <) && (% [ $+ [ $sockname ] $+ ] .d) { set % [ $+ [ $sockname ] $+ ] .d % [ $+ [ $sockname ] $+ ] .d $gettok($remove($replace($1-,,,,),
),-1,62) if ($right($1-,4) !=
) { if (d isin $gettok($sock($sockname).mark,2,126)) { g.add $gettok($sock($sockname).mark,1,126) Desc: $g.replace(% [ $+ [ $sockname ] $+ ] .d) } | unset % [ $+ [ $sockname ] $+ ] .d } } elseif (p class=g> isin $1-) { if (% [ $+ [ $sockname ] $+ ] .u) { var %j 1 } | else { var %j = $g.bsearch($1-) } var %l 1 while (%l <= $gettok(%j,0,44)) { var %z = $gettok($1-,$+($gettok(%j,%l,44),-),60) if ( !isin %z) { set % [ $+ [ $sockname ] $+ ] .u %z } elseif ($right(%z,4) ==
) { set % [ $+ [ $sockname ] $+ ] .d $gettok($remove($replace(%z,,,,),
),-1,62) } elseif ($right(%z,4) !=
) { if ($gettok($g.bsearch($1-),0,44) != 1) { set % [ $+ [ $sockname ] $+ ] .u %z } elseif (,,,),
),-2,62)) { var %t = $gettok($remove($replace(%z,,,,),
),-1,62) } elseif ($count(%z,$chr(60)) != $count(%z,$chr(62))) && ($right(%z,1) != >) { set % [ $+ [ $sockname ] $+ ] .u %z } elseif ( !isin %z) { set % [ $+ [ $sockname ] $+ ] .u %z } } if ( isin %z) && (!% [ $+ [ $sockname ] $+ ] .u) { g.add $gettok($sock($sockname).mark,1,126) Result: $g.replace($+(,$gettok($gettok($remove(%z,,),3,62),1,60),)) - $chr(91) $remove($gettok($gettok(%z,2,62),1,60),a href=) $chr(93) if (%t) && (d isin $gettok($sock($sockname).mark,2,126)) { g.add $gettok($sock($sockname).mark,1,126) Desc: $g.replace(%t) } } inc %l } } inc %i 800 } } ;### ;Aliases ;########### alias google { dialog -m google g.main } alias g.replace { return $replace($1-,>,>,<,<,&,&) } alias g.bsearch { var %i 1 | while ($gettok($1-,%i,60)) { if ($gettok($gettok($1-,%i,60),1,62) == $+(p class=g)) { var %j = $iif(%j,$+(%j,$chr(44),%i),%i) } | inc %i } | return $iif(%i == 1,0,%j) } alias g.mode { if ($g.ini(mode) == chan) { return $2 } | elseif ($g.ini(mode) == msg) { return $+(.,$1) } | else { return $1 } } alias g.check { if ($g.ini(all) == on) { return $true } | var %n = $g.ini(. [ $+ [ $2 ] ]),%i 1 | while (%i <= $gettok(%n,0,44)) { if ($1 == $gettok(%n,%i,44)) { return $true } | inc %i } } alias g.cmb.a { var %i 1 | while (%i <= $gettok($g.ini($3),0,44)) { did -a $1 $2 $gettok($g.ini($3),%i,44) | inc %i } } alias g.cmb.g { var %i 1 | while ($did($1,$2,%i).text) { var %j = $+($iif(%j,$+(%j,$chr(44))),$did($1,$2,%i).text) | inc %i } | return %j } alias g.ini { if ($isid) { return $readini($scriptdir!google.set,n,google,$1) } | elseif ($2) { writeini $+(",$scriptdir,!google.set,") google $1 $2- } | else { remini $+(",$scriptdir,!google.set,") google $1 } } alias g.close { sockclose $1 | unset % [ $+ [ $1 ] $+ ] * } alias g.add { set %queue.g. [ $+ [ $calc($g.info(0) + 1) ] ] $1- | if (!$timer(g)) { .timerg 0 2 .g.say } } alias g.info { if ($1 isnum) { if (%queue.g. [ $+ [ $1 ] ]) && ($1 > 0) { return %queue.g. [ $+ [ $1 ] ] } | elseif ($1 == 0) { return $var(%queue.g.*) } } } alias g.say { var %i 1 if (%queue.g. [ $+ [ %i ] ]) { tokenize 32 %queue.g. [ $+ [ %i ] ] if ($left($1,1) == $chr(35)) { .msg $1- } | elseif ($left($1,1) == $chr(46)) { .msg $remove($1,.) $2- } | else { .notice $1- } unset %queue.g. [ $+ [ %i ] ] | var %h $calc(%i + 1) while (%queue.g. [ $+ [ %h ] ]) { set %queue.g. [ $+ [ $calc(%h - 1) ] ] %queue.g. [ $+ [ %h ] ] | unset %queue.g. [ $+ [ %h ] ] | inc %h } } else { .timerg off } } ;### ;Menus ;########### menu menubar { !Google Search:google } ;### ;Dialogs ;########### dialog g.main { title "!Google Search v0.4 - Setup" size -1 -1 154 120 option dbu combo 1, 0 9 75 80, size combo 2, 78 9 75 80, size button "Done", 3, 59 111 37 8, ok cancel text "Mode:", 4, 1 100 16 8 combo 5, 17 98 58 39, size drop text "Trigger:", 6, 79 100 20 8 edit "", 7, 99 98 54 11 button "Add", 8, 0 88 16 9 button "Rem", 9, 17 88 16 9 button "Add", 10, 78 88 16 9 button "Rem", 11, 95 88 16 9 check "All", 12, 136 88 17 10 text "Networks", 13, 25 1 24 7 text "Channels", 14, 103 1 23 7 button "Proxy Settings", 15, 114 111 39 8, disable check "Bot Active", 16, 1 110 36 10 } on *:DIALOG:google:*:*: { if ($devent == init) { did -ra $dname 7 $iif($g.ini(trigger),$g.ini(trigger),!google) if ($g.ini(active) == on) || (!$g.ini(active)) { did -c $dname 16 } | else { did -b $dname 1,2,5,7,12,8,9,10,11 } if ($g.ini(all) == on) || (!$g.ini(all)) { did -c $dname 12 | did -b $dname 1,2,8,9,10,11 } did -a $dname 5 Channel | did -a $dname 5 Notice | did -a $dname 5 Private Message if ($g.ini(mode) == notice) { did -c $dname 5 2 } | elseif ($g.ini(mode) == msg) { did -c $dname 5 3 } | else { did -c $dname 5 1 } g.cmb.a $dname 1 networks if ($g.ini(networks)) { did -r $dname 2 | g.cmb.a $dname 2 $+(.,$did($dname,1,1)) | did -c $dname 1 1 } } if ($devent == sclick) { if ($did == 12) { if ($did($dname,12).state == 1) { g.ini all on | did -b $dname 1,2,8,9,10,11 } | else { g.ini all off | did -e $dname 1,2,8,9,10,11 } } if ($did == 16) { if ($did($dname,16).state == 1) { g.ini active on | did -e $dname 1,2,5,7,12,8,9,10,11 } | else { g.ini active off | did -b $dname 1,2,5,7,12,8,9,10,11 } } if ($did == 5) { if ($did($dname,5,1).seltext == Channel) { g.ini mode chan } | elseif ($did($dname,5).seltext == Notice) { g.ini mode notice } | else { g.ini mode msg } } if ($did == 1) && ($did($dname,1).sel isnum) { did -r $dname 2 | g.cmb.a $dname 2 $+(.,$did($dname,1,$did($dname,1).sel)) } if ($did == 8) && (!$did($dname,1).sel) && ($did($dname,1).text) { did -a $dname 1 $did($dname,1).text | did -c $dname 1 $did($dname,1).lines | g.ini networks $g.cmb.g($dname,1) | did -r $dname 2 | g.cmb.a $dname 2 $g.ini($did($dname,1,$did($dname,1).lines)) } if ($did == 9) && ($did($dname,1).sel isnum) { did -d $dname 1 $did($dname,1).sel | if ($did($dname,1).lines == 0) { g.ini networks } | else { g.ini networks $g.cmb.g($dname,1) } | did -r $dname 2 } if ($did == 10) && (!$did($dname,2).sel) && ($did($dname,2).text) && ($did($dname,1).seltext) { did -a $dname 2 $iif($left($did($dname,2).text,1) != $chr(35),$+($chr(35),$did($dname,2).text),$did($dname,2).text) | did -c $dname 2 $did($dname,2).lines | g.ini $+(.,$did($dname,1).seltext) $g.cmb.g($dname,2) } if ($did == 11) && ($did($dname,2).sel isnum) { did -d $dname 2 $did($dname,2).sel | if ($did($dname,2).lines == 0) { g.ini $+(.,$did($dname,1).seltext) } | else { g.ini $+(.,$did($dname,1).seltext) $g.cmb.g($dname,2) } } } if ($devent == close) { if ($did($dname,7).text) { g.ini trigger $did($dname,7).text } if ($did($dname,12).state == 1) { g.ini all on } | else { g.ini all off } if ($did($dname,16).state == 1) { g.ini active on } | else { g.ini active off } } }