Google Weather API
Voici une classe vous permettant de profiter des services de météo proposés par Google.
Vous allez pouvoir très facilement obtenir un rendu de ce style :

Cette classe s’utilise simplement de la manière suivante :
$gweather = new GoogleWeatherAPI('nantes','fr'); // "en" also work
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>';
}
Cela donne le rendu suivant :
Nantes, Pays de la Loire Array ( [condition] => Couverture nuageuse partielle [temp_f] => 63 [temp_c] => 17 [humidity] => Humidité : 68 % [icon] => http://www.google.com/ig/images/weather/partly_cloudy.png [wind_condition] => Vent : NO à 10 km/h ) Array ( [0] => Array ( [day_of_week] => sam. [low] => 7 [high] => 19 [icon] => http://www.google.com/ig/images/weather/rain.png [condition] => Pluie ) [1] => Array ( [day_of_week] => dim. [low] => 8 [high] => 19 [icon] => http://www.google.com/ig/images/weather/rain.png [condition] => Pluie ) [2] => Array ( [day_of_week] => lun. [low] => 9 [high] => 19 [icon] => http://www.google.com/ig/images/weather/rain.png [condition] => Pluie ) [3] => Array ( [day_of_week] => mar. [low] => 8 [high] => 19 [icon] => http://www.google.com/ig/images/weather/rain.png [condition] => Averses ) )
Libre à vous de mettre en forme les données proposées.
Voici un exemple de rendu que je vous propose :

Démonstration
example.php (1,9 KiB, 4 025 hits)
Attention : Google envoie toutes les données dans un flux xml en UTF8, si votre site est en UTF8, aucun problème, sinon, pensez à utf8_decode().
GoogleWeather.class.php (3,3 KiB, 4 671 hits)
Changelog
[02/09/2009]
- Utilisation de CURL
[25/08/2009]
- Ajout d’une démo
[19/05/2009]
- Mise en place de la méthode isFound() pour tester que la ville à été trouvé
[09/05/2009]
- Release initiale



20 mai 2009 - 8 h 08 min
[19/05/2009]
- Mise en place de la méthode isFound() pour tester que la ville à été trouvé
5 juin 2009 - 13 h 20 min
Bonjour Yohann, tout d’abord bravo pour ton blog qui est très propre, clair, et très intéressant.
Il me serait pratique d’utiliser les données météorologiques que Weather offre via google, ton travail tombe à pic !
Je bricole depuis quelques minutes pour pouvoir personnaliser à ma sauce ton code. Cependant, une erreur, certes courante mais que je n’arrive pas à contourner, me tombe dessus !
Une erreur sur cette ligne :
public $city_code = »;
m’indiquant :
Parse error: syntax error, unexpected T_STRING, expecting T_OLD_FUNCTION or T_FUNCTION or T_VAR
Après quelques bricolage, je n’arrive toujours pas à m’en défaire… pourrais-tu m’éclairer ?
je te remercie d’avance.
François D. , RonRon.
5 juin 2009 - 13 h 51 min
Me revoilà,
Je ne me suis pas arrêté de chercher,
et après quelques recherches, il s’agirait d’un problème de version PHP sous mon hébergeur (OVH).
PHP4 ne rendrait rien, alors qu’avec PHP5, c’est ok !
5 juin 2009 - 14 h 10 min
Exactement c’est un problème de version de PHP. Il y avait le même commentaire sur ma classe gmaps. En effet, mes sources sont en objets et PHP4 n’était pas soumis au même normes. Sur OVH, pour forcer le php5, dans le .htaccess :
AddType x-mapp-php5 .php
SetEnv PHP_VER 5
5 juin 2009 - 15 h 36 min
J’ai fait d’une autre manière, en mettant « ma_page.php5″ pour le forcer en php 5.
Au plaisir,
François D., Ronron.
2 juillet 2009 - 15 h 46 min
Merci pour cette petite classe.
Bien pratique comme base
6 juillet 2009 - 13 h 35 min
Bonjour,
Je programme en VB.NET et l’intégration de l’API google weather se fait sans problèmes. c’est au niveau du résultat que cela coince :
les informations s’affichent en anglais et si je rajoute « &hl=fr » à la fin du lien cela me plante le programme
Quelqu’un a une idée svp ?
Merci
8 juillet 2009 - 8 h 40 min
Peut-être un problème d’encodage dut à l’UTF8 ?
8 juillet 2009 - 16 h 18 min
Bonjour,
J’ai télécharger le fichier mais je ne sais pas comment le personnaliser ? Quels sont les champs à remplir et avec quel type de données ?
Merci à vous !
8 juillet 2009 - 21 h 47 min
Le constructeur me semble suffisamment explicite non ?
$gweather = new GoogleWeatherAPI(‘nantes’,'fr’);
Ta ville, ta langue, et c’est tout
12 juillet 2009 - 16 h 00 min
Bonjour,
Super cette class !!
Par contre j’ai un petit soucis de temps en temps j’ai une erreur qui me plane tout :
Warning: file_get_contents(http://www.google.com/ig/api?weather=Vesoul&hl=fr) [function.file-get-contents]: failed to open stream: HTTP request failed! HTTP/1.0 503 Service Unavailable in /www/wsb/GoogleWeather.class.php on line 58
Ce qui est bisard c’est que si je lance l’adresse http://www.google.com/ig/api?weather=Vesoul&hl=fr le XML m’ai bien renvoyé !
Une idée ? car la je bloque !!
Merci
12 juillet 2009 - 22 h 36 min
Bizarre il semblerait que votre serveur n’arrive pas à contacter google par moment :p (erreur 503).
13 juillet 2009 - 12 h 01 min
Bonjour,
serait il possible d’avoir un exemple d’affichage du retour ?
Merci d’avance.
13 juillet 2009 - 13 h 35 min
C’est déjà le cas dans l’exemple ci-dessus. Vous avez juste à appeler le constructeur puis les méthodes getCurrent() & getForecast(). Cela vous renvoie un tableau qu’il reste à traiter.
Exemple :
Array
(
[condition] => Couverture nuageuse partielle
[temp_f] => 63
[temp_c] => 17
[humidity] => Humidité : 68 %
[icon] => http://www.google.com/ig/images/weather/partly_cloudy.png
[wind_condition] => Vent : NO à 10 km/h
)
Toutes les infos sont disponible dans l’array renvoyé.
13 juillet 2009 - 14 h 50 min
J’ai bien vu cela mais j’aurai voulu avoir un exemple du traitement de l’ARRAY svp (dsl je débute)
13 juillet 2009 - 14 h 53 min
Bonjour,
Suite au pb ennoncé précédement.
Y a t’il une limitation dans le nombre de requete que l’on peu faire vers l’API par jour ?
13 juillet 2009 - 16 h 23 min
@ maff : Il me semble effectivement que tout comme GoogleMaps, il y a une limitation (assez importante normalement) du nombre de requêtes par jours. Il faudrait remettre la main sur cette info dans la doc officielle.
@ Yann : Dans ce cas, je te conseil un bon tuto sur le PHP (sur les boucles de parcours de tableau) sur http://www.siteduzero.com ou http://www.developpez.com.
30 juillet 2009 - 18 h 04 min
Bonjour,
Google fournit-il la liste des villes dont la météo est fournit?
J’aimerais faire une auto-complétion pour permettre à l’utilisateur de choisir facilement sa ville et être certain de pouvoir lui afficher des données météo.
D’avance merci,
Thibault
30 juillet 2009 - 18 h 30 min
Non pas que je sache malheureusement… Pour l’auto-complétion ce sera compliqué, en tout cas, avec les services google.
28 août 2009 - 16 h 43 min
Superbe! Est-ce facile de passé ou de changé ta classe pour prendre les coordonnées GPS en lieu/ou de la ville? Style Fribourg qui est France ou en Suisse.
Merci pour le tuto.
Kid
31 août 2009 - 23 h 18 min
En gros, tu voudrais pouvoir saisir directement les coordonnées GPS ?
C’est peut être envisageable en utilisant l’API offerte par Google Maps… A vérifier.
1 septembre 2009 - 10 h 01 min
Yep, mais via un mobile Android. C’est pour un application de news avec météo inclu. une idée?
1 septembre 2009 - 11 h 51 min
Mmmm pas du tout. Je connais pas assez bien l’environnent Android. Mais je suis intéressé si tu trouves une solution à cela
.
1 septembre 2009 - 23 h 55 min
Salut!
-Très bon tuto , je viens de l’essayé avec EasyPHP 3.0 et cela marche à merveille . Mais quand j’ai transféré mon site sur Multimania , et que j’entre au site http://bloggingnino.cfun.fr/dpatsetif/ , il m’affiche cette erreur :
Fatal error: Call to a member function attributes() on a non-object in /data/members/free/multimania/fr/b/l/o/bloggingnino/htdocs/dpatsetif/GoogleWeather.class.php on line 67
Or tous marche sur EasyPHP.
-Vous pouvez m’aidez ? Merci.
2 septembre 2009 - 1 h 29 min
Ton serveur multimania est en PHP5 ?
Le file_get_contents est-il autorisé sur ton serveur ?
Essais de déboguer un petit peu pour en savoir plus.
2 septembre 2009 - 1 h 45 min
Oui il est en PHP5 , mais d’aprés mais recherche il n’autorise pas le file_get_contents.
2 septembre 2009 - 11 h 12 min
Dans ton php.ini (ou demande à ton hebergeur) de mettre « allow_fopen » à TRUE.
Sinon, il faudrait changer le code de cette classe pour utiliser CURL s’il est installé sur ta machine.
2 septembre 2009 - 11 h 17 min
J’ai modifié un peu la classe pour utiliser CURL, retest sur ton serveur avec la nouvelle classe.
2 septembre 2009 - 13 h 48 min
Salut!
-Merci pour le changement , malheureusement un autre erreur:
Fatal error: Uncaught exception ‘Exception’ with message ‘curl extension is not available’ in /data/members/free/multimania/fr/b/l/o/bloggingnino/htdocs/dpatsetif/GoogleWeather.class.php:113 Stack trace: #0 /data/members/free/multimania/fr/b/l/o/bloggingnino/htdocs/dpatsetif/GoogleWeather.class.php(62): GoogleWeatherAPI->getContent(‘http://www.goog…‘) #1 /data/members/free/multimania/fr/b/l/o/bloggingnino/htdocs/dpatsetif/meteo_now.php(3): GoogleWeatherAPI->__construct(‘setif’, ‘fr’) #2 /data/members/free/multimania/fr/b/l/o/bloggingnino/htdocs/dpatsetif/index.php(275): include(‘/data/members/f…’) #3 {main} thrown in /data/members/free/multimania/fr/b/l/o/bloggingnino/htdocs/dpatsetif/GoogleWeather.class.php on line 113
je croix aussi que CURL ne marche pas , ce pendant , je me dit si je peux pas utiliser CURL sous forme de .class.php , l’uploader sur mon site ,et que je modifier ton code pour qu’il utilise cette class?
2 septembre 2009 - 20 h 12 min
Oui curl n’est pas installé sur ton serveur. Il faut dire que multimania bloque pas mal les accès aux sites externes.
12 septembre 2009 - 11 h 13 min
COOL !!!
4 novembre 2009 - 11 h 12 min
Bonjour,
En premier lieu bravo ! je tentais de construire une class similaire en me basant sur le flux rss … la votre m’a fait gagner un temps non négligeable !!
J’en viens à ma question, connaissais vous un moyen de récupérer tous les icônes ? je cherche à les personnaliser pour une meilleur intégration dans le design de mon site :S
Cordialement,
b@b@
4 novembre 2009 - 19 h 50 min
Bonjour b@b@, tu peux les trouver ici (entre autre) : http://weatherdoll.com/weather-icons.php
5 novembre 2009 - 10 h 37 min
Merci beaucoup !
à charge de revanche
9 novembre 2009 - 23 h 47 min
Bonjour,
Comme tous les autres, nous te remercions beaucoup pour ce travail.
Cordialement.
28 novembre 2009 - 10 h 35 min
Bonjour,
Moi, je cherche le moyen de récuperer la méteo de dates antérieures …. !
Y a t’il un moyen de passer la date à checker ?
Merci par avance.
28 novembre 2009 - 12 h 22 min
Non malheureusement tu peux pas @Maverick42
29 novembre 2009 - 8 h 01 min
Bonjour,
Ok pour google API …. C’est dommage.
En fait Je désire créer une midi BDD de la météo de 200 villes de france sur 2008/2009. Peux être y a t’il un autre moyen ?
Merci pour vos réponses.
14 décembre 2009 - 23 h 07 min
Cette classe semble propre et bien codée
Je cherchais depuis un petit moment, une solution efficace pour utiliser des données météo !
Merci !
15 décembre 2009 - 18 h 57 min
Merci pour cette API qui est simple d’utilisation.
Par contre depuis cette après midi j’ai une erreur alors que tout marchait ce matin sans avoir rien changé entre temps.
« Warning: Google results parse problem : http error 0 in /mnt/117/sdb/7/GoogleWeather.class.php on line 97″
Est-ce un problème de mon serveur ou l’API ne fonctionnent plus? J’ai essayé de remettre les fichiers d’origine de ce site et sa ne marche plus aussi.