« # »

Wikipedify: Obtén la URL de cualquier cosa de la wikipedia

Estoy frikeando de lo lindo y una de las necesidades que he tenido últimamente ha sido la de obtener la ruta absoluta de algo que se encuentra en la wikipedia.
Por ejemplo en el projekPoster necesito saber qué página es la de la wikipedia para los nombres que añade la gente, pues utilizando la función wikipedify y me devuelve la ruta de la página del nombre correctamente:

Busco Charles Manson y me devuelve http://es.wikipedia.org/wiki/Charles_Manson.

Pues nada, ya le encontraréis la utilidad más allá de la que yo le he encontrado :)

PHP:
  1. <?
  2.     function wikipedify($nombre){
  3.         $server = "es.wikipedia.org";
  4.         $port = "80";
  5.         $req_page = "/wiki/Especial:Buscar?search=".rawurlencode($nombre);
  6.         $h="";
  7.         $h .= "GET $req_page HTTP/1.1"."\r\n";
  8.         $h .= "Accept: */*"."\r\n";
  9.         $h .= "Accept-Language: en-us"."\r\n";
  10.         $h .= "Pragma: no-cache;"."\r\n";
  11.         $h .= "User-Agent: Mozilla/5.0 (Windows; U; Windows) Firefox/2.0.0.16"."\r\n";
  12.         $h .= "Host: $server"."\r\n";
  13.         $h .= "Connection: Close"."\r\n\r\n";
  14.         $r="";
  15.  
  16.         $sh = fsockopen($server, $port, $err, $err_otp, 15);
  17.  
  18.         if(!$sh) return false;
  19.  
  20.         fputs($sh,$h);
  21.         $url=false;
  22.  
  23.         while(!feof($sh)){
  24.             $ara=explode(":",fgets($sh, 1024),2);
  25.             if($ara[0]=="Location"){
  26.                 $url=$ara[1];
  27.             }
  28.         }
  29.         fclose($sh);
  30.         return $url;
  31.     }
  32. ?>

Comentarios

  1. josepzin | marzo 3rd, 2009 | 1:46 pm

    ¿Como va ese experimiento posteril?

  2. Emiliano Velasco | marzo 3rd, 2009 | 2:17 pm

    Hola Marc, sí, yo estaba intentando hacerlo, pero sin éxito.

    Por suerte haz llegado tú y… :P

    Mi pregunta es también cómo extraer una breve descripción además del enlace.

    Si pudieras ampliar el artículo con esa información o comentar un poquito el método, te invitaria 2 cervezas, no una, sino 2 :P

    Un abrazo Marc!

  3. marc | marzo 5th, 2009 | 2:26 am

    Jose, pues ya lleva más de 4000 personajes (Algunos repetidos, pero falta muy poco :)).

    Emi, veamos … Wikipedia tiene una estructura fija de datos… bueno, a ver si mañana por la tarde te echo un mano que hoy no he podido.

    saludos!

  4. Rick | marzo 16th, 2009 | 12:14 pm

    Gracias por la función! Nunca se sabe cuando te puede venir bien :)

    Yo le he añadido un parametro más (opcional) para que escupa la URL o el enlace, tal que así:

    if ($link) { return “$nombre“; } else { return $url; }

    Saludos!

  5. Rick | marzo 16th, 2009 | 12:48 pm

    Bueno, se me ha comido el código el WP, pero la idea se entiende, no? :)

Deja un comentario

(*: Datos necesarios para dejar un comentario)

Get Adobe Flash playerPlugin by wpburn.com wordpress themes