Array
(
    [0] => Array
        (
            [nombre] => lucky
            [texto] => Excelente tutorial! Me sirvio muchisimo. Se agradece el aporte!!
            [fecha] => 30 de agosto de 2011 - 20:59
        )

    [1] => Array
        (
            [nombre] => Fernando
            [texto] => Disculpar mi ignorancia, no se donde donde insertar la "simple llamada a URL" con el parametro de la ciudad. Lucky podrías mostrarme el ejmemplo funcionando.
Gracias mil. [fecha] => 21 de octubre de 2011 - 11:43 ) [2] => Array ( [nombre] => andresverjan [texto] => excelente.!!! muy bna ayuda [fecha] => 4 de diciembre de 2011 - 02:03 ) [3] => Array ( [nombre] => Daniel [texto] => ¿Como se puede implementar lo mismo pero usando PHP4.x ? ... debe haber alguna forma me imagino... pero no la he podido encontrar. Te agradecería que me orientes un poco al respecto.
Gracias y muy bueno el aporte, es excelente. [fecha] => 19 de diciembre de 2011 - 23:10 ) [4] => Array ( [nombre] => Nonaoco [texto] => no se nada de estos lenguajes pero si soy bueno siguiendo tutoriales, sera que puedes hacer uno de como implementarlo en una web desde 0 hasta su resultado final si no es mucha molestia!!!
Exitos con tu blog!! [fecha] => 21 de diciembre de 2011 - 18:34 ) [5] => Array ( [nombre] => Imaginanet [texto] => Hola Daniel,nn
PHP 4.x no tiene incluida la librería SimpleXML, por lo que deberás hacerlo a la vieja usanza: con XML Parser.
Un ejemplo orientativo lo puedes encontrar en esta web http://www.tierra0.com/2007/08/01/de-xml-a-array-con-php4/
Por otro lado Nonaoco, simplemente copia el código y pégalo en un archivo .php y estará funcionando. [fecha] => 22 de diciembre de 2011 - 08:02 ) [6] => Array ( [nombre] => Cris [texto] => Oye, me lo pone en inglés... ¿Cómo lo visualizo en español? [fecha] => 12 de enero de 2012 - 07:17 ) [7] => Array ( [nombre] => Imaginanet [texto] => No existe documentación de la API y aún probando con parámetros GET del tipo &l=es o &lc=es-ES no funciona.
Supongo que la diferencia está en el USER AGENT que le envías desde el fopen que PHP hace, así que o envías una cabecera especificando el idioma (por eso en el navegador aparece en español y desde PHP aparece en inglés) o traduces todos los textos de inglés y substituyes el texto por el correspondiente. [fecha] => 12 de enero de 2012 - 12:51 ) [8] => Array ( [nombre] => Eduardo [texto] => Pero como se haria enviando una cabecera? Es que esa parte de PHP no la domino [fecha] => 14 de enero de 2012 - 16:03 ) [9] => Array ( [nombre] => Imaginanet - Carlos [texto] => Podríamos usar por ejemplo la librería cURL:
$ch=curl_init();
curl_setopt($ch,CURLOPT_URL,'http://www.google.com/ig/api?weather=Cartagena');
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch,CURLOPT_HTTPHEADER,array('Accept-Language: es-es,es;q=0.8,en;q=0.5,en-us;q=0.3','Content-Type: text/xml;charset=utf-8'));
$raw_xml = curl_exec($ch);
curl_close($ch);
$xml = simplexml_load_string(utf8_encode($raw_xml)); [fecha] => 16 de enero de 2012 - 15:58 ) )

Miércoles, 16 de febrero de 2011

El tiempo en tu web mediante el API Google Weather

categoría: PHP
Mediante Google Weather podemos mostrar un informe meteorológico para diferentes ciudades de manera personalizada del tiempo actual y una predicción de los días próximos.

La llamada a Google Weather es una simple llamada a una URL pasando el parámetro de ciudad, por ejemplo http://www.google.com/ig/api?weather=Madrid devolviéndonos un XML (podemos probar a poner esta dirección en un navegador web para hacernos una idea).

El siguiente paso sería procesar el XML devuelto y mostrar los datos que nos interesen. Por ejemplo vamos a mostrar un código en PHP para el API de Google Weather usando la librería SimpleXML:

<?php
	// Proceso
	$ciudad = "Barcelona";

	$xml = simplexml_load_file("http://www.google.com/ig/api?weather=".$ciudad);

	if($xml===false) { // Fallo al contactar con Google
			return null;
	}

	$current = $xml->xpath("/xml_api_reply/weather/current_conditions"); 
	if(count($current)==0) { // Ciudad errónea
			return null;
	}

	$temperatura_centigrados = $current[0]->temp_c["data"];
	$humedad = $current[0]->humidity["data"];
	$condiciones = $current[0]->condition["data"];
	$icono = $current[0]->icon["data"];
	
	// Vista
	echo 'Temperatura: '.$temperatura_centigrados.'&deg;<br/>';
	echo $humedad.'<br/>';
	echo 'Condiciones: '.$condiciones.'<br/>';
	echo '<img src="http://www.google.com/'.$icono.'" alt="'.$condiciones.'" title="'.$condiciones.'"/>"';
	
?>

Por último, para hacer nuestra aplicación resistente a fallos, recomendamos ejecutar este script desde una llamada AJAX, ya que si Google fallara o tardara en responder, nuestra página tardaría o fallaría al servirse.

10 comentarios:

Excelente tutorial! Me sirvio muchisimo. Se agradece el aporte!!
comentario de lucky - 30 de agosto de 2011 - 20:59
Disculpar mi ignorancia, no se donde donde insertar la "simple llamada a URL" con el parametro de la ciudad. Lucky podrías mostrarme el ejmemplo funcionando.
Gracias mil.
comentario de Fernando - 21 de octubre de 2011 - 11:43
excelente.!!! muy bna ayuda
comentario de andresverjan - 4 de diciembre de 2011 - 02:03
¿Como se puede implementar lo mismo pero usando PHP4.x ? ... debe haber alguna forma me imagino... pero no la he podido encontrar. Te agradecería que me orientes un poco al respecto.
Gracias y muy bueno el aporte, es excelente.
comentario de Daniel - 19 de diciembre de 2011 - 23:10
no se nada de estos lenguajes pero si soy bueno siguiendo tutoriales, sera que puedes hacer uno de como implementarlo en una web desde 0 hasta su resultado final si no es mucha molestia!!!
Exitos con tu blog!!
comentario de Nonaoco - 21 de diciembre de 2011 - 18:34
Hola Daniel,nn
PHP 4.x no tiene incluida la librería SimpleXML, por lo que deberás hacerlo a la vieja usanza: con XML Parser.
Un ejemplo orientativo lo puedes encontrar en esta web http://www.tierra0.com/2007/08/01/de-xml-a-array-con-php4/
Por otro lado Nonaoco, simplemente copia el código y pégalo en un archivo .php y estará funcionando.
comentario de Imaginanet - 22 de diciembre de 2011 - 08:02
Oye, me lo pone en inglés... ¿Cómo lo visualizo en español?
comentario de Cris - 12 de enero de 2012 - 07:17
No existe documentación de la API y aún probando con parámetros GET del tipo &l=es o &lc=es-ES no funciona.
Supongo que la diferencia está en el USER AGENT que le envías desde el fopen que PHP hace, así que o envías una cabecera especificando el idioma (por eso en el navegador aparece en español y desde PHP aparece en inglés) o traduces todos los textos de inglés y substituyes el texto por el correspondiente.
comentario de Imaginanet - 12 de enero de 2012 - 12:51
Pero como se haria enviando una cabecera? Es que esa parte de PHP no la domino
comentario de Eduardo - 14 de enero de 2012 - 16:03
Podríamos usar por ejemplo la librería cURL:
$ch=curl_init();
curl_setopt($ch,CURLOPT_URL,'http://www.google.com/ig/api?weather=Cartagena');
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch,CURLOPT_HTTPHEADER,array('Accept-Language: es-es,es;q=0.8,en;q=0.5,en-us;q=0.3','Content-Type: text/xml;charset=utf-8'));
$raw_xml = curl_exec($ch);
curl_close($ch);
$xml = simplexml_load_string(utf8_encode($raw_xml));
comentario de Imaginanet - Carlos - 16 de enero de 2012 - 15:58

deja tu comentario:

Enviar