11
Sep
2009
Acceder a Google Weather en PHP
Interesante clase para acceder de un modo sencillo al servicio metereológico de Google.Ejemplo:
<?php class GoogleWeatherAPI {
private $city_code = '';
private $city = '';
private $domain = 'www.google.com';
private $prefix_images = '';
private $current_conditions = array();
private $forecast_conditions = array();
private $is_found = true;
/** * Class constructor
* @param $city_code is the label of the city
* @param $lang the lang of the return weather labels
* @return ... */
function __construct ($city_code,$lang='fr')
{
$this->city_code = $city_code;
$this->prefix_images = 'http://'.$this->domain;
$this->url = 'http://'.$this->domain.'/ig/api?weather='.urlencode($this->city_code).'&hl='.$lang;
$content = utf8_encode(file_get_contents($this->url));
$xml = simplexml_load_string($content);
if(!isset($xml->weather->problem_cause)) {
$xml = simplexml_load_string($content);
$this->city = (string)$xml->weather->forecast_information->city->attributes()->data;
$this->current_conditions['condition'] = (string)$xml->weather->current_conditions->condition->attributes()->data;
$this->current_conditions['temp_f'] = (string)$xml->weather->current_conditions->temp_f->attributes()->data;
$this->current_conditions['temp_c'] = (string)$xml->weather->current_conditions->temp_c->attributes()->data;
$this->current_conditions['humidity'] = (string)$xml->weather->current_conditions->humidity->attributes()->data;
$this->current_conditions['icon'] = $this->prefix_images.(string)$xml->weather->current_conditions->icon->attributes()->data;
$this->current_conditions['wind_condition'] = (string)$xml->weather->current_conditions->wind_condition->attributes()->data;
foreach($xml->weather->forecast_conditions as $this->forecast_conditions_value) {
$this->forecast_conditions_temp = array();
$this->forecast_conditions_temp['day_of_week'] = (string)$this->forecast_conditions_value->day_of_week->attributes()->data;
$this->forecast_conditions_temp['low'] = (string)$this->forecast_conditions_value->low->attributes()->data;
$this->forecast_conditions_temp['high'] = (string)$this->forecast_conditions_value->high->attributes()->data;
$this->forecast_conditions_temp['icon'] = $this->prefix_images.(string)$this->forecast_conditions_value->icon->attributes()->data;
$this->forecast_conditions_temp['condition'] = (string)$this->forecast_conditions_value->condition->attributes()->data;
$this->forecast_conditions []= $this->forecast_conditions_temp;
}
}
else {
$this->is_found = false;
}
}
function getCity() {
return $this->city;
}
function getCurrent() {
return $this->current_conditions;
}
function getForecast() {
return $this->forecast_conditions;
}
function isFound() {
return $this->is_found;
}
}
$gweather = new GoogleWeatherAPI('valencia','es');
if($gweather->isFound()) {
echo '<pre>'; print_r($gweather->getCity());
echo '</pre>';
echo '<pre>';
print_r($gweather->getCurrent());
echo '</pre>';
echo '<pre>';
print_r($gweather->getForecast()); echo '</pre>';
}
?>
Tags: google, php, weather
This entry was posted
on Friday, September 11th, 2009 at 9:24 AM and is filed under google, php.
You can follow any responses to this entry through the RSS 2.0 feed.
You can leave a response, or trackback from your own site.