Ver Mensaje Individual
  #1 (permalink)  
Antiguo 18/08/2004, 11:40
E*M*P*I*C*A*L
 
Fecha de Ingreso: agosto-2004
Mensajes: 36
Antigüedad: 22 años, 2 meses
Puntos: 0
Búsqueda en google a traves del irc con PHP

Hola, ando programando un bot de irc que haga las 4 tonterias de siempre y se me ocurrio que podría realizar busquedas en google y mostrar las urls que encuentre como he visto otras tantas veces en el irc. El problema esta que solo funciona si pongo una sola palabra, como por ejemplo:

<^Galactus^> !busca php
<[K7]> http://www.php.net/
<[K7]> http://www.phpbuilder.com/
<[K7]> http://www.php.com/
<[K7]> http://www.hotscripts.com/PHP/
<[K7]> http://www.grisoft.com/

Código PHP:
#!/usr/bin/php
<?php
/*
Nombre: bot.php
Versión: 0.2
Autor: Empical
Fecha: 17 de Agosto del 2004
Características: Realiza una conexión estable por socket con un servidor de irc en internet
Descripción: Este bot para irc puede realizar las siguiente tareas:
        - Escritura en un archivo del buffer
        - Imprimir la hora con la orden !time
        - Imprimir su versión con la orden !ver
        - Desconexión del servidor con la orden !quit
        - Imprime información del sistema con la orden !info
        - Envia un mail con la orden !mail
        - Realiza una busqueda en google con la orden !buscar
*/
// DEFINIMOS VARIABLES DE CONEXIÓN
$servidor="irc.irc-hispano.org";
$puerto="6667";
$nick="[K7]";
$name="pepe";
$canal="#pruebasbot";
$realname="pepe";
$quit="pepe";
$header = "From: [email][email protected][/email]";
$version = "0.2";
$a = 0;

//FUNCIÓN DE BUSQUEDA
function busca($cadena)
{
$ch = curl_init ("http://www.google.es/search?hl=es&ie=UTF-8&q=$cadena&btnG=B%C3%BAsqueda+en+Google&meta=");
$fp = fopen ("busca.txt", "w");

curl_setopt ($ch, CURLOPT_FILE, $fp);
curl_setopt ($ch, CURLOPT_HEADER, 0);

curl_exec ($ch);
curl_close ($ch);
fclose ($fp);
}

// FUNCION DE REGISTRO DEL BUFFER
function registro ($registro)
    {
    
$fp = fopen ("registro.txt", "a");
    
fputs ($fp, $registro);
    
fclose($fp);
    }

set_time_limit(0);

$conexion = fsockopen($servidor, $puerto);

if (!
$conexion){
    echo 
"No se pudo conectar a $servidor por el puerto $puerto";
    }
    else {
    echo 
"conectando...\n\n";
    
fputs($conexion, "nick $nick\n\n");
    
fputs($conexion, "USER $nick empical2k4 empical2k4 :$name\n\n");
    }
    
$info = exec("uname -smon");
while (!
feof($conexion)){

$buffer = trim(fgets($conexion, 4096));

print 
date("[d/m @ H:i]")."<- ".$buffer ."\n";
if(
substr($buffer, 0, 6) == 'PING :') {
fputs($conexion, 'PONG :'. substr($buffer, 6)."\n\n");
if (
$a == 0){
fputs($conexion, "JOIN $canal\n\n");
$a++;
}
registro ($buffer);
}
elseif (
$old_buffer != $buffer) {

// TIEMPO
if (eregi("!time",$buffer) && substr($buffer, 0, 11) == ":^Galactus^") {
          
fputs($conexion,"privmsg $canal :time -> ".date("H:i:s",time())."\n\n"); } 
// VERSION
if (eregi("!ver",$buffer) && substr($buffer, 0, 11) == ":^Galactus^") {
          
fputs($conexion,"privmsg $canal :EpiBot Versión 0.1\n\n"); }
// QUITAR
if (eregi("!quit",$buffer) && substr($buffer, 0, 11) == ":^Galactus^") {
          
fputs($conexion,"quit :EpiBot Versión $version\n\n"); }
// INFO
if (eregi("!info",$buffer) && substr($buffer, 0, 11) == ":^Galactus^") {
          
fputs($conexion,"privmsg $canal :$info\n\n"); }
// BUSQUEDA EN GOOGLE
if (eregi("!busca",$buffer) && substr($buffer, 0, 11) == ":^Galactus^") {
                    
$cadena = strrchr($buffer, '!busca ');
$cadena = substr($cadena, 7, 30);
                    
busca ($cadena);

$buf = file_get_contents("busca.txt");
$buf = strip_tags($buf, "<a></a>");
$buf = split("<a href=", $buf);
$a = count($buf);
for (
$i=0;$i<$a;$i++){
if (!
eregi("www",$buf[$i])){
    unset (
$buf[$i]);}
if (
eregi("google",$buf[$i])){
    unset (
$buf[$i]);}
    if (
eregi("/preferences",$buf[$i])){
    unset (
$buf[$i]);}
    if (
eregi("pdf",$buf[$i])){
    unset (
$buf[$i]);}
if (
eregi("<br>",$buf[$i])){
    unset (
$buf[$i]);}
    if (
eregi("/url",$buf[$i])){
    unset (
$buf[$i]);}
$buf[$i] = eregi_replace(">", " ", $buf[$i]);
$buf[$i] = eregi_replace(">>", " ", $buf[$i]);
$buf[$i] = eregi_replace("</a", " ", $buf[$i]);
$buf[$i] = strrev($buf[$i]);
$buf[$i] = strstr($buf[$i], " /");
$buf[$i] = strrev($buf[$i]);
if (
strlen($buf[$i]) != 0){
                    
$buf[$i] = substr($buf[$i], 0, 100);

fputs($conexion,"privmsg $canal :$buf[$i]\n\n"); }}}
// ENVIAR UN MAIL
if (eregi("!mail",$buffer) && substr($buffer, 0, 11) == ":^Galactus^") {
$mail = split('"', $buffer);
//!mail to:"[email protected]" subj:"cualquiera" mem:"cualquiera"
if (!mail($mail[1], $mail[3], $mail[5], $header)){
// habría que comprobar si las variables están definidas con isset()
          
fputs($conexion,"privmsg $canal :No se pudo enviar el email\n\n"); }
          else {
          
fputs($conexion,"privmsg $canal :El email se envio correctamente\n\n");}
          }
}
} 
?>
__________________
Como aquel que calla otorga y aunque la ignorancia es sorda pude levantar la voz, más fuerte que los ladridos de los perros consentidos y que la voz del pastor.