.: HosiriS :.

Informatica e non solo

Archive for 1 ottobre 2010

Meteo… a portata di click!

Posted by hosiris su ottobre 1, 2010

Tony Stark ogni mattina viene svegliato da Jarvis, che oltre orari e appuntamenti lo informa sulla situazione meteo della giornata… Io lo voglio pure! Lungi da avere a disposizione un sistema come Jarvis (ma prima o poi ci riesco) ho cominciato a studiare una soluzione che per il momento mi permetta di acquisire info riguardo la situazione meteorologica.
Dopo varie ricerche ho scoperto che Google ha una sorta di API che fornisce un file XML con le informazioni richieste: weather google.
Perchè non usare questo allora?

Cominciamo con il prelevare li informazioni:

$ch = curl_init("http://www.google.com/ig/api?weather=Roma&hl=it");
$fp = fopen("weather.xml", "w");
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; rv:1.7.3) Gecko/20041001 Firefox/0.10.1");
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_exec($ch);
curl_close($ch);
fclose($fp);

A questo punto abbiamo a disposione un file XML che dovremmo elaborare. Io ho utilizzato il seguente script:

$xml = simplexml_load_file("weather.xml");
$current = $xml->xpath("/xml_api_reply/weather/current_conditions");
$forecast_list = $xml->xpath("/xml_api_reply/weather/forecast_conditions");

Infine, per mostrare i file:

<h2>Roma - Oggi</h2>
<div class="weather">
  <img src="<?php echo 'http://www.google.com' . $current[0]->icon['data']?>" alt="weather"/>
  <br/><?php echo $current[0]->temp_c['data'] ?>° C<br/>
  <?php echo $current[0]->condition['data'] ?>
</div>
<h2>Previsioni Prossimi Giorni</h2>
<?php foreach ($forecast_list as $forecast) : ?>
<div class="weather">
  <img src="<?php echo 'http://www.google.com' . $forecast->icon['data']?>" alt="weather"/>
  <div><?php echo ucfirst($forecast->day_of_week['data']); ?></div>
  <?php echo $forecast->low['data'] ?>° C - <?php echo $forecast->high['data'] ?>° C<br/>
  <?php echo $forecast->condition['data'] ?>
</div>
<br/>
<?php endforeach ?>

La soluzione è molto semplice no? Il risultato è visibile qui.

Per il momento: buon divertimento!

Posted in Javascript, PHP, Programmazione | Leave a Comment »