martes 29 de julio de 2008

Consumiendo Yahoo! Weather desde PHP

Esta vez me tocó mostrar el clima actual de mi ciudad desde un sitio web.
Luego de mucho investigar, decidí usar el RSS de Yahoo! Weather para tal propósito.
Asi que manos a la obra...

Como pueden ver en la documentación, a la url del RSS hay que enviarle 2 parámetros:

p: Id de la localización de la cual se quiere obtener el clima. (Para el caso de Buenos Aires, ésta sería 'ARBA0009')

u: Unidad de temperatura a emplear (c = Celcius, f = Farenheit).

Entonces la url a consumir en mi caso sería:
http://weather.yahooapis.com/forecastrss?p=ARBA0009&u=c

Ahora bien, para leer el contenido del rss nos alcanza y sobra con:


$rss = file_get_contents ('http://weather.yahooapis.com/forecastrss?p=ARBA0009&u=c');


Con esa línea obtenemos un string con todo el contenido del RSS.
Ese string lo podemos consumir desde SimpleXML fácilmente de la siguiente manera:


$yWeather = simplexml_load_string($rss);


Y una vez que tenemos el objeto $yWeather cargado, procedemos a mostrar el estado del tiempo en el navegador de la siguiente manera:


echo $yWeather->channel->item->description;


Y eso es todo, el mismo RSS contiene en el campo 'description' un bloque CDATA con el código HTML del estado del tiempo, con imagen incluída y todo.
Entonces el programa entero que muestra las condiciones actuales del clima serían esas 3 líneas de código:


<?php
$rss = file_get_contents ('http://weather.yahooapis.com/forecastrss?p=ARBA0009&u=c');
$yWeather = simplexml_load_string($rss);
echo $yWeather->channel->item->description;
?>


Quien dijo que PHP es complicado?

En la proxima nota veremos cómo leer especificamente el código de estado del tiempo y otra información disponbible en el XML para poder mostrar un contenido personalizado para el clima actual.