Reporte del Clima en PHP

El servicio de Yahoo para el Clima Yahoo Weather tiene un API mediante el cual se puede consultar el estado del clima y devuelve los resultados en formato RSS (Yahoo! Weather RSS feed). Entonces basado en esta información crearemos un reporte del clima personalizado.

Obteniendo el RSS
Lo primero es obtener el URL con el RSS de acuerdo a la ciudad para la que deseamos consultar el clima, para ello ingresamos a Yahoo Weather, buscamos la ciudad deseada y observamos en la barra de direcciones el código de la ciudad. Por ejemplo si buscamos lima la ruta sería de la forma:

code
  1. http://weather.yahoo.com/forecast/PEXX0011.html

Luego, el código de la ciudad es PEXX0011, luego de acuerdo a las especificaciones del API, el URL del RSS sería de la forma:

code
  1. http://weather.yahooapis.com/forecastrss?u=c&p=PEXX0011

Utilizando SimplePie
Ahora que tenemos la información en RSS, utilizaremos SimplePie para interpretar los datos, adicionalmente utilizaremos un plugin para SimplePie llamado Yahoo! Weather el cual nos permite tener métodos para obtener los detalles del clima proveídos por Yahoo.

Entonces utilizando estos nuevos métodos obtenemos fácilmente los datos del clima directamente para nuestra aplicación. Lo primero es crear una nueva instancia del Feed y tomar el primer item que contiene los datos del clima.

php
  1. require("simplepie.inc");
  2. require("simplepie_yahoo_weather.inc");
  3.  
  4. $code = "PEXX0011";
  5. $path = "http://weather.yahooapis.com/forecastrss?u=c&p=";
  6. $feed = new SimplePie();
  7. $feed->set_feed_url($path.$code);
  8. $feed->set_item_class('SimplePie_Item_YWeather');
  9. $feed->init();
  10. $weather = $feed->get_item(0);

Luego de ello en la variable $weather, tenemos los datos necesarios, los cuales vamos a imprimir en nuestro html como en el siguiente código, en donde get_condition_image obtiene la imagen del clima y get_temperature la temperatura actual.

HTML4
  1. <h3>Condiciones para: <?php echo $weather->get_city().; ?></h3>
  2. <img src="<?php echo $weather->get_condition_image(); ?>">
  3. <ul>
  4.     <li>Condicion: <?php echo $weather->get_condition(); ?></li>
  5.     <li>Temp: <?php echo $weather->get_temperature(); ?>°C</li>
  6.     <li>Humedad: <?php echo $weather->get_humidity(); ?>%</li>
  7.     <li>Rising: <?php echo $weather->get_rising(); ?>%</li>
  8.     <li>Sunrise: <?php echo $weather->get_sunrise(); ?></li>
  9.     <li>Sunset: <?php echo $weather->get_sunset(); ?></li>
  10. </ul>

Uniendo estos dos elementos y una pequeña hoja de estilos podemos obtener nuestra primera versión del pronostico del tiempo el cual pueden ver en: weather/basic.php.

Personalizando el Reporte del Clima
En el caso anterior, solo depende de nuestra creatividad para mostrar los datos del clima, en nuestro caso vamos a mostrar los datos del clima utilizando los iconos de acuerdo a la hora del día o la noche, para ello hacemos los cálculos necesarios para obtener el valor del día o la noche.

php
  1. require("simplepie.inc");
  2. require("simplepie_yahoo_weather.inc");
  3.  
  4. $code = "PEXX0011";
  5. $path = "http://weather.yahooapis.com/forecastrss?u=c&p=";
  6.  
  7. $feed = new SimplePie();
  8. $feed->set_feed_url($path.$code);
  9. $feed->set_item_class('SimplePie_Item_YWeather');
  10. $feed->init();
  11.  
  12. function time2minuts($time) {
  13.     $minuts = 0;
  14.     $atime = explode(" ", $time);
  15.     if (strtolower($atime[1]) == "pm") {
  16.         $minuts = 12*60;
  17.     }
  18.     $ttime = explode(":", $atime[0]);
  19.     $minuts = $minuts + (int)$ttime[0]*60 + (int)$ttime[1];
  20.     return $minuts;
  21. }
  22.  
  23. $weather = $feed->get_item(0);
  24. $fore = $weather->get_forecasts();
  25. $unit = $weather->get_units_temp();
  26. $ampm = "n";  // indica noche
  27. $icon = $weather->get_condition_code();
  28. // Calculamos la hora de Lima en minutos
  29. $curday = 2*60 + time2minuts(date("g:i a"));
  30. $iniday = time2minuts($weather->get_sunrise());
  31. $endday = time2minuts($weather->get_sunset());
  32.  
  33. if ($curday > $iniday && $curday < $endday ) {
  34.     $ampm = "d"; // indica dia
  35. }

Luego mostramos estos resultados en nuestro HTML, esto lo hacemos de la siguiente forma:

HTML4
  1. <div id="weather" style="background:url('icon<?php echo $ampm; ?>.png')">
  2.     <div id="current" style="background:url('http://l.yimg.com/us.yimg.com/i/us/nws/weather/gr/<?php echo $icon.$ampm.".png"; ?>')">
  3.         <div id="temp"><?php echo $weather->get_temperature(); ?>&deg;<?php echo $unit; ?></div>
  4.         <div id="fore"><?php echo $fore[0]->get_low()."&deg;".$unit; ?> - <?php echo $fore[0]->get_high()."&deg;".$unit; ?></div>
  5.         <div id="city"><?php echo $weather->get_city().", ".$weather->get_country(); ?></div>
  6.     </div>
  7. </div>

Con lo cual obtenemos el resultado mostrado en weather/index.php en donde mostramos el icono del estado del clima de acuerdo a la hora del día, además de muestra la temperatura actual y el máximo y mínimo.

Comentarios Total 86 comentarios


Silbido
Publicado: 06/10/2008 2:17 pm

Buenísimo, muchas gracias. Hace tiempo que me había elaborado un decodificador de METAR para mostrar el clima, pero esta está mucho mejor.

Turl
Publicado: 07/10/2008 12:18 pm

Muy buen tutorial :) Yo ya había hecho una clase que hacía esto mismo, hasta la había publicado en mi blog xD http://turl.bloglivers.com/2008/07/03/weatherfetcher-el-clima-en-php/
Lo único era que le faltaba mostrar el clima de alguna forma, tu lo haz terminado muy bien con ese HTML y la imagen ;)

Un Saludo!

jopicar
Publicado: 11/10/2008 5:58 am

Buenísima aplicación, muchas gracias.
Un cordial saludo desde Galicia, España ;)

ibarakaldo
Publicado: 14/10/2008 3:49 am

gran aporte, gracias

Gerardo
Publicado: 21/10/2008 10:03 am

El script esta perfecto. Muy bueno pero tiene un problema.

El tema de yahoo el id del pais.

Estaria bueno conseguir dependiendo de la ip de la visita la ubicacion del pais .

No se si existe en las apis de yahoo para determinar el id del pais .

Saludos y muy buen script

Ana
Publicado: 21/10/2008 5:19 pm

La verdad que te pasaste!!! Necesito un favor: como se modificaria el codigo para que las imagenes de noche y dia se modifiquen segun la hora de córdoba, argentina? Perdon mi ignorancia…Gracias! Saludos!

juan hernandez
Publicado: 21/10/2008 5:27 pm

woo que padre tutorial, lo antes posible lo voy a provar para poderlo implementar

Jonathan
Publicado: 25/10/2008 1:04 am

Muchas gracias por compartir tus conocimientos, muy bueno el tutorial y la implementacion de las librerias.

Tengo una duda con respecto a la transparencia de las imagenes de los resultados del clima en internet explorer 6… ¿Se podrá solucionar? La verdad es que no conozco mucho de php, ojala me puedas orientar para resolverlo.

Saludos!

JRC.

unijimpe
Publicado: 27/10/2008 10:11 pm

Hola, respecto a los PNGs tranparentes en IE6 puedes leer la forma de resolverlo en: http://blog.unijimpe.net/png-fix-para-ie6/

Miguel
Publicado: 03/11/2008 9:43 pm

Gran Tutorial. Sólo quiero saber cómo este sitio http://www.philtvguide.com poder llevar a cabo múltiples varias ciudades en una página (www.philtvguide.com/philippines-weather/)

Matías
Publicado: 25/11/2008 4:56 pm

Hola, pusé el código en una web con algunas variaciones del tamaña de las imágenes, se bien en Firefox-Opera pero en IE6 no se ve. ¿cual puede ser el problema?
En http://www.ilovelasgrutas.com.ar lo puedes ver.
Muy buenos y útiles tus aportes.
De antemano, muchas gracias.

engelus
Publicado: 25/01/2009 10:26 pm

muchas gracias por el codigo, la verdad que me resulto super util para no tener que depender de un plugin para hacer esto :D

Enoel
Publicado: 14/02/2009 2:35 pm

Me hace falta k si puedes me mandes el codigo completo a mi direccion de correo k me hace falta para un trabajo…gracias.

Enoel
Publicado: 14/02/2009 2:36 pm

la direccion es eramirezr@estudiantes.uci.cu

unijimpe
Publicado: 14/02/2009 10:22 pm

La ruta completa del script final para descargar esta al final del post y si no la ubicas te dejo la ruta para que descargues los archivos fuente.

http://www.box.net/shared/pn9z58z518

Enoel
Publicado: 15/02/2009 1:09 am

Ayuda:
cuando baje el paquete me dio este error, favor de ayudarme…..
‘Call to a member function get_forecasts() on a non-object in C:\wamp\www\weather\index.php on line 25′

Enoel
Publicado: 16/02/2009 3:07 pm

el error k me da es de k me dice k la variable $weather no es un objeto y por lo tanto me da error en cada llamada a los metodos de la clase…favor de ayudarme…….

Rodrigo
Publicado: 24/02/2009 1:29 pm

Yo tengo el mismo problema Enoel, ya lograste solucionarlo??? o alguien que pueda ayudarnos???

Gracias !

Andre Darugna
Publicado: 26/02/2009 1:48 pm

Esta excelente el codigo!!

Sobre la pregunta de Miguel:
Pega esta parte del codigo dentro tu

require(“simplepie.inc”);
require(“simplepie_yahoo_weather.inc”);

Luego podras usar cuantos quieras.

Ese codigo es la conexion con el sistema, lo pones una vez nada mas.
Si pones mas de una vez no funciona.

Saludos, espero haberte ayudado

Enoel
Publicado: 02/03/2009 1:44 pm

Rodrigo todavia no he podido dar con el error, si lo solucionas publicalo

MauricioRa
Publicado: 03/03/2009 1:33 pm

Hola esta buenisimo, pero tengo algunas dudas, quisiera saber si puedo obtener tambien la hora. ademas de como puedo ver los codigos de la ciudad. yo soy de Colombia-Bogotá.

Gracias por la ayuda.

Matias
Publicado: 03/03/2009 3:59 pm

Es un golazo este artículo. Alguien sabe de dónde puedo obtener un tutorial parecido para hacer una implementación como esta sin usar PHP, o bien, utilizando ASP?

Muy agradecido!

unijimpe
Publicado: 03/03/2009 11:45 pm

Mauricio, como se explica en el post, para encontrar el código debes entrar a http://weather.yahoo.com buscas la ciudad de tu elección y luego te fijas en el URL que contendrá el código de la ciudad, en tu caso para Bogotá el código es: COXX0004

diego
Publicado: 14/03/2009 11:54 am

Oye una excelente herramienta solo que tengo una duda ta coloque el archivo pero cada cuando se vuelve a cargar la informacion del clima, o no se si tenga que modificar algo para que cambie el clima cada 10 minutos.

Si lo hace bien cuando cambie de dia a noche pero cuando toma una temperatura cuando abras la pagina, se queda con esa todo el dia.

Lo resolvi borrando el cache pero no se si exista una forma de hacerlo sin borrar el cache.

Espero una pronta respuesta de tu parte.

SALUDOS

DIEGO

diego
Publicado: 14/03/2009 12:17 pm

Oye una duda que es lo que pasa, aunque es de dia me esta marcando ahora que el icono de noche, de hecho tambien se ve en tu ejemplo.

Diego
Publicado: 14/03/2009 12:39 pm

Nuevamente yo antes funcionaba bien pero ahora aparte de lo que te escribi anteriormente me manda este error:

Warning: ./cache/eaa6ab0e8c97bbc9d6e57001b46a6900.spc is not writeable in /home/produccio7/domains/produccionesbajio.com/public_html/weather/simplepie.inc on line 1769

Dani
Publicado: 27/03/2009 8:32 am

Y es posible sacar los datos de la predicción, estoy probando con la clase SimplePie_YWeather_Forecast pero no se exactamente como decirle el núemro de dias o la fecha de la que quiero la predicción.

Dani
Publicado: 27/03/2009 10:18 am

Me contesto a mi mismo, por defecto te pasa también el dato del día siguiente y lo guarda en el $fore[1] lógicamente

$fore[1]->get_low()
$fore[1]->get_code()
….

Patricio
Publicado: 10/04/2009 3:45 pm

Hola, tuve algunos problemas para calcular la hora de Argentina, el script que uso es el mismo, como lo logro? Ya que cuando son las 5 de la tarde en argentina aparece la luna, muchas gracias.
http://realidadweb.com.ar/clima.php

unijimpe
Publicado: 10/04/2009 4:18 pm

El problema es que el servidor donde tienes alojado tu aplicación debe tener otra hora como ocurrio en mi caso, es por ello que le aumente dos horas es mi script:

$curday = 2*60 + time2minuts(date(“g:i a”));

Puedes modificar el valor que le sumas a la hora calculada (2*60) hasta lograr la hora correcta para tu ciudad.

Fabian
Publicado: 18/04/2009 10:49 pm

No investigue mucho el codigo pero si eliminas la llamada a la funcion time2minuts cambia el icono del sol a la luna, ahora son las 00:47 en Agentina y me aparecia el sol, asique tome el valor directo de weather y cambio a la luna, no se que pasara mañana =) en principio funcionó.
las variables quedarian asi
$iniday = $weather->get_sunrise();
$endday = $weather->get_sunset();

abrazos

Silvanha
Publicado: 14/05/2009 8:58 pm

ge-nial!

me has salvado la vida! ^^

funciona perfecto!.. btw, realice el cambio de calculo de hora, porque mi servidor es argentino, y mi página es méxicana..

saludetes!

Runy
Publicado: 08/06/2009 5:47 am

a mi tambien me sale el mismo Warning que Diego.

Warning: ./cache/eaa6ab0e8c97bbc9d6e57001b46a6900.spc is not writeable

Como puedo quitarlo?

Gracias

Esteban
Publicado: 08/06/2009 11:16 am

BARBAROOO ya lo aplicare. en varios sites. y funca de maravillas…
consulta.. en http://www.flashcenter.com.ar/ baje Widget de Clima en flash que funciona.. casi de la misma manera pero en flash.. por alguna caracteristica del server no funca en el mio . testee configuraciones etc.. me encantaria si alguin sabe como modificar el anterior o adapptar este para que levante los datos desde el flash ya que se me complico conis conocimientos.!! saludos gente. abrazo Esteba

Kim
Publicado: 14/06/2009 10:13 am

How to put more than one city/place on same page like http://www.philtvguide.com/philippines-weather/ ?

Thanks for a great script :-)

Kim
Publicado: 14/06/2009 10:16 am

When try with two cities/places I got following error:

Fatal error: Cannot redeclare time2minuts() (previously declared in /mounted-storage/………

Someone have any ideas to get around this ?
Thanks :-)

unijimpe
Publicado: 14/06/2009 10:35 am

Hola Kim, lo que pasa que has copiado todo el código nuevamente, entonces como la función time2minuts esta declarada al inicio te genera un error. Entonces solo copia el código sin incluir la función time2minuts.

Locomalo
Publicado: 05/07/2009 3:37 pm

Hola a los que le da el error Warning: ./cache/eaa6ab0e8c97bbc9d6e57001b46a6900.spc is not writeable

Tienen 2 opciones:
Poner la carpeta cache en el mismo lugar que el archivo .inc.
O si no desabilitar la cache

$feed->enable_cache(false);

Un saludo.

Baku
Publicado: 07/07/2009 2:11 am

Hola, a los que tienen error de las 12 am a la 1 am y les pone solecito lo que hice fue modificar la funcion time2minuts para que verificara si era entre las 12 y 1 para que no me sumara 12 horas a los minutos y quedaria asi:

function time2minuts($time) {
$minuts = 0;
$atime = explode(” “, $time);
if (strtolower($atime[1]) == “pm”) {
$minuts = 12*60;
}
$ttime = explode(“:”, $atime[0]);

if(($ttime[0] == 12) && $atime[1] == “am”)
{
$minuts = $minuts + (int)$ttime[1];
}
else
{
$minuts = $minuts + (int)$ttime[0]*60 + (int)$ttime[1];
}
return $minuts;
}

Luciano
Publicado: 16/07/2009 12:46 am

che lo que no entiendo es la linea siguiente:
$curday = 2*60 + time2minuts(date(“g:i a”));

por que coloca el 2*60, o sea le suma dos horas a las que tiene el server? ese punto lo hicieron por queel server tenia dos horas menos?, Saludos, Muy Bueno el Codigo.

unijimpe
Publicado: 16/07/2009 9:45 am

Ese valor es por que la hora de mi servidor tenia una diferencia con la hora de Lima que es donde vivo, uds tienen que modificar este valor dependiendo de la hora de su servidor hasta ajustarse a la hora de su localidad.

Luciano D
Publicado: 23/07/2009 10:24 pm

Che el problema de las 12 am tambien aparece a las 12 pm, resulta que cuando son las 12 pm te muestra una luna y cuando son las 12 am te muestra un sol, qui la solucion de la funcion para que ande bien tanto en las 12 am como en las 12 pm

function time2minuts($time) {
$minuts = 0;
$atime = explode(” “, $time);
$ttime = explode(“:”, $atime[0]);
if (strtolower($atime[1]) == “pm”) {
$minuts = 12*60;
}
if($ttime[0] == “12″) $ttime[0] = “0″;

$minuts = $minuts + (int)$ttime[0]*60 + (int)$ttime[1];
return $minuts;
}

Luciano D
Publicado: 23/07/2009 10:25 pm

la Solucion esta poner el
if($ttime[0] == “12″) $ttime[0] = “0″;

en la funcion,

Saludos,

damian
Publicado: 25/08/2009 11:18 am

Antes que nada gracias por el tuto, me fue muy util. Localmente todo funciona lo mas bien, pero cuando lo subo a mi sitio me da el siguiente error: Fatal error: Call to a member function get_condition() on a non-object
Tenes idea de cual es el error? si me podes ayudar te lo voy a agradecer.
Saludos!

Galo Pesoa
Publicado: 29/09/2009 10:47 am

Me funciono de lujo con la modificacion de Luciano D, solo que reemplaze las comillas dobles por simples.

Andrés
Publicado: 17/10/2009 9:53 am

echo $weather->get_condition_code();

si de esa forma imprimo el condition code de hoy, como lo haría con el del día de mañana ??

graciias

Gustavo
Publicado: 19/10/2009 6:33 pm

Hola amigo, muy buen y muy útil script, felicitaciones!!!
Tengo un problema y no se resolverlo. Como hago para achicar las imagenes? Tal vez es una pregunta muy tonta pero le estoy dando vueltas y no puedo hacerlo.
Muchas gracias y saludos

Flor
Publicado: 14/11/2009 3:12 pm

me aparece este error, ayudenme :(

Warning: ./cache/4334f5b59ddab2ba6c42e63aa7cd8bf7.spc is not writeable in /home/a5349153/public_html/weather/simplepie.inc on line 1769

unijimpe
Publicado: 14/11/2009 3:18 pm

Flor, debes crear una carpeta llamada tmp en donde se guardarán los archivos de cache y además debes darle los permisos de escritura, con eso se resuelve todo.

Andres
Publicado: 23/11/2009 10:42 am

La mejor aplicación de esta secuencia de comandos o programa que Ive visto es este http://www.philjobspot.com. ¿Cómo lo hacen?

Fernando
Publicado: 24/11/2009 12:46 am

Me he dado cuenta en este http://www.philjobspot.com sitio web que tienen un código de fuente diferente en comparación con el tutorial de esta página. Están utilizando http://weather.yahooapis.com/forecastrss?u=c&w = en lugar de http://weather.yahooapis.com/forecastrss?u=c&p = (Comunicación de la categoría P y W). Y diferente formato de código de la ciudad.

Victoria
Publicado: 14/12/2009 8:41 pm

Hola. Necesito el componente .fla que en su momento estaba publicado en http://www.flashcenter.com.ar/. Hoy, esta URL redirige a un sitio que aparentemente está en construcción y ya no encuentro el archivo. Si alguien sabe donde puedo encontrarlo se lo agradezco. Saludos, Victoria

nombrelol
Publicado: 21/01/2010 8:33 pm

Dude, is there a way to show forecasts for few days in a row (e.g. today(Monday), Tuesday, Wednesday etc. ?) ? :O
And, maybe someone has already mentioned it above (my Spanish < 0), how to get this city code by any other way ?

Gío
Publicado: 26/01/2010 6:40 pm

Exelente información, solo tengo un detalle, mi variable $path=”http://weather.yahooapis.com/forecastrss?p=MXHO0590&u=c” no me manda la temperatura en ºC, sino en ºF, que pasa? si se supone que u=c? Help me please.

Gío
Publicado: 26/01/2010 6:42 pm

AH! y que digo excelente información, es un super aporte, gracias por que en verdad me sacaron del hoyo en mi proyecto escolar. =)

mariana
Publicado: 05/02/2010 4:45 pm

Me pasa lo mismo con lode los C y F. Puse el feed con u=c y me devuelve la temperatura en ºf

Diego
Publicado: 19/02/2010 11:48 am

hola que tal he subido su aplicacion que no se ve:

http://www.chorro.com.mx/weather2/weather/

Y lo que pasa es que parece que no puede generar el archivo que manda a llamar desde yahoo en la carpeta de cache.

Que permisos le tenga que dar a esta carpeta que ya use todos, y saber si tambien le tengo que dar permisos a los archivos .inc

Mauricio
Publicado: 26/02/2010 2:00 pm

El Script esta genial pero tengo una duda con respecto a el horario para que las imagenes ( iconos) se despliegen correctamente
Mi servidor tiene la hora Central de USA ahorita son las 12:56PM, y ahorita se despliega la luna, la hora de salida de el sol es 6:59 AM en el script tiene
function time2minuts($time) {
$minuts = 0;
$atime = explode(” “, $time);
if (strtolower($atime[1]) == “pm”) {
$minuts = 12*60;
}
$ttime = explode(“:”, $atime[0]);
$minuts = $minuts + (int)$ttime[0]*60 + (int)$ttime[1];
return $minuts;
}
$curday = 2*60 + time2minuts(date(“g:i a”));
$iniday = time2minuts($weather->get_sunrise());
$endday = time2minuts($weather->get_sunset());

if ($curday > $iniday && $curday < $endday ) {
$ampm = "d";
}

Gracias

The Cat
Publicado: 28/02/2010 7:31 am

Hola!

Muchas gracias por el script, funciona a la perfección.

Con la función get_forecasts(); nos devuelve la predicción del día siguiente. Cómo se podría obtener la predicción de los siguientes 5 días, por ejemplo?

Muchas gracias.

German
Publicado: 08/04/2010 12:36 am

hola, hay alguna manera de mostrar los días siguientes tal como se ve en la web de Yahoo! http://ar.weather.yahoo.com/argentina/c%C3%B3rdoba/c%C3%B3rdoba-466861/;_ylt=AnArGoXuzLaFipbw.oD0eFPidXp8 si elegimos una ciudad?
muchas gracias por todo

Jhonny
Publicado: 08/04/2010 4:05 pm

Hola, está excelente el codigo, pero una pregunta, si quiero personalizar las imagenes, como le hago ??

Tornado
Publicado: 12/05/2010 4:14 am

Hola, buenas.

Me aparece el siguiente error:

Fatal error: Call to a member function on a non-object in /www/youservername/test/weather/index.php on line 25

Lamentablemente no poseo demasiados conocimientos de php, motivo por el que agradecería mucho su ayuda.

Tornado
Publicado: 25/05/2010 2:01 pm

Bueno, problema solucionado: Para todos los que tengan el mismo problema, se debe a que necesitan instalar en su servidor PHP 5.x. Cualquier versión más antigua genererá el problema antes mencionado

Carlos
Publicado: 15/07/2010 11:43 am

Excelente aplicación solo que me manda en °F, como lo cambio a °c… URGENTE y gracias

unijimpe
Publicado: 15/07/2010 10:37 pm

Hola Carlos, según parece el servicio ha cambiado y solo devuelve los valores en Grados Farenheit, para convertir estos valos a grados Celsius puede utilizar la formula de conversión, que la puedes encontrar en http://es.wikipedia.org/wiki/Grado_Celsius.

Con ello puedes escribir una función en PHP para convertir estas unidades mediante:

function f2c($f) {
$c = ($f-32)/1.8;
return $c;
}

emerson
Publicado: 26/08/2010 2:12 pm

que tal amigos, excelente tutorial… hasta q me topé cn q no me funciona… ya tengo en el server las clases, los archivos, conexión a internet (muy importante) pero… el array resultado, lo devuelve vacío… al imprimirlo, en parte del array me arroja: “[data] => Yahoo! Weather – Error”, y “Invalid Input /forecastrss?p%3DPMXX0004″.

Este es el URL que estoy usando:”[feed_url] => http://weather.yahooapis.com/forecastrss?p%3DPMXX0004“.

Alguna sugerencia o idea de qué puedo estar haciendo mal? Gracias de antemano.

J
Publicado: 24/12/2010 12:46 pm

hola esta excelente el script, sin embargo tengo un problema, no se si sea un bug o algo que estoy haciendo mal, en el $path puse el codigo de la ciudad como mencionas pero la temperatura no se muestra en °C solo en °F y lo necesito en °C, cual es el problema mi path queda asi:

$path = “http://weather.yahooapis.com/forecastrss?p=MXYN0117&u=c”;

gracias por la ayuda, saludos.

Luke
Publicado: 14/01/2011 3:53 pm

Hola a todos, yo también en el servidor (con PHP 4.4.2) siempre tengo este mensaje de error: “Fatal error: Call to a member function on a non-object in /~/www/simplymeteo.eu.pn/weather/index.php on line 25″, mientras localmente no hay ningún problema.
Si configuro PHP 5.3.1 en el servidor el navegador informa de un “Error de servidor”. ¿Cómo puedo solucionar esto? Muchissimas gracias!

Alex
Publicado: 15/01/2011 3:55 am

Hola,
en weather.yahoo.com ya no se muestra el código de la ciudad en la url. Cómo se puede de averiguar?

Alex
Publicado: 15/01/2011 4:14 am

Bueno, ya lo he averiguado. Como se indica, vas a weather.yahoo.com y pones tu ciudad. En la URL obtendrás un códido numérico (que no es el que se necesita en este script). Este código numérico lo pones en este link:
http://weather.yahooapis.com/forecastrss?w=342553 y allí verás el código (números y letras) de ciudad que sí se necesita para que funcione el script.

Marinha
Publicado: 01/03/2011 1:21 pm

Buenas, el script funciona muy bien, pero no sé cómo o dónde poner la función php para convertir los grados F en C.

Alguien me lo explica?

Gracias!

Marinha
Publicado: 03/03/2011 10:49 am

Lo logré, la dirección del rss es con la c, entonces, la función que usé fue

function f2c($c) {
$c = ($c-32)/1.8;
return $c;
}

no se mucho de php, quizás es una burrada, pero por ahora me funciona…

Muy buen script!

Pablo
Publicado: 10/05/2011 8:37 am

Buenos dias, tengo un problema con el script que no he podido solucionar, tengo php 5.3 instalado en el servidor y me larga Fatal error: Call to a member function get_forecasts() on a non-object in ../weather/index.php on line 25
lo raro es que no lo hace siempre, se ve que bajo determinadas circunstancias lo hace, si alguien tuvo un problema parecido me podria dar una mano para solucionarlo, muchas gracias

Free
Publicado: 29/08/2011 1:37 pm

Muy util el blog!! .. sigue adelante … probando!

Free
Publicado: 29/08/2011 1:48 pm

Warning: ./cache/eaa6ab0e8c97bbc9d6e57001b46a6900.spc is not writeable

Ese codogo me arroja por favor ayudenme.. lei los comentarios anteriores de como solucionarlo.. pero no los veo muy claros donde se debe crear la carpeta “tmp” y si esque se debe cambiar algo en los archivos al crear dicha carpeta como dijo unijimpe .. o si hay otra solucion bienvenida sea! Gracias

Javier
Publicado: 14/11/2011 9:44 am

Hola. ¿Alguno ha podido conseguir mostrar más de 1 día de pronóstico extendido? (digo ’1′ porque la función ‘get_forecasts()’ brinda el día actual y el siguiente). Saludos, excelente el script y gracias desde ya.

Javier
Publicado: 14/11/2011 3:07 pm

Hola de nuevo. He podido conseguir el pronóstico extendido a 5 días. Hay que hacer un este cambio:

## primero que nada, seguramente tendrán que investigar para cada ciudad en particular por lo siguiente: hay que cambiar ‘$path = “http://weather.yahooapis.com/forecastrss?u=c&p=”;’ (+ el código específico) por ‘$otro_path = “http://xml.weather.yahoo.com/forecastrss/”.$code.”_c.xml”;’. De esta manera presenta en forma extendida a 5 días el clima.

# Si quieren que aparezcan imágenes referidas al clima, tienen que agregar la línea get_image().”‘ />. Pero si quieren que aparezcan imágenes propias, creen esas imágenes con los nombres de los códigos de la condición del clima (ej: el 32 corresponde a ‘Soleado’) y llámenlas de esta forma: get_code().”.png’ />. Saludos.

Per2Manga
Publicado: 26/03/2012 10:59 am

Me funciona de maravilla, gracias por el tutorial

raikkonen
Publicado: 14/05/2012 3:31 am

una pregunta, alguien sabe como obtener misma aplicación pero con la opción de elegir el codigo postal o ciudad.
Saludos…

emmanuel
Publicado: 06/07/2012 8:16 pm

como se el código para mi región, por ejemplo este es el del ejemplo de Lima PEXX0011, cual es el de mexico y sus estados de antemano muchas gracias.

jrondon
Publicado: 14/07/2012 9:25 pm

Viejo no me funcionar lo baje a la compuradora pero me sale mucho error eso sera porque… me podria ayudar… este es mi correo para ver si alguien me ayuda uruvenz78@hotmail.com

fif0
Publicado: 28/08/2012 3:23 pm

Hola, me sirve mucho la API pero aun no la puedo aplicar ya que no encuentro los archivos simplepie.inc y simplepie_yahoo_weather.inc se tienen que crear o algo? agradeceria su ayuda

Saludos

Gerardo
Publicado: 28/08/2012 4:12 pm

Se podrá agregar el pronostico para los días que siguen?

zinwww
Publicado: 11/01/2013 11:19 am

YO TENGO ESTE ERROR

( ! ) SCREAM: Error suppression ignored for
( ! ) Deprecated: Assigning the return value of new by reference is deprecated in C:\wamp\www\weather\simplepie.inc on line 716

y asi repetitivamente linea tras linea.

no se si es porque lo estoy cargando con WAMP no creo que ese sea el problema.

si me pueden ayudar se los agradeceria mucho :)

zinwww
Publicado: 11/01/2013 11:21 am

SE ME OLVIDO DECIR.

Al final si se muestra el clima y todo bien el problema es ese que me lo muestra todo el codigo de error arriba pero SI LO MUESTRA AL FINAL.

HELP!

Kevin
Publicado: 17/01/2013 8:16 pm

Buen dia a todos. para arreglar el problema de la luna en el dia. deben modificar el siguiente valor.
$curday = 2*60 + time2minuts(date(“g:i a”)); donde el 2 es la hora GTM de su ciudad. por ejemplo: mi servidor esta alojado en mexico y yo en lugar del dos escribi -6 ya que es la hora GTM de Mexico centro.

 

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>)