Ejemplo de Google API SOAP

Google SOAP Search API permite a los desarrolladores consultar entre los millones de páginas web indexadas por Google directamente desde tu aplicación usando Web Services. Para ello usa los estándar SOAP y WDSL.

api.jpg

El servicio de Google SOAP Search API es gratuito pero debes registrarte para obtener un key con el cual podras hacer tus consultas hasta un máximo de 1000 consultas por dia.

En nuestro caso usaremos PHP como plataforma de desarrollo e implementaremos un buscador de MP3 basados en reglas de búsqueda. Para poder conectarnos mediante Web Services utilizaremos la librería NuSOAP lo cual nos brindará todas los métodos necesarios para consultar los datos.

Google brinda tres métodos para consultar: Búsquedas, Búsquedas en el cache de Google y Búsqueda Ortográficas. en nuestro caso utilizaremos las búsqueda normal. Para una guia completa de métodos y parámetros puedes visitar Google SOAP Search API Reference.

Para comenzar declaramos nuestras variables e instanciamos al objeto soapclient para conectarnos como cliente al Web Service de Google.

include('nusoap.php');
// Definimos variables
$apikey = "tu_numero_key_google";
$start = $_GET['start'];
$query = $_GET['query'];
// creamos objetos cliente
$sclient = new soapclient('http://api.google.com/search/beta2');
$soptions = 'urn:GoogleSearch';

Luego definimos una función para hacer la consulta en donde creamos el array de parámetros que solicita el servicio. Nótese que $q es la consulta que hacemos en donde hemos agregado una cadena con parámetros de búsqueda avanzada que soporta google el cual filtrará las búsquedas para devolvernos listados de archivos MP3.

function doSearch( $query, $type, $key, $start, &$ret ) {
   global $sclient;
   global $soptions;
   $q = 'intitle:index.of "mp3" +"';
   $q.= $query;
   $q.= '" -htm -html -php -asp "Last Modified"';

   $params = array(
      'key' => $key, 
      'q' => $q, 
      'start' => $start, 
      'maxResults' => 10,
      'filter' => false, 
      'restrict' => '',
      'safeSearch' => false,
      'lr' => '',
      'ie' => '',
      'oe' => ''
   );

   $ret = $sclient->call('doGoogleSearch', $params, $soptions);
   $err = $sclient->getError();

   if ($err) {
      print("
Ocurrio un Error!
"); print("Error: $err
\n"); return false; } return true; }

Lo siguiente es crear la función para llamara al buscador y verificar que se encuentren resultados y devolver los mensajes de error.

function search( $query, $type, $key, $start, &$ret ) {
    $result = false;
    $max_retries = 5;
    $retry_count = 0;

    while( !$result && $retry_count < $max_retries ) {
		$result = doSearch($query, $type, $key, $start, $ret);
		if(!$result) {
			print( "Attempt $retry_count failed.
\n"); } $retry_count++; } if(!$result) { print("
La conexión fallo.
\n"); } return $result; }

Finalmente necesitamos crear un formulario para ingresar nuestra consulta y luego mostrar los resultados de la búsqueda.

<form method="get" action="index.php">
<input name="query" type="text" value="<?php echo $query; ?>">
<input name="buscar" type="submit" value="Buscar">
</form>
if( $query != "" ) {
   $query = stripslashes($query);
   if(doSearch( $query, $type, $apikey, $start, $ret )) {
      $count = $ret['estimatedTotalResultsCount'];
      $secs = round($ret['searchTime'],2);
      $min = $ret['startIndex'];
      $max = $ret['endIndex'];
      if ($max) {
         foreach($ret['resultElements'] as $result) {
            echo $result['title']."
"; echo $result['snippet']."
"; echo ""; echo $result['URL']; echo ""; } } } }

Con esto ya tenemos listo, ahora se le pueden agregar opciones como escribir el número de resultados, paginación de resultados y desde luego agregarle estilos y ponerle un diseño. Para ello he trabajado y he puesto una versión completa la cual puedes usar como buscador de mp3.

gmp3search.gif

Finalmente te dejo los archivos fuente para que los revises, en estos solo debes ingresar tu número Key de Google para que funcione.

Comentarios Total 9 comentarios

unijimpe » Blog Archive » Buscador MP3
Publicado: 01/11/2006 6:35 pm

[…] En un post anterior hablamos de implementar un buscador usando el Google API SOAP mediante el cual podemos realizar búsquedas en la base de datos de Google directamente sin la necesidad de acceder a su pagina web si no mediante WebServices. […]

michael
Publicado: 23/09/2007 9:53 am

bueno esta bonito el buscador pero no podras crearte un buscador que busque musicas que tenga alojado en mi base de datos para asi pueda buscar musicas alojada en mi host????

Kike
Publicado: 16/10/2007 10:33 pm

He probado tu codigo para ahcer el buscador de MP3 pero no me funciona me sale este error.

urrio un Error!
Error: SOAP-ENV:Server: Exception from service object: Invalid authorization key: ABQIAAAAYUSbQz1OVdyzDa2sjbaF3hRQ2maKcF6EFVXnXaK52_yVf8XPkxS1D9OAy1mkTLrOvquyD_o0AxsQ0w

pero yo he probado el key que me da google y no tiene problemas. no se que puede ocurrir si tienes alguna idea te lo agradesco de antemano.

Kike
Publicado: 23/10/2007 8:33 pm

porfavor sigo con el miso problema quien me puede ayudarrrrrrrrrr

Ocurrio un Error!
Error: SOAP-ENV:Server: Exception from service object: Invalid authorization key: ABQIAAAAYUSbQz1OVdyzDa2sjbaF3hRTYSz9uTy_rsHioqr-BAAtzTWePRQpU7oWfuKw2QUQQrfBH4eHXOZzxg

unijimpe
Publicado: 24/10/2007 7:40 am

Ojo que Google ha quitado el soporte para Google API SOAP y solo los que registraron con anterioridad para obtener un key puedes utilizarlo pero esto ya dejará de funcionar para todos dentro de poco tiempo.

sulivan
Publicado: 09/11/2007 4:20 pm

existe una manera con Google AJAX Search API ??

sgwd
Publicado: 20/11/2007 8:16 am

es un tema interesante que quisiera desarrollar y coincido con la pregunta de sulivan sobre si se puede implementar algo similar con «Google AJAX Search API»?

Luiz
Publicado: 13/03/2008 4:33 pm

Kise poner el buscador pero me dio este error:

Ocurrio un Error!
Error: HTTP Error: Couldn’t open socket connection to server http://api.google.com/search/beta2 prior to connect(). This is often a problem looking up the host name.

david
Publicado: 23/08/2008 11:30 am

Error: HTTP Error: Couldn’t open socket connection to server http://api.google.com/search/beta2 prior to connect(). This is often a problem looking up the host name.

 

Comentar

En este blog los comentarios están moderados, serán mostrados cuando el administrador los apruebe. Por favor, evita comentarios ofensivos u obscenos por que no serán aprobados.
Si deseas publicar código fuente debes hacerlo entre las etiquedas <code> y </code>, además debes reemplazar los carácteres < por &lt; y > por &gt;.

(Requerido)

(Requerido, no será publicado)

(Requerido)

(Tags aceptados: <a> <em> <strong> <code> <ul> <li>)