registerModule( 'GoogleDefine', 'start' );
class GoogleDefine {
var $lang = 'pt_PT';
var $num = 1;
var $define = '';
function start() {
global $iBot;
if($iBot->args[0] == '!define') {
$word = $iBot->makeArgs( 1 );
$this->define( $word );
}
}
function define( $word = '' ) {
global $iBot;
if(empty( $word )) {
$iBot->msgChan( 'Usage: !define word' );
return;
}
$this->define = $word;
$this->num = empty( $this->num ) ? 1 : $this->num;
$data = $this->getData();
if(empty( $data )) {
return false;
}
$defined = $this->parse_data( $data );
if(!$defined) {
$msg = 'Nenhuma definição encontrada para '. $this->define;
$iBot->msgChan( $msg );
return;
}
$exp = explode( '', $defined );
$exp = explode( '
', $exp[1] );
$msg = $exp[0];
$exp = explode( '', $exp[1] );
$exp = explode( '', $exp[1] );
$url = $exp[0];
$msg = $this->unhtmlentities( $msg ).' ( '. $url .' )';
$iBot->msgChan( $msg );
}
function parse_data( $data ) {
$define = explode( '
', $data );
if(!empty( $define[1] )) {
$define = explode( '
', $define[1] );
preg_match_all( '//', $define[0], $links );
foreach( $links[1] as $link ) {
$pattern[] = "/". preg_quote( $link, '/' ) ."/";
$replace[] = "http://www.google.pt". $link;
}
$define = preg_replace( $pattern, $replace, $define[0] );
$define = explode( '', $define );
$defined = '';
for($x = 0; $x < $this->num; $x++ ) {
if(count( $define ) >= $this->num) {
$defined .= $define[$x];
}
}
if(empty( $defined )) {
foreach( $define as $value ) {
$defined .= $value;
}
}
return $defined;
}
return false;
}
function unhtmlentities ($string)
{
$trans_tbl = get_html_translation_table (HTML_ENTITIES);
$trans_tbl = array_flip ($trans_tbl);
return strtr ($string, $trans_tbl);
}
function getData () {
$fp = fsockopen( 'www.google.pt', 80, $errno, $errstr, 2 );
if(!$fp) {
die( "Não foi possivel conectar ao google $errno ($errstr)");
}
$header = 'GET /search?q=define%3A'. urlencode( $this->define ) .'&hl=pt-PT&oi=definel&defl='. $this->lang ." HTTP/1.1\r\n";
$header .= "Host: www.google.pt\r\n";
$header .= "User-Agent: {$_SERVER['HTTP_USER_AGENT']}\r\n";
$header .= "Referer: http://www.google.pt/webhp?hl=pt-PT&btnG=Pesquisar\r\n";
$header .= "Connection: close\r\n\r\n";
fwrite( $fp, $header );
$data = '';
while(!feof( $fp )) {
$data .= fgets( $fp, 4000 );
}
fclose( $fp );
return $data;
}
}