Advanced Google Bot Search

Moderator: GeekShed.Net Staff

Advanced Google Bot Search

Postby Ford » Sun Mar 28, 2010 8:25 pm

This script will do web, local, video, news, books, images, and patent searches.
Triggers are as follows:
(!trigger for notice user - @trigger for message channel.)
  • !google = web search
  • !glocal = local search
  • !gvideo = video search
  • !gnews = news search
  • !gbooks = book search
  • !gimages = image search
  • !gpatent = patent search
  • !ghelp = trigger/syntax help

/google alias flags are as follows:
  • /google -local = local search
  • /google -video = video search
  • /google -news = news search
  • /google -books = book search
  • /google -images = image search
  • /google -patent = patent search

Getting the script running:
  • First: Copy this code, paste it into a new remote and save it with a unique filename.
  • Second: Review the Simple Setup portion of the script and make any changes to the script you feel necessary.
  • Third: Right click the channel or status, scroll to Advanced Google and turn on the script.
  • Last: Go to each channel that you want to run this script in and type +google .(you must have ops or higher to activate the script in a channel)(*Note* -google will deactivate the script in a channel.)

Example Output:
20:06:14 <Ford> @gnews final 4
20:06:15 <Mind|Force> Searching Google........
20:06:16 <Mind|Force> Google Butler did it beats KSU 63-56 to make Final Four http://tinyurl.com/yekmz79
20:06:17 <Mind|Force> Google Butler Goes Home to Indianapolis for Final Four http://tinyurl.com/yd5f2e9
20:06:17 <Mind|Force> Google But on Saturday Butler earned another title: Final Four team. The fifth-seeded Bulldogs defeated second-seeded Kansas State 63-56 in Saturday's West ... http://tinyurl.com/yak2grf
20:06:19 <Mind|Force> Google Butler Beats Kansas State Is First Team to Reach Final Four http://tinyurl.com/ybesm4b

Code: Select all
;Advanced Google Search by Ford_Lawnmower irc.GeekShed.net #Script-Help
alias -l GetAdvancedGoogle {
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  ;;;;;;Start of Simple Setup;;;;;;
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  ;;Change %MaxResults(below) to get a different number of results.(must be a number between 1 and 9)
  var %MaxResults 4
  ;;Change %GoogleLogo(below) to change the logo at the start of each line.(You cannot remove this, only change)
  var %GoogleLogo 12G04o08o14g09l04e
  ;;Change %NameColor(below) to change the color of the results description.(You cannot remove this, only change)
  var %NameColor 04
  ;;Change %LinkColor(below) to change the color of the results link.(You cannot remove this, only change)
  var %LinkColor 
  ;;Change %UseTinyURL(below) if you don't want links converted to tinyurl. Valid numbers are: 1 for convert and 0 for don't convert.
  var %UseTinyURL 1
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  ;;;;;;;Do not leave any of these variables blank!!!;;;;;;
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; 
  ;;;;;;End of Setup;;;;;;
  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  $1-2 Searching Google........
  var %sockname $+(AdvancedGoogle,$network,$2,$ticks)
  sockopen %sockname ajax.googleapis.com 80
  sockmark %sockname $1-2 %MaxResults %GoogleLogo %NameColor %LinkColor %UseTinyURL $+(/ajax/services/search/,$3,?v=1.0&rsz=large&q=,$urlencode($4-))
}
menu Channel,Status {
  .$iif($group(#AdvancedGoogle) == On,$style(1)) AdvancedGoogle Trigger
  ..$iif($group(#AdvancedGoogle) == On,$style(2)) On: .enable #AdvancedGoogle
  ..$iif($group(#AdvancedGoogle) == Off,$style(2)) Off: .disable #AdvancedGoogle
}
#AdvancedGoogle on
On $*:Text:/^(\+|-|!|@)G(oogle|local|video|news|books|images|patent|help).*/Si:#: {
  var %action $regml(1), %type $regml(2)
  if (%action isin +-) && ($regex($nick($chan,$nick).pnick,/(!|~|&|@)/)) {
    if (%action == +) {
      if ($istok(%AdvancedGoogleChanList,$+($network,$chan),32)) { .msg $chan $nick $chan is already running the AdvancedGoogle script }
      else {
        .enable #AdvancedGoogle
        Set %AdvancedGoogleChanList $addtok(%AdvancedGoogleChanList,$+($network,$chan),32)
        .msg $chan $nick has activated the AdvancedGoogle script for $chan .
      }
    }
    else {
      if (!$istok(%AdvancedGoogleChanList,$+($network,$chan),32)) { .msg $chan $nick $chan is not running the AdvancedGoogle script }
      else {
        Set %AdvancedGoogleChanList $remtok(%AdvancedGoogleChanList,$+($network,$chan),1,32)
        .msg $chan $nick has deactivated the AdvancedGoogle script for $chan .
      }
    }
  }
  elseif (!$timer($+(AdvancedGoogle,$network,$nick))) && ($istok(%AdvancedGoogleChanList,$+($network,$chan),32)) {
    .timer $+ $+(AdvancedGoogle,$network,$nick) 1 6 noop
    var %method $iif(%action == !,.notice $nick,$iif($regex($nick($chan,$nick).pnick,/(!|~|&|@|%)/),.msg $chan,.notice $nick))
    if (%type == help) || (!$2) { AdvancedGoogleHelp %method %action }
    else { GetAdvancedGoogle %method $replace(%type,oogle,web) $2- }
  }
}
#AdvancedGoogle end
alias Google {
  if ($istok(-local -video -news -books -images -patent,$1,32)) { GetAdvancedGoogle echo -a $mid($1,2) $2- }
  else { GetAdvancedGoogle echo -a web $1- }
}
On *:sockopen:AdvancedGoogle*: {
  if (!$sockerr) {
    hmake $sockname
    hadd $sockname max $gettok($sock($sockname).mark,3,32)
    hadd $sockname urlcount 1
    hadd $sockname itemcount 1
    sockwrite -nt $sockname GET $gettok($sock($sockname).mark,8,32) HTTP/1.1
    sockwrite -n $sockname Host: ajax.googleapis.com
    sockwrite -n $sockname User-Agent: Opera 9.6
    sockwrite -n $sockname $crlf
  }
  else { echo -st Socket Error $nopath($script) | sockclose $sockname | return }
}
On *:sockread:AdvancedGoogle*: {
  if ($sockerr) { echo -st Socket Error $nopath($script) | sockclose $sockname | return }
  else {
    sockread &AdvancedGoogle
    var %count 1
    while ($hget($sockname,max) >= $hget($sockname,urlcount)) && ($bintween(&AdvancedGoogle,"url":",",%count)) {
      hadd $sockname $+(url,$hget($sockname,urlcount)) $dehex($ifmatch)
      hinc $sockname urlcount     
      inc %count
    }
    %count = 1
    while ($hget($sockname,max) >= $hget($sockname,itemcount)) && ($bintween(&AdvancedGoogle,"content":",",%count) || $bintween(&AdvancedGoogle,"titlenoformatting":",",%count)) {
      hadd $sockname $+(item,$hget($sockname,itemcount)) $replace($fix&#($dehex($ifmatch)),<b>,,</b>,)
      hinc $sockname itemcount     
      inc %count
    }
    if ($matchtok($hget($sockname,itemcount) $hget($sockname,urlcount),$hget($sockname,max),0,32) > 1) || ($bintween(&AdvancedGoogle,"responseStatus",200,1)) { clearhash }
  }
}
On *:sockread:AdvancedGoogle*: { hfree $+(AdvancedGoogle,$sockname) }
alias -l clearhash {
  tokenize 32 $sock($sockname).mark
  var %start 1, %matches $hfind($sockname,item[1-9],0,r)
  if (%matches) {
    while (%start <= %matches) {
      if ($7) { Tiny $1-2 $hget($sockname,$+(url,%start)) $4 $+($5,$hget($sockname,$+(item,%start))) $+(,$6,$hget($sockname,$+(url,%start)),) }
      else { $1-2 $4 $+($5,$hget($sockname,$+(item,%start))) $+(,$6,$hget($sockname,$+(url,%start)),) }
      inc %start
    }
  }
  else { $1-2 $4 Sorry, No results were found for your search. If you are having trouble type !ghelp }
  hfree $sockname
  sockclose $sockname
  return
}
alias -l AdvancedGoogleHelp {
  $1-2 Google Triggers are: $+($3,google) $+($3,glocal) $+($3,gvideo) $+($3,gnews) $+($3,gbooks) $+($3,gimages) $+($3,gpatent)
  $1-2 Google Searches must include at least one search word: Example $+($3,gnews) Obama
}
alias -l urlencode return $regsubex($1-,/([^a-z0-9])/ig,% $+ $base($asc(\t),10,16,2))
alias -l fix&# { return $replace($regsubex($1-,/&#([0-9]{2});/g,$chr(\t)),&quot;,",&amp;,&) }
alias -l bintween {
  var %count = 1, %mark = 0, %mark2 = 0
  while (%count <= $4) {
    if ($bfind($1, %mark2, $2).text) {
      %mark = $calc($bfind($1, %mark2, $2).text + $len($2))
      if ($bfind($1, %mark, $3).text) {
        %mark2 = $bfind($1, %mark, $3).text
      }
      else { return 0 }
    }
    else { return 0 }
    inc %count
  }
  return $bvar($1, $iif(%mark > 0,%mark,1), $calc(%mark2 - %mark)).text
}
alias -l dehex { return $regsubex($1-,/\\u([a-f0-9]{4})|\%([a-f0-9]{2})/gi,$chr($base(\t,16,10))) }
alias -l Tiny {
  var %sockname $+(GTinyUrl,$network,$ticks,$r(1,$ticks))
  sockopen %sockname tinyurl.com 80
  sockmark %sockname $1-2 $+(/create.php?url=,$3) $3 $4-
}
On *:sockopen:GTinyUrl*: {
  if (!$sockerr) {
    sockwrite -nt $sockname GET $gettok($sock($sockname).mark,3,32) HTTP/1.0
    sockwrite -n $sockname Host: tinyurl.com
    sockwrite -n $sockname $crlf
  }
  else { echo -st Socket Error $nopath($script) | sockclose $sockname | return }
}
On *:sockread:GTinyUrl*: {
  if ($sockerr) { echo -st Socket Error $nopath($script) | sockclose $sockname | return }
  else {
    var %Tiny | sockread %Tiny
    if ($regex(%Tiny,/<blockquote><b>(.*)<\/b><br><small>/i)) {
      tokenize 32 $sock($sockname).mark
      $1-2 $replace($5-,$4,$regml(1))
      sockclose $sockname
      return
    }
  }
}
On *:Unload: { unset %AdvancedGoogleChanList* | hfree -w AdvancedGoogle* }
Ford
 
Posts: 48
Joined: Wed Oct 28, 2009 1:01 am

Return to Script help

Who is online

Users browsing this forum: No registered users and 17 guests

cron