//Hourly uri
'hourly' => [
75001 => 'https://www.accuweather.com/en/fr/paris-01-louvre/75001/hourly-weather-forecast/179142_pc?day=',
+ 75004 => 'https://www.accuweather.com/en/fr/paris-04-hotel-de-ville/75004/hourly-weather-forecast/179145_pc?day=',
75005 => 'https://www.accuweather.com/en/fr/paris-05-pantheon/75005/hourly-weather-forecast/179146_pc?day=',
75007 => 'https://www.accuweather.com/en/fr/paris-07-palais-bourbon/75007/hourly-weather-forecast/179148_pc?day=',
75009 => 'https://www.accuweather.com/en/fr/paris-09-opera/75009/hourly-weather-forecast/179150_pc?day=',
+ 75013 => 'https://www.accuweather.com/en/fr/paris-13-gobelins/75013/hourly-weather-forecast/179154_pc?day=',
75015 => 'https://www.accuweather.com/en/fr/paris-15-vaugirard/75015/hourly-weather-forecast/179156_pc?day=',
75019 => 'https://www.accuweather.com/en/fr/paris-19-buttes-chaumont/75019/hourly-weather-forecast/179160_pc?day=',
75116 => 'https://www.accuweather.com/en/fr/paris-16-passy/75116/hourly-weather-forecast/179246_pc?day='
//Daily uri
'daily' => [
75001 => 'https://www.accuweather.com/en/fr/paris-01-louvre/75001/daily-weather-forecast/179142_pc',
+ 75004 => 'https://www.accuweather.com/en/fr/paris-04-hotel-de-ville/75004/daily-weather-forecast/179145_pc',
75005 => 'https://www.accuweather.com/en/fr/paris-05-pantheon/75005/daily-weather-forecast/179146_pc',
75007 => 'https://www.accuweather.com/en/fr/paris-07-palais-bourbon/75007/daily-weather-forecast/179148_pc',
75009 => 'https://www.accuweather.com/en/fr/paris-09-opera/75009/daily-weather-forecast/179150_pc',
+ 75013 => 'https://www.accuweather.com/en/fr/paris-13-gobelins/75013/daily-weather-forecast/179154_pc',
75015 => 'https://www.accuweather.com/en/fr/paris-15-vaugirard/75015/daily-weather-forecast/179156_pc',
75019 => 'https://www.accuweather.com/en/fr/paris-19-buttes-chaumont/75019/daily-weather-forecast/179160_pc',
75116 => 'https://www.accuweather.com/en/fr/paris-16-passy/75116/daily-weather-forecast/179246_pc'
//Get rainrisk
$rainrisk = str_replace('%', '', trim($node->div[0]->div[0]->div[1]))/100;
- //Label is Rain when we have a rainfall
- if (($pluviolabel = trim($node->div[1]->div[0]->div[0]->div[1]->p[1])) == 'Rain') {
- //Get rainfall
- $rainfall = str_replace(' mm', '', $node->div[1]->div[0]->div[0]->div[1]->p[1]->span[0]);
- //Cloud Cover, no rainfall
- } else {
- //Set rainfall to 0 (mm)
- $rainfall = 0;
+ //Set rainfall to 0 (mm)
+ $rainfall = 0;
+
+ //Iterate on each entry
+ foreach($node->div[1]->div[0]->div[0]->div[1]->p as $p) {
+ //Lookup for rain entry if present
+ if (trim($p) == 'Rain') {
+ //Get rainfall
+ $rainfall = floatval(str_replace(' mm', '', $p->span[0]));
+ }
}
//Store data
$hour = $type=='daily'?$type:$time->format('H');
//Check data availability
- //XXX: should never happen
- #if (!isset($data[$zipcode][$dsm][$hour])) {
- # //Skip unavailable data
- # continue;
- #}
+ //XXX: sometimes startup delay causes weather data to be unavailable for session first hour
+ if (!isset($data[$zipcode][$dsm][$hour])) {
+ //Skip unavailable data
+ continue;
+ }
//Set info alias
$info = $data[$zipcode][$dsm][$hour];