Ayuda con un script de clima online.

Alvarous Seguir

Beta
Redactor
Verificación en dos pasos desactivada
Desde
3 Abr 2012
Mensajes
127
Hola buen dia, tengo un problema con los horarios del script, lo demás funciona perfecto, por favor les agradezco la ayuda :encouragement:

Screenshot_1.png

Así se ve mi script, cuando esta de noche (Aun no le cambio font, la imagen se la cambie).

Tengo el problema que no cambia de horario en el momento que debería, esta con Lima-Peru y quiero que funcione con Santiago-Chile, pero que cambie en el momento justo.

PD: Se podrá cambiar el texto Mostly Cloudy (Mayormente Nublado) dejarlo siempre en español, lo demás funciona super bien todo lo indica preciso.

Les dejo el code:

Insertar CODE, HTML o PHP:
<?php
require("simplepie.inc");
require("simplepie_yahoo_weather.inc");

$code = "28358234&u=c";
$path = "http://weather.yahooapis.com/forecastrss?w=";

$feed = new SimplePie();
$feed->set_feed_url($path.$code);
$feed->set_item_class('SimplePie_Item_YWeather');
$feed->init();

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;
}

$weather = $feed->get_item(0);
$fore = $weather->get_forecasts();
$unit = $weather->get_units_temp();
$ampm = "n";
$icon = $weather->get_condition_code();
$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";
}  
?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Yahoo Weather</title>
<style type="text/css">
<!--
body {
	font-family: "Trebuchet MS", Tahoma, Verdana;
	font-size: 12px;
	font-weight: normal;
	color: #777777;
	text-decoration: none;
	background-color: #FFFFFF;
}
#weather {
	width: 240px;
	height: 120px;
}
#current {
	width: 240px;
	height: 120px;
	text-align: right;
	color: #FFFFFF;
	font-weight: bold;
}
#current #temp {
	font-size: 24px;
	font-style: normal;
	padding-top: 40px;
	padding-right: 16px;
}
#current #fore {
	padding-right: 16px;
	font-size: 11px;
}
#current #city {
	padding-right: 16px;
}
-->
</style>
</head>
<body>
<div id="weather" style="background:url('icon<?php echo $ampm; ?>.png') no-repeat 40px 40px;">
	<div id="current">
		<div id="temp"><?php echo $weather->get_temperature(); ?>&deg;<?php echo $unit; ?></div>
		<div id="fore"><?php echo $fore[0]->get_low()."&deg;".$unit; ?> - <?php echo $fore[0]->get_high()."&deg;".$unit; ?></div>
		<div id="city"><?php echo $weather->get_city().", ".$weather->get_country(); ?></div>
	</div>
	<ul>
	<li><strong>Condici&oacute;n:</strong> <?php echo $weather->get_condition(); ?></li>
	<li><strong>Humedad:</strong> <?php echo $weather->get_humidity(); ?>%</li>
	<li><strong>Amanecer:</strong> <?php echo $weather->get_sunrise(); ?></li>
	<li><strong>Atardecer:</strong> <?php echo $weather->get_sunset(); ?></li>
</ul>
</div>
</body>
</html>

Gracias. :encouragement:
 

nestornoe

Épsilon
Programador
Verificación en dos pasos desactivada
Desde
11 Mar 2013
Mensajes
885
Bueno, a cuales tiempos te refieres?

te da información ed noche y es de dia?

me da bien la hora, ponde Conditions for Hualpen, CL at 2:01 pm CLT

Saludos
 

Alvarous

Beta
Redactor
Verificación en dos pasos desactivada
Desde
3 Abr 2012
Mensajes
127
Bueno, a cuales tiempos te refieres?

te da información ed noche y es de dia?

Saludos

Si, mas información es el backgorund que no se relaciona con horarios, la información se entrega correctamente. Solo quiero el tiempo de mi ciudad.

Gracias :encouragement:

- - - Actualizado - - -

Bueno, a cuales tiempos te refieres?

te da información ed noche y es de dia?

me da bien la hora, ponde Conditions for Hualpen, CL at 2:01 pm CLT

Saludos

Si la da bien en wheather de yahoo, el problema esta en que el script no se junta con la hora de weather y no se como juntarla.
 

nestornoe

Épsilon
Programador
Verificación en dos pasos desactivada
Desde
11 Mar 2013
Mensajes
885
Esta es la imagen que genera en este momento

http://l.yimg.com/a/i/us/we/52/11.gif

para mi esta bien

Deja checo tu script

Saludos

- - - Actualizado - - -

Si, mas información es el backgorund que no se relaciona con horarios, la información se entrega correctamente. Solo quiero el tiempo de mi ciudad.

Gracias :encouragement:

- - - Actualizado - - -



Si la da bien en wheather de yahoo, el problema esta en que el script no se junta con la hora de weather y no se como juntarla.

Tecnicamente esta bien, solo el da un echo al $icon para ver que numero te da, segun lo que vi debe de darte 11

Saludos

- - - Actualizado - - -

Esta es la imagen que genera en este momento

http://l.yimg.com/a/i/us/we/52/11.gif

para mi esta bien

Deja checo tu script

Saludos

- - - Actualizado - - -



Tecnicamente esta bien, solo el da un echo al $icon para ver que numero te da, segun lo que vi debe de darte 11

Saludos

Ya para no cambiar, es mas facil de otra forma, pero con tu script, le agregaria eso

PHP:
<?php
require("simplepie.inc");
require("simplepie_yahoo_weather.inc");

$code = "28358234&u=c";
$path = "http://weather.yahooapis.com/forecastrss?w=";

$feed = new SimplePie();
$feed->set_feed_url($path.$code);
$feed->set_item_class('SimplePie_Item_YWeather');
$feed->init();

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;
}

$weather = $feed->get_item(0);
$fore = $weather->get_forecasts();
$unit = $weather->get_units_temp();
$ampm = "n";
$icon = $weather->get_condition_code();
$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";
}  
// le agrego esto

$url="http://weather.yahooapis.com/forecastrss?w=28358234&u=c";
$xml = simplexml_load_file($url);
$general= $xml->channel->item->description;
preg_match_all('/< *img[^>]*src *= *["\']?([^"\']*)/i', $general, $matches);

$imag_src=$matches[1][0];
// hasta aqui y lo agrego apara mostrar en el background

?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Yahoo Weather</title>
<style type="text/css">
<!--
body {
	font-family: "Trebuchet MS", Tahoma, Verdana;
	font-size: 12px;
	font-weight: normal;
	color: #777777;
	text-decoration: none;
	background-color: #FFFFFF;
}
#weather {
	width: 240px;
	height: 120px;
}
#current {
	width: 240px;
	height: 120px;
	text-align: right;
	color: #FFFFFF;
	font-weight: bold;
}
#current #temp {
	font-size: 24px;
	font-style: normal;
	padding-top: 40px;
	padding-right: 16px;
}
#current #fore {
	padding-right: 16px;
	font-size: 11px;
}
#current #city {
	padding-right: 16px;
}
-->
</style>
</head>
<body>
<div id="weather" style="background:url('<?=$imag_src?>') no-repeat 40px 40px;">
	<div id="current">
		<div id="temp"><?php echo $weather->get_temperature(); ?>&deg;<?php echo $unit; ?></div>
		<div id="fore"><?php echo $fore[0]->get_low()."&deg;".$unit; ?> - <?php echo $fore[0]->get_high()."&deg;".$unit; ?></div>
		<div id="city"><?php echo $weather->get_city().", ".$weather->get_country(); ?></div>
	</div>
	<ul>
	<li><strong>Condici&oacute;n:</strong> <?php echo $weather->get_condition(); ?></li>
	<li><strong>Humedad:</strong> <?php echo $weather->get_humidity(); ?>%</li>
	<li><strong>Amanecer:</strong> <?php echo $weather->get_sunrise(); ?></li>
	<li><strong>Atardecer:</strong> <?php echo $weather->get_sunset(); ?></li>
</ul>
</div>
</body>
</html>

- - - Actualizado - - -

Esta es la imagen que genera en este momento

http://l.yimg.com/a/i/us/we/52/11.gif

para mi esta bien

Deja checo tu script

Saludos

- - - Actualizado - - -



Tecnicamente esta bien, solo el da un echo al $icon para ver que numero te da, segun lo que vi debe de darte 11

Saludos

- - - Actualizado - - -



Ya para no cambiar, es mas facil de otra forma, pero con tu script, le agregaria eso

PHP:
<?php
require("simplepie.inc");
require("simplepie_yahoo_weather.inc");

$code = "28358234&u=c";
$path = "http://weather.yahooapis.com/forecastrss?w=";

$feed = new SimplePie();
$feed->set_feed_url($path.$code);
$feed->set_item_class('SimplePie_Item_YWeather');
$feed->init();

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;
}

$weather = $feed->get_item(0);
$fore = $weather->get_forecasts();
$unit = $weather->get_units_temp();
$ampm = "n";
$icon = $weather->get_condition_code();
$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";
}  
// le agrego esto

$url="http://weather.yahooapis.com/forecastrss?w=28358234&u=c";
$xml = simplexml_load_file($url);
$general= $xml->channel->item->description;
preg_match_all('/< *img[^>]*src *= *["\']?([^"\']*)/i', $general, $matches);

$imag_src=$matches[1][0];
// hasta aqui y lo agrego apara mostrar en el background

?>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Yahoo Weather</title>
<style type="text/css">
<!--
body {
	font-family: "Trebuchet MS", Tahoma, Verdana;
	font-size: 12px;
	font-weight: normal;
	color: #777777;
	text-decoration: none;
	background-color: #FFFFFF;
}
#weather {
	width: 240px;
	height: 120px;
}
#current {
	width: 240px;
	height: 120px;
	text-align: right;
	color: #FFFFFF;
	font-weight: bold;
}
#current #temp {
	font-size: 24px;
	font-style: normal;
	padding-top: 40px;
	padding-right: 16px;
}
#current #fore {
	padding-right: 16px;
	font-size: 11px;
}
#current #city {
	padding-right: 16px;
}
-->
</style>
</head>
<body>
<div id="weather" style="background:url('<?=$imag_src?>') no-repeat 40px 40px;">
	<div id="current">
		<div id="temp"><?php echo $weather->get_temperature(); ?>°<?php echo $unit; ?></div>
		<div id="fore"><?php echo $fore[0]->get_low()."°".$unit; ?> - <?php echo $fore[0]->get_high()."°".$unit; ?></div>
		<div id="city"><?php echo $weather->get_city().", ".$weather->get_country(); ?></div>
	</div>
	<ul>
	<li><strong>Condición:</strong> <?php echo $weather->get_condition(); ?></li>
	<li><strong>Humedad:</strong> <?php echo $weather->get_humidity(); ?>%</li>
	<li><strong>Amanecer:</strong> <?php echo $weather->get_sunrise(); ?></li>
	<li><strong>Atardecer:</strong> <?php echo $weather->get_sunset(); ?></li>
</ul>
</div>
</body>
</html>

Lo malo es que son dos llamadas a la api
 
Última edición:

Alvarous

Beta
Redactor
Verificación en dos pasos desactivada
Desde
3 Abr 2012
Mensajes
127
Gracias, si ya me funciono, pero la ultima consulta, se podra pasar la condicion a español? :welcoming:

Graciaaas! :encouragement:
 

nestornoe

Épsilon
Programador
Verificación en dos pasos desactivada
Desde
11 Mar 2013
Mensajes
885
Gracias, si ya me funciono, pero la ultima consulta, se podra pasar la condicion a español? :welcoming:

Graciaaas! :encouragement:

Por lo que lei no, mira esto

https://developer.yahoo.com/forum/G...2713000-d78748d9-0247-313b-ad9e-3503b8ea3d07/

Lo que puedes hacer es un array con las traducciones o una funcion con str_replace, aqui estan los codigos

https://gist.github.com/bzerangue/805520

yo la verdad lo cambiaria a la manera mas facil, de la forma en que te lo puse estas enviando 2 peticiones, si no tienes muchas visitas esta bien, si tienes muchas es un problema, otra forma de solucionarlo es que hagas un cron por ejemplo cada hora y lo guardes en base de datos y ya nada mas muestras desde la base de datos no desde yahoo.

Saludos
 

Alvarous

Beta
Redactor
Verificación en dos pasos desactivada
Desde
3 Abr 2012
Mensajes
127
Disculpa mi ignorancia pero de php llevo recien el 2% y eso de los replace 0 conocimiento, como se usan los replaces y ese que me pasaste el xml donde lo ubico :D

Disculpa
 

nestornoe

Épsilon
Programador
Verificación en dos pasos desactivada
Desde
11 Mar 2013
Mensajes
885
Disculpa mi ignorancia pero de php llevo recien el 2% y eso de los replace 0 conocimiento, como se usan los replaces y ese que me pasaste el xml donde lo ubico :D

Disculpa

Del xml dejalo adonde esta no importa, solo genere una variable y la signe adonde tienes el background, me quede con la duda del echo, no puedo probarlo por que no tengo los includes, por favor pon <?=$ampm?> justo debajo del body correlo y dime que numero se nuestra hasta arriba de la pagina.

Del str_replace, sirve para reemplazar, por ejemplo

PHP:
$var1="con nubes";
$var2="soleado";
$texto="Hoy estara soleado";

// reemplazar soleado a con nubes

$texto=str_replace("soleado","con nubes",$texto);

echo $texto;

//Se imprime Hoy estara con nubes

//Puedes hacer funciones

function traducir($text) {
$text=str_replace("sunny","Soleado",$text);
$text=str_replace("cloudy","Nuboso",$text);
.
.
.
return $text;
}

// esto funciona asi

echo traducir($texto);

//si el texto es sunny va decir soleado y asi

Saludos
 
Última edición:

nestornoe

Épsilon
Programador
Verificación en dos pasos desactivada
Desde
11 Mar 2013
Mensajes
885
arriba solo me sale una n

Agradezco tu tiempo, de verdad.

No se como funciona entonces, pense que iba a ser el numero de la imagen, bueno ponte a estudiar, esto es facil y muy util.

Si necesitas algo, puedes mandarme un MP, tal vez tarde un poco en responder por que siempre ando ocupado, nada mas que ahorita quise distraerme.

Saludos
 

Alvarous

Beta
Redactor
Verificación en dos pasos desactivada
Desde
3 Abr 2012
Mensajes
127
No se como funciona entonces, pense que iba a ser el numero de la imagen, bueno ponte a estudiar, esto es facil y muy util.

Si necesitas algo, puedes mandarme un MP, tal vez tarde un poco en responder por que siempre ando ocupado, nada mas que ahorita quise distraerme.

Saludos

Agradezco mucho tu tiempo, si en eso estoy estudiando php, exito en todo para ti.

Gracias :encouragement:
 

¡Regístrate y comienza a ganar!

Beneficios

  • Gana dinero por participar
  • Gana dinero por recomendarnos
  • Descubre ofertas de empleo diariamente
  • Negocios seguros
  • ¡Información premium y más!

Acceder

¿Ya tienes una cuenta? Accede aquí

Arriba