mruno

!google Author=pball, edited by mruno 20/05/2012

Nov 8th, 2014
416
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
mIRC 22.71 KB | None | 0 0
  1. /*
  2. [Addon]
  3. Script=google.com
  4. Version=
  5. Author=pball, edited by mruno 20/05/2012
  6. Desc=
  7. For=Mirc
  8. Date=10-05-11
  9.  
  10. [script]
  11. */
  12. on *:TEXT:!google *:#:{
  13.   if (hostess ison $chan) || (host ison $chan) return
  14.   else google_start $chan $$2-
  15. }
  16.  
  17. on *:input:#: if (!$ctrlenter) && (!$inpaste) && ($left($1,1) != $readini(mirc.ini,text,commandchar)) && ($1 == !google) google_start $chan $$2-
  18.  
  19. alias g {
  20.   google_start nchan $$1-
  21. }
  22.  
  23. alias google_start {
  24.   if (%googlespam) halt
  25.   else set -u5 %googlespam 1
  26.   if ($1 != nchan) set %google.chan $v1
  27.   set %google.url /custom?hl=en&client=pub-4099951843714863&cof=FORID%3A1%3BGL%3A1%3BS%3Ahttp%3A%2F%2Fwww.hyperwords.net%2F%3BL%3Ahttp%3A%2F%2Fwww.hyperwords.net%2Fhy-for-google.gif%3BLH%3A100%3BLW%3A100%3BLBGC%3AFFFFFF%3BLP%3A1%3BLC%3A%230033cc%3BVLC%3A%23333333%3BGALT%3A%23999999%3B&q= $+ $web_input($2-) $+ &btnG=Search
  28.   sockopen google www.google.com 80
  29. }
  30.  
  31. on *:SOCKOPEN:google:{
  32.   sockwrite -nt $sockname GET %google.url HTTP/1.1
  33.   sockwrite -nt $sockname HOST: www.google.com
  34.   sockwrite -n $sockname
  35. }
  36.  
  37. on *:SOCKREAD:google: {
  38.   if ($sockerr > 0) { echo -a Error while reading from $sockname $+ . | echo -a Error # $+ $sockerr occurred. | return }
  39.   sockread %google.read
  40.   while ($sockbr) {
  41.     if ($regex(g,%google.read,/<a class="l" href="(.*?)".*?">(.*?)</a></h2>.*?<span class="s">(.*?)</span><br>/)) {
  42.       $iif(%google.chan,msg $v1,echo -a) !12G4o8o12g3l4e: $parsehtml($regml(g,2)) Link:12  $+ $parsehtml($regml(g,1))
  43.       $iif(%google.chan,msg $v1,echo -a) Info: $parsehtml($regml(g,3))
  44.       set -l %done 1
  45.     }
  46.     sockread %google.read
  47.     if (%done) { sockclose google | unset %google.* | unset %googlespam }
  48.   }
  49. }
  50.  
  51. alias -l web_input { return $replacex($1-,?,$+(%,3F),@,$+(%,40),#,$+(%,23),$,$+(%,24),%,$+(%,25),^,$+(%,5E),&,$+(%,26),+,$+(%,2B),=,$+(%,3D),`,$+(%,60),[,$+(%,5B),],$+(%,5D),\,$+(%,5C),$chr(123),$+(%,7B),$chr(125),$+(%,7D),|,$+(%,7C),$chr(59),$+(%,3B),',$+(%,27),:,$+(%,3A),",$+(%,22),$chr(44),$+(%,2C),/,$+(%,2F),<,$+(%,3C),>,$+(%3E),$chr(32),$+(%,20)) }
  52.  
  53. alias -l parsehtml {
  54.   set -l %temp $regsubex($1,/<[^>]+[>$]>?/g,)
  55.   while (($regex(%temp,/&#(\d+);/)) && ($regml(1) isnum 32-255)) set -l %temp $replacex(%temp,$+(&#,$regml(1),;),$chr($regml(1)))
  56.   while (($regex(%temp,/&#x(.*?);/)) && ($base($regml(1),16,10) isnum 32-255)) set -l %temp $replacex(%temp,$+(&#x,$regml(1),;),$chr($base($regml(1),16,10)))
  57.   set -l %finished $replacex(%temp,&nbsp;,$chr(160),&quot;,",&middot;,·,&lt;,<,&gt;,>,&amp;,&,&ndash;,–,&eacute;,$chr(233))
  58.   return %finished
  59. }
  60.  
  61.  
  62. ;===============================================
  63. ; Google Search
  64. ;===============================================
  65.  
  66. on *:LOAD: {
  67.   if ($version < 6.03) {
  68.     .unload -rs $+(",$script,")
  69.     echo -ts Google Search Requires mIRC v6.03 or newer to be installed successfully, script auto-unloaded.
  70.   }
  71.   else {
  72.     echo -ts Google Search, Successfully loaded - Type /_google to configure.
  73.     _google
  74.   }
  75. }
  76. on *:UNLOAD: {
  77.   if ($timer(_google)) { .timer_google off }
  78.   unset %queue._google.*
  79.   hfree -w _google.*
  80.   echo -ts Google Search, Successfully unloaded.
  81. }
  82. on *:TEXT:*:#: { if ($_ban($+($nick,!,$address))) && ($_trigger($1)) { _input $chan $cid $nick $2- } }
  83. on *:INPUT:#: { if ($_trigger($1)) { _input $chan $cid $nick $2- } }
  84. on *:SOCKOPEN:_google.*: {
  85.   var %sn = $sockname
  86.   tokenize 32 $sock(%sn).mark
  87.   if ($sockerr) {
  88.     _hadd %sn error Unable to open connection
  89.     _parse %sn error $1-
  90.     sockclose %sn
  91.     return
  92.   }
  93.   sockwrite -nt %sn GET $+(/search?hl=en&q=,$_encode($6-),&num=,$4,&btnG=Search&meta=) HTTP/1.0
  94.   sockwrite -nt %sn Accept-Language: en-us
  95.   sockwrite -nt %sn $useragent
  96.   sockwrite -nt %sn Referer: http://www.google.com
  97.   sockwrite -nt %sn Host: www.google.com
  98.   sockwrite -nt %sn Connection: close
  99.   sockwrite -t %sn $str($crlf,2)
  100. }
  101. alias -l useragent {
  102.   var %r $rand(1,11)
  103.   if (%r == 1) return User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)
  104.   elseif (%r == 2) return User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-GB; rv:1.8.1.6) Gecko/20070725 Firefox/2.0.0.6
  105.   elseif (%r == 3) return User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)
  106.   elseif (%r == 4) return User-Agent: Opera/9.20 (Windows NT 6.0; U; en)
  107.   elseif (%r == 5) return User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.5) Gecko/20060127 Netscape/8.1
  108.   elseif (%r == 6) return User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_6_8) AppleWebKit/537.13+ (KHTML, like Gecko) Version/5.1.7 Safari/534.57.2
  109.   elseif (%r == 7) return User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_7; da-dk) AppleWebKit/533.21.1 (KHTML, like Gecko) Version/5.0.5 Safari/533.21.1
  110.   elseif (%r == 8) return User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.2; WOW64; rv:1.8.0.7) Gecko/20110321 MultiZilla/4.33.2.6a SeaMonkey/8.6.55
  111.   elseif (%r == 9) return User-Agent: Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/37.0.2049.0 Safari/537.36
  112.   elseif (%r == 10) return User-Agent: Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.67 Safari/537.36
  113.   elseif (%r == 11) return User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:31.0) Gecko/20100101 Firefox/31.0
  114. }
  115. on *:SOCKREAD:_google.*: {
  116.   var %sn = $sockname
  117.   if ($sockerr > 0) return
  118.   :nextread
  119.   sockread &buffer
  120.   if ($sockbr == 0) return
  121.   if ($bvar(&buffer, 1, 7).text == HTTP/1.) {
  122.     var %r = $bvar(&buffer, 1, $calc($bfind(&buffer, 1, $cr) - 1)).text
  123.     if ($gettok(%r, 2, 32) != 200) && ($gettok(%r, 2, 32) != 302) {
  124.       _hadd %sn error %r
  125.       _parse %sn error $sock(%sn).mark
  126.       sockclose %sn
  127.       return
  128.     }
  129.   }
  130.   hadd -mbu300 %sn $_item(%sn) &buffer
  131.   goto nextread
  132. }
  133. on *:SOCKCLOSE:_google.*: { _main $sockname $sock($sockname).mark }
  134.  
  135. ;
  136. ; Main HTML Parsing Alias
  137. ;
  138. alias -l _main {
  139.   var %sn = $sockname
  140.   if ($_recompile(%sn, &data) == 0) {
  141.     _hadd %sn error No data received on socket!
  142.     _parse %sn error $2-
  143.     sockclose %sn
  144.     return
  145.   }
  146.   tokenize 32 $2-
  147.   .echo -q $_extract(1, &data, &stats, <div id=ssb>)
  148.   ;if (($5 == 1) && ($regex(stats, $bvar(&stats, 1, 800).text, /<b>(.[^<]*)</b>/ig))) {
  149.   ;_hadd %sn results $_regexp($regml(stats, 4))
  150.   ;_hadd %sn time $_regexp($regml(stats, 6))
  151.   ;_parse %sn info $1-
  152.   ;}
  153.   var %p 1, %i 0, %m = $_ini(set, max)
  154.   while ((%p > 0) && (%i < %m)) {
  155.     inc %i
  156.     var %pl = $bfind(&data, %p, <li class=g).text
  157.     var %pd = $bfind(&data, %p, <div class=g>).text
  158.     if ((%pl < %pd) || ((%pd == 0) && (%pl > 0))) var %p = $_extract(%p, &data, &result, <li class=g, </ol>)
  159.     else var %p = $_extract(%p, &data, &result, <div class=g>)
  160.     if (%p <= 0) {
  161.       if ($v1 == -1) {
  162.         if (%i == 1) _parse %sn none $1-
  163.       }
  164.       else {
  165.         _hadd %sn error Parser error
  166.         _parse %sn error $1-
  167.       }
  168.       break
  169.     }
  170.     if ($regex(url, $remove($bvar(&result, 1, 800).text, $cr, $lf), <a .*?href="(.[^"]*)"[^>]*class=l[^>]*>(.*?)</a>)) {
  171.       if (http://news.google.*/news* iswm $regml(url, 1)) continue
  172.       .echo -q $regex(desc, $bvar(&result, $bfind(&result, 1, </a>), 800).text, </[^>]*>(?:</h3>|<br>)<[^>]*>(.*?)<br>)
  173.       .echo -q $regex(size, $bvar(&result, $bfind(&result, 1, <cite>), 800).text, <[^>]*>.*? - (.*?) -)
  174.       _hadd %sn num %i
  175.       _hadd %sn url $regml(url, 1)
  176.       _hadd %sn title $_regexp($regml(url, 2))
  177.       _hadd %sn desc $iif($_regexp($regml(desc, 1)),$ifmatch,n/a)
  178.       _hadd %sn size $regml(size, 1)
  179.       _parse %sn result $1-
  180.     }
  181.   }
  182. }
  183. alias -l _recompile {
  184.   var %i 1
  185.   while ($hget($1, %i).item) {
  186.     .echo -q $hget($1, %i, &item)
  187.     bcopy $2 $calc($bvar($2, 0) + 1) &item 1 $bvar(&item, 0)
  188.     inc %i
  189.   }
  190.   bunset &item
  191.   if ($hget($1)) hfree $1
  192.   return $bvar($2, 0)
  193. }
  194. alias -l _extract {
  195.   var %p $1, %_ih = $false
  196.   if (!$2) return -3
  197.   if ($3) bunset $3
  198.   if (!$regex(extract, $4, <(\w+))) return -2
  199.   var %_rs = $4, %_re = $+(</,$regml(extract, 1),>), %_rc = $+(<,$regml(extract, 1))
  200.   var %_s = $bfind($2, %p, %_rs).text, %_p = %_s, %_e = %_s
  201.   if (%_s == 0) return -1
  202.   ; if there are no closing tags present, we've either got html not xml or invalid (x)html.
  203.   if ($bfind($2, %p, %_re).text == 0) var %_ih = $true
  204.   if ($5) var %_re = $5
  205.   if ($6) var %_rc = $6
  206.   while ($bfind($2, %_p, %_rc).text > 0) {
  207.     var %_v1 = $v1, %_p = $calc(%_v1 + 1)
  208.     if ((%_ih) && ($bfind($2, %_p, %_rc).text > 0)) {
  209.       var %_e = $v1, %_et = %_e
  210.       break
  211.     }
  212.     if ((%_v1 < %_e) || (%_e == %_s)) var %_e = $bfind($2, $calc(%_e + 1), %_re).text, %_et = $calc(%_e + $len(%_re))
  213.     else break
  214.   }
  215.   if ($3) bcopy -c $3 1 $2 %_s $calc(%_et - %_s)
  216.   return $iif(%_e > 0, %_et, 0)
  217. }
  218.  
  219. ;
  220. ; Main Input Alias
  221. ;
  222. alias -l _input {
  223.   if (!$_chan($1)) || (!$_ini(set, online)) { return }
  224.   ;if (m isin $chan(#).mode) { .notice $nick Script is OFF due to channel being mdoerated (+m). | return }
  225.   var %l 1, %i 1, %c 0
  226.   while (%i <= $calc($0 - 3)) {
  227.     var %m = $gettok($4-,%i,32)
  228.     if (($left(%m,2) iswm -l) && ($right(%m,-2) > 0)) { var %l $right(%m,-2) }
  229.     elseif (%m == -i) { var %c 1 }
  230.     else { break }
  231.     inc %i
  232.   }
  233.   var %t = $gettok($4-, $+(%i,-), 32)
  234.   if (!%t) {
  235.     _msg $1 $2 $3 3 $b Google Search
  236.     _msg $1 $2 $3 3 $eval($decode(AlVzYWdlAjogJF9pbmkoc2V0LCB0cmlnZ2VyKSBbb3B0aW9uc10gPHNlYXJjaD4=,m),2)
  237.     _msg $1 $2 $3 3 $decode(Ak9wdGlvbnMCOg==,m)
  238.     _msg $1 $2 $3 3 $decode(AiACIAIgAiACIAJMaW1pdCBSZXN1bHRzOiAtbE4gKHdoZXJlIE4gaXMgdGhlIG51bWJlciBvZiByZXN1bHRzIHRvIGxpc3Qp,m)
  239.     _msg $1 $2 $3 3 $decode(AiACIAIgAiACIAJTZWFyY2ggSW5mbzogLWkgKGRpc3BsYXR5cyBzb21lIG1pc2Mgc2VhcmNoIGluZm8gd2l0aCByZXN1bHRzKQ==,m)
  240.     _msg $1 $2 $3 3 $eval($decode(AkV4YW1wbGU6AiAkX2luaShzZXQsIHRyaWdnZXIpIC1pIC1sMTAgbUlSQw==,m),2)
  241.     return
  242.   }
  243.   if ($_ini(set, max) < %l) { var %l $ifmatch }
  244.   ; Format:
  245.   ;  1 = channel the trigger was activated from
  246.   ;  2 = network scid
  247.   ;  3 = nickname of the person who activated it
  248.   ;  4 = how many results to list (1, this is default)
  249.   ;  5 = display misc search info (0 = off, 1 = on)
  250.   ;  6 = search string
  251.   sockmark $_open $1 $2 $3 %l %c %t
  252. }
  253.  
  254. ;
  255. ; Queue Aliases
  256. ;
  257. alias -l _msg {
  258.   set %queue._google. [ $+ [ $calc($_info(0) + 1) ] ] $1-
  259.   if (!$timer(_google)) { .timer_google -m 0 2000 _say }
  260. }
  261. alias -l _info {
  262.   if ($1 isnum) {
  263.     if (%queue._google. [ $+ [ $1 ] ]) && ($1 > 0) { return %queue._google. [ $+ [ $1 ] ] }
  264.     elseif ($1 == 0) { return $var(%queue._google.*) }
  265.   }
  266. }
  267. alias -l _say {
  268.   var %i 1
  269.   if (%queue._google. [ $+ [ %i ] ]) {
  270.     tokenize 32 %queue._google. [ $+ [ %i ] ]
  271.     scid $2
  272.     if ($3 ison $1) && ($me ison $1) && ($5) {
  273.       if ($4 == 1) { msg $1 $5- }
  274.       elseif ($4 == 2) { .msg $3 $5- }
  275.       else { .notice $3 $5- }
  276.     }
  277.     unset %queue._google. [ $+ [ %i ] ] | var %h $calc(%i + 1)
  278.     while (%queue._google. [ $+ [ %h ] ]) { set %queue._google. [ $+ [ $calc(%h - 1) ] ] %queue._google. [ $+ [ %h ] ] | unset %queue._google. [ $+ [ %h ] ] | inc %h }
  279.   }
  280.   else { .timer_google off }
  281. }
  282.  
  283. ;
  284. ; Socket Aliases
  285. ;
  286. alias -l _open {
  287.   :name
  288.   var %s = $+(_google.,$md5($ticks))
  289.   if ($sock(%s)) { goto name }
  290.   if ($_ini(set, proxy)) {
  291.     if ($_ini(set, host)) && ($_ini(set, port)) { sockopen %s $_ini(set, host) $_ini(set, port) }
  292.     else { echo -ta [Google] Error: please specify a hostname and port number in the proxy settings }
  293.   }
  294.   else { sockopen %s www.google.com 80 }
  295.   return %s
  296. }
  297.  
  298. ;
  299. ; Misc Aliases
  300. ;
  301. alias -l _ban {
  302.   var %i 1
  303.   while (%i <= $ini($scriptdirgoogle.set, ban, 0)) {
  304.     var %x = $readini($scriptdirgoogle.set, n, ban, $ini($scriptdirgoogle.set, ban, %i))
  305.     if ($1 isnum) && ($1 == %i) { return %x }
  306.     elseif (%x iswm $1) { return 0 }
  307.     inc %i
  308.   }
  309.   return $iif($1 == 0,$calc(%i - 1), 1)
  310. }
  311. alias -l _item {
  312.   var %i 1
  313.   while ($hget($1,%i).item) { inc %i }
  314.   return %i
  315. }
  316. alias -l _regexp {
  317.   var %i 1, %l quot 34|lt 60|lg 62|amp 38|nbsp 32, %m $1
  318.   while ($regex(regexp, %m, /(&#(\d{1,3});)/s)) { var %m = $replace(%m, $regml(regexp, 1), $chr($regml(regexp, 2))) }
  319.   .echo -q $regsub(%m, /<[^>]+>/g,, %m)
  320.   while (%i <= $gettok(%l,0,124)) {
  321.     var %t = $gettok(%l,%i,124)
  322.     .echo -q $regsub(%m, $+(/&,$gettok(%t,1,32),;/g), $chr($gettok(%t,2,32)), %m)
  323.     inc %i
  324.   }
  325.   .echo -q $regsub(%m, /&[^;]+;/g,, %m)
  326.   return %m
  327. }
  328. alias -l _mode { return $iif($_ini(set, msgmode), $ifmatch, 1) }
  329. alias -l _encode {
  330.   var %s, %p = $len($1-)
  331.   while (%p) {
  332.     if ($mid($1-,%p,1) isalnum) { %s = $+($ifmatch,%s) }
  333.     else { %s = $+(%,$base($asc($mid($1-,%p,1)),10,16),%s) }
  334.     dec %p
  335.   }
  336.   return %s
  337. }
  338. alias -l _ini {
  339.   if ($isid) { return $readini($scriptdirgoogle.set, n, $1, $$2) }
  340.   elseif ($3) { writeini $+(",$scriptdir,google.set,") $1 $2 $$3- }
  341.   else { remini $+(",$scriptdir,google.set,") $$1 $2 }
  342. }
  343. alias -l _trigger {
  344.   if ($1 == $_ini(set, trigger)) { return 1 }
  345.   return 0
  346. }
  347. alias -l _chan {
  348.   if ($_ini(set, all)) { return 1 }
  349.   var %i 1, %l $_ini(set, networks)
  350.   while (%i <= $gettok(%l, 0, 44)) {
  351.     var %n = $gettok(%l, %i, 44)
  352.     if (%n == $network) {
  353.       var %j 1
  354.       while (%j <= $gettok($_ini(set, $+(.,%n)), 0, 44)) {
  355.         var %c = $gettok($_ini(set, $+(.,%n)), %j, 44)
  356.         if (%c == $1) { return 1 }
  357.         inc %j
  358.       }
  359.     }
  360.     inc %i
  361.   }
  362. }
  363.  
  364. ;
  365. ; Output Parsing Aliases
  366. ;
  367. alias -l _mini {
  368.   var %i 1, %l
  369.   while (%i <= $ini($scriptdirgoogle.set, $1, 0)) {
  370.     var %m = $ini($scriptdirgoogle.set, $1, %i)
  371.     if ($iif($3,$3-,*) iswm %m) { var %l = $addtok(%l, %m, 44) }
  372.     inc %i
  373.   }
  374.   var %l = $sorttok(%l, 44)
  375.   return $iif($2 == 0, $gettok(%l, 0, 44), $gettok(%l, $2, 44))
  376. }
  377. alias -l _hadd { hadd -mcu300 $1 $$2 $3- }
  378. alias -l _codes {
  379.   var %i 1, %o $$1-, %r = $+(/&b\^/g 2|/&u\^/g 31|/&o\^/g 15|/&k\^/g 3|/&r\^/g 22)
  380.   while (%i <= $gettok(%r, 0, 124)) {
  381.     var %t = $gettok(%r, %i, 124)
  382.     .echo -q $regsub(%o, $gettok(%t, 1, 32), $iif($gettok(%t, 2, 32) isnum, $chr($ifmatch), $ifmatch), %o)
  383.     inc %i
  384.   }
  385.   return %o
  386. }
  387. alias -l _parse {
  388.   var %i 1, %m $+($2,_*), %s $3-
  389.   _hadd $1 chan $gettok(%s, 1, 32)
  390.   _hadd $1 nick $gettok(%s, 3, 32)
  391.   _hadd $1 limit $gettok(%s, 4, 32)
  392.   _hadd $1 search $gettok(%s, 6-, 32)
  393.   while (%i <= $_mini(outp, 0, %m)) {
  394.     var %e = $_mini(outp, %i, %m), %l = $_codes($_ini(outp, %e)), %j 1, %o %l
  395.     while (%j <= $hget($1, 0).item) {
  396.       .echo -q $regsub(%o, $+(/&,$hget($1, %j).item,\^/g), $hget($1, $hget($1, %j).item), %o)
  397.       inc %j
  398.     }
  399.     inc %i
  400.     if ($regex(%l, /&[^&]*?\^/g) != $regex(%o, /&[^&]*?\^/g)) {
  401.       .echo -q $regsub(%o,/&[^&]*?\^/g,n/a, %o)
  402.       _msg $gettok(%s, 1, 32) $gettok(%s, 2, 32) $gettok(%s, 3, 32) $_mode %o
  403.     }
  404.   }
  405.   if ($hget($1)) { hfree $1 }
  406. }
  407.  
  408. ;
  409. ; Dialog Stuff
  410. ;
  411. alias _google { if (!$dialog(_google)) { dialog -m _google _google } }
  412. alias -l _cmbload {
  413.   var %i 1
  414.   while (%i <= $gettok($_ini($3, $4),0,44)) {
  415.     did -a $1 $2 $gettok($_ini($3, $4),%i,44)
  416.     inc %i
  417.   }
  418. }
  419. alias -l _cmbsave {
  420.   var %i 1, %j
  421.   while ($did($1,$2,%i).text) {
  422.     var %j = $+($iif(%j,$+(%j,$chr(44))),$did($1,$2,%i).text)
  423.     inc %i
  424.   }
  425.   return %j
  426. }
  427. alias -l _replace { return $replace($$1-, $chr(2), &b^, $chr(31), &u^, $chr(15), &o^, $chr(3), &k^, $chr(22), &r^)) }
  428. dialog _google {
  429.   title "Google Search - Settings [/_google]"
  430.   size -1 -1 190 102
  431.   option dbu
  432.   combo 5, 0 9 60 72, sort size
  433.   combo 1, 61 9 61 72, sort size
  434.   button "Done", 2, 74 93 37 9, ok cancel
  435.   edit "", 3, 127 37 60 10
  436.   text "Trigger:", 4, 127 30 20 7
  437.   text "Channels", 6, 80 1 23 7
  438.   text "Networks", 7, 18 1 24 7
  439.   button "Add", 8, 61 81 16 9
  440.   button "Rem", 9, 78 81 16 9
  441.   button "Add", 10, 0 81 16 9
  442.   button "Rem", 11, 17 81 16 9
  443.   check "All", 16, 106 81 17 10
  444.   check "Enable Script", 15, 128 48 46 9
  445.   combo 12, 127 19 60 43, size drop
  446.   box "Options", 13, 124 6 66 85
  447.   text "Message Mode", 14, 127 12 37 7
  448.   button "Ban List", 20, 127 59 60 9
  449.   button "Proxy Settings", 17, 127 69 60 9
  450.   button "Configure Output", 18, 127 79 60 9
  451. }
  452. dialog _google.proxy {
  453.   title "Google Search - Proxy Settings"
  454.   size -1 -1 164 19
  455.   option dbu
  456.   button "Done", 1, 62 10 37 9, ok cancel
  457.   text "Host:", 2, 0 1 14 8, right
  458.   edit "", 3, 15 0 102 10
  459.   text "Port:", 4, 118 1 13 8, right
  460.   edit "", 5, 132 0 31 10
  461.   check "Enabled", 6, 133 10 30 9
  462. }
  463. dialog _google.ban {
  464.   title "Google Search - Ban List"
  465.   size -1 -1 190 102
  466.   option dbu
  467.   combo 1, 1 1 188 92, size
  468.   button "Done", 2, 74 93 37 9, ok cancel
  469.   button "Add", 3, 0 93 16 9, default
  470.   button "Rem", 4, 17 93 16 9
  471. }
  472. dialog _google.output {
  473.   title "Google Search - Configure Output"
  474.   size -1 -1 190 102
  475.   option dbu
  476.   edit "", 1, 0 12 190 80, multi return autohs autovs vsbar
  477.   combo 2, 1 1 60 50, size drop
  478.   text "", 3, 136 3 51 8, hide
  479.   button "Done", 4, 74 93 37 9, ok cancel
  480. }
  481. on *:DIALOG:_google:*:*: {
  482.   if ($devent == init) {
  483.     if ($_ini(set, online)) { did -c $dname 15 }
  484.     did -a $dname 12 Channel
  485.     did -a $dname 12 Private
  486.     did -a $dname 12 Notice
  487.     did -c $dname 12 $iif($_ini(set, msgmode),$ifmatch,1)
  488.     did -ra $dname 3 $_ini(set, trigger)
  489.     _cmbload $dname 5 set networks
  490.     if ($_ini(set, all)) { did -c $dname 16 | did -b $dname 1,5,8,9,10,11 }
  491.     else { did -c $dname 5 1 }
  492.     if ($did($dname,5,1).text) {
  493.       _cmbload $dname 1 set . $+ $did($dname,5,1)
  494.     }
  495.   }
  496.   if ($devent == sclick) {
  497.     if ($did == 19) { run $did($dname,19).text }
  498.     if ($did == 17) { if (!$dialog(_google.proxy)) { dialog -ma _google.proxy _google.proxy } }
  499.     if ($did == 20) { if (!$dialog(_google.ban)) { dialog -ma _google.ban _google.ban } }
  500.     if ($did == 18) { if (!$dialog(_google.output)) { dialog -ma _google.output _google.output } }
  501.     if ($did == 12) { _ini set msgmode $did($dname,12).sel }
  502.     if ($did == 15) { _ini set online $did($dname,15).state }
  503.     if ($did == 16) {
  504.       _ini set all $did($dname,16).state
  505.       if ($did($dname,16).state == 1) {
  506.         did -u $dname 5
  507.         did -b $dname 1,5,8,9,10,11
  508.       }
  509.       else {
  510.         did -e $dname 1,5,8,9,10,11
  511.         if ($did($dname,5,1).text) {
  512.           did -c $dname 5 1
  513.           did -r $dname 1
  514.           _cmbload $dname 1 set . $+ $did($dname,5,1)
  515.         }
  516.         did -f $dname 5
  517.       }
  518.     }
  519.     if ($did == 5) && ($did($dname,5).sel isnum) {
  520.       did -r $dname 1
  521.       _cmbload $dname 1 set . $+ $did($dname,5,$did($dname,5).sel)
  522.     }
  523.     if ($did == 10) && (!$did($dname,5).sel) && ($did($dname,5).text) {
  524.       did -a $dname 5 $did($dname,5).text
  525.       did -c $dname 5 $did($dname,5).lines
  526.       _ini set networks $_cmbsave($dname,5)
  527.       did -r $dname 1
  528.       _cmbload $dname 1 set . $+ $did($dname,5).text
  529.       did -f $dname 5
  530.     }
  531.     if ($did == 11) && ($did($dname,5).sel isnum) {
  532.       var %s $did($dname,5).sel
  533.       did -d $dname 5 %s
  534.       _ini set networks $_cmbsave($dname,5)
  535.       did -r $dname 1
  536.       while (%s > 0) {
  537.         if ($did($dname,5,%s).text) {
  538.           did -c $dname 5 %s
  539.           _cmbload $dname 1 set . $+ $did($dname,5,%s)
  540.           break
  541.         }
  542.         dec %s
  543.       }
  544.       did -f $dname 5
  545.     }
  546.     if ($did == 8) && (!$did($dname,1).sel) && ($did($dname,1).text) && ($did($dname,5).seltext) {
  547.       var %t $did($dname,1).text
  548.       did -a $dname 1 $iif($left(%t,1) != $chr(35),$+($chr(35),%t),%t)
  549.       did -c $dname 1 $did($dname,1).lines
  550.       _ini set $+(.,$did($dname,5).seltext) $_cmbsave($dname,1)
  551.       did -f $dname 1
  552.     }
  553.     if ($did == 9) && ($did($dname,1).sel isnum) {
  554.       var %s $did($dname,1).sel
  555.       did -d $dname 1 %s
  556.       _ini set $+(.,$did($dname,5).seltext) $_cmbsave($dname,1)
  557.       while (%s > 0) {
  558.         if ($did($dname,1,%s).text) {
  559.           did -c $dname 1 %s
  560.           break
  561.         }
  562.         dec %s
  563.       }
  564.       did -f $dname 1
  565.     }
  566.   }
  567.   if ($devent == close) {
  568.     if ($did($dname,3).text) { _ini set trigger $iif($gettok($did($dname,3).text, 1, 32),$ifmatch,!google) }
  569.   }
  570. }
  571. on *:DIALOG:_google.proxy:*:*: {
  572.   if ($devent == init) {
  573.     did -a $dname 3 $_ini(set, host)
  574.     did -a $dname 5 $_ini(set, port)
  575.     if (!$_ini(set, proxy)) || (!$_ini(set, host)) || (!$_ini(set, port)) { did -b $dname 3,5 }
  576.     else { did -c $dname 6 }
  577.   }
  578.   elseif ($devent == sclick) {
  579.     if ($did == 6) {
  580.       _ini set proxy $did($dname,6).state
  581.       if ($did($dname,6).state == 1) { did -e $dname 3,5 }
  582.       else { did -b $dname 3,5 }
  583.     }
  584.   }
  585.   elseif ($devent == close) {
  586.     _ini set host $did($dname,3).text
  587.     _ini set port $did($dname,5).text
  588.   }
  589. }
  590. on *:DIALOG:_google.ban:*:*: {
  591.   if ($devent == init) {
  592.     var %i 1
  593.     while (%i <= $_ban(0)) {
  594.       did -a $dname 1 $_ban(%i)
  595.       inc %i
  596.     }
  597.   }
  598.   elseif ($devent == sclick) {
  599.     if ($did == 3) && ($did($dname, 1).text) {
  600.       did -a $dname 1 $did($dname, 1).text
  601.       did -c $dname 1 $did($dname,1).lines
  602.       did -f $dname 1
  603.     }
  604.     if ($did == 4) && ($did($dname, 1).sel) {
  605.       var %s $did($dname, 1).sel
  606.       did -d $dname 1 %s
  607.       while (%s > 0) {
  608.         if ($did($dname,1,%s).text) {
  609.           did -c $dname 1 %s
  610.           break
  611.         }
  612.         dec %s
  613.       }
  614.       did -f $dname 1
  615.     }
  616.     else { did -f $dname 1 }
  617.   }
  618.   elseif ($devent == close) {
  619.     _ini ban
  620.     var %i 1
  621.     while (%i <= $did($dname, 1).lines) {
  622.       _ini ban %i $did($dname, 1, %i)
  623.       inc %i
  624.     }
  625.   }
  626. }
  627. on *:DIALOG:_google.output:*:*: {
  628.   if ($devent == init) {
  629.     did -r $dname 1,2,3
  630.     did -a $dname 2 Result
  631.     did -a $dname 2 Info
  632.     did -a $dname 2 None
  633.     did -a $dname 2 Error
  634.     did -c $dname 2 1
  635.     var %i 1, %n $_mini(outp, 0, result_*)
  636.     while (%i <= %n) {
  637.       var %s = $_mini(outp, %i, result_*)
  638.       var %o = $+(%o,$_ini(outp, %s),$iif(%i != %n,$crlf))
  639.       inc %i
  640.     }
  641.     did -a $dname 1 %o
  642.     did -j $dname 1
  643.     did -c $dname 1 1
  644.     did -a $dname 3 $did($dname, 2).text
  645.   }
  646.   if (($devent == sclick) && ($did == 2) && ($did($dname, 1).edited)) || (($devent == close) && ($did($dname, 1).edited)) {
  647.     var %m = $+($lower($did($dname, 3).text),_*)
  648.     var %i 1
  649.     while (%i <= $_mini(outp, 0, %m)) {
  650.       _ini outp $_mini(outp, %i, %m)
  651.       inc %i
  652.     }
  653.     var %i 1
  654.     while (%i <= $did($dname, 1).lines) {
  655.       var %m = $+($lower($did($dname, 3).text),_,%i)
  656.       var %t = $did($dname, 1, %i).text
  657.       if (%t) {
  658.         _ini outp %m $_replace(%t)
  659.         inc %i
  660.       }
  661.       else { did -d $dname 1 %i }
  662.     }
  663.   }
  664.   if ($devent == sclick) {
  665.     if ($did == 2) {
  666.       did -ra $dname 3 $did($dname, 2).text
  667.       did -r $dname 1
  668.       var %i 1, %n $_mini(outp, 0, $+($did($dname,2).seltext,_*))
  669.       while (%i <= %n) {
  670.         var %s = $_mini(outp, %i, $+($did($dname,2).seltext,_*))
  671.         var %o = $+(%o,$_ini(outp, %s),$iif(%i != %n,$crlf))
  672.         inc %i
  673.       }
  674.       did -a $dname 1 %o
  675.       did -j $dname 1
  676.       did -c $dname 1 1
  677.     }
  678.   }
  679. }
Add Comment
Please, Sign In to add comment