Foros del Web » Programando para Internet » PHP »

Búsqueda en google a traves del irc con PHP

Estas en el tema de Búsqueda en google a traves del irc con PHP en el foro de PHP en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 18/08/2004, 11:40
 
Fecha de Ingreso: agosto-2004
Mensajes: 36
Antigüedad: 19 años, 8 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 ($chCURLOPT_FILE$fp);
curl_setopt ($chCURLOPT_HEADER0);

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($conexion4096));

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

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

fputs($conexion,"privmsg $canal :$buf[$i]\n\n"); }}}
// ENVIAR UN MAIL
if (eregi("!mail",$buffer) && substr($buffer011) == ":^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.
  #2 (permalink)  
Antiguo 18/08/2004, 18:19
Avatar de sdf23  
Fecha de Ingreso: diciembre-2002
Mensajes: 297
Antigüedad: 21 años, 4 meses
Puntos: 0
Galactus De Spa?
__________________

la vida es bella cuando no es culera
  #3 (permalink)  
Antiguo 19/08/2004, 01:58
 
Fecha de Ingreso: agosto-2004
Mensajes: 36
Antigüedad: 19 años, 8 meses
Puntos: 0
¿Perdón? Si preguntas si soy español, la respuesta es si... aunque la pregunta es un poco ambigua.

De todas formas resolví el problema para hacer las búsquedas usando varias palabras de la siguiente forma:

Código PHP:
$cadena strrchr($buffer'!busca ');
$cadena substr($cadena730);
$cadena eregi_replace(" ""+"$cadena);
busca ($cadena); 
La clave estaba en sustitutir los espacios que habia entre las palabras por "+".

Si sabeis de algún sitio donde pueda colocar el artículo que estoy escribierdo explicando las funciones y programación del bot así como las mejoras que le voy haciendo... Parece que no es muy apreciado donde lo tengo colocado.
__________________
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.

Última edición por E*M*P*I*C*A*L; 19/08/2004 a las 04:21
  #4 (permalink)  
Antiguo 19/08/2004, 06:27
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Entoces ...

Esto:
$cadena = eregi_replace(" ", "+", $cadena);

Es equivalente a:
$cadena = urlencode($cadena); // o rawurlencode()

Y más efectivo, por qué no sólo tiene en cuenta los espacios par transformarlos en + (o en %20) sino que también convierte caracteres acentuados . .comillas y otros en el estandar para el URL. (CGI)

Un saludo,
  #5 (permalink)  
Antiguo 19/08/2004, 09:45
 
Fecha de Ingreso: agosto-2004
Mensajes: 36
Antigüedad: 19 años, 8 meses
Puntos: 0
Gracias cluster, funciona perfecto.

Si quereis echarle un vistazo podeis verlo en esta otra web a la que también lo subí.

http://foro.elhacker.net/index.php?topic=38393.new#new
__________________
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.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:44.