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( '', $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; } }