L'hacking sous toutes ses formes a fait la bonne grâce de notre ami Python. Je pense qu’il a laissé ses lettres de noblesse et s’est fait connaître du grand public.
Mais sous ses aspects simplistes, il reste néanmoins un langage puissant et aux multiples facettes comme on a pu le voir avec le traducteur. Cette fois on va aller chercher des modules qui vont nous donner la météo et pour cela, on va utiliser le bon Yahoo.
Il existe pyql-weather, une bibliothèque qui utilise les services de Yahoo pour vérifier la météo, ainsi que des informations supplémentaires telles que les continents, pays, villes, entre autres.
Pyql-weather est un wrapper (entièrement écrit en Python et publié sous la licence MIT) qui permet d’accèder aux serveurs de conseil et d’information d’YQL Yahoo. Parce qu'il utilise la bibliothèque standard de Python, pyql-weather n'a pas besoin d'autre dépendance que le langage Python installé sur l'ordinateur qui sera exécuté.
Il possède plusieurs modules qui ont chacun leurs utilités comme :
- pyql.geo
- pyql.weather
L’un va donner la géolocalisation du pays et l’autre le temps.
Le premier module, pyql.geo nous permet de lister les éléments géographiques tels que:
- Continents
- océans
- Les pays
- Unis
- villes
- PlaceFinder Locator (Lieux par la latitude-longitude)
Le deuxième module, pyql.weather, fournit des informations sur l'état du climat actuel:
- emplacement
- astronomie
- atmosphère
- vent
- Les unités de mesure
- les conditions météorologiques actuelles
- Prévisions météo pour les 5 prochains jours
Allez installons-le :
Code:
pip install pyql-weather
On va détailler les éléments qui composent ce module et enfin mettre en place un script simpliste qui permettra de nous donner une météo complète de notre région ou ville.
J’essaie de donner une vision différente de cet outil puissant
Voyons déjà l’ensemble des continents que le module englobe en lançant ce petit script :
Code:
from pyql.geo.continents import Continent continents = Continent.filter() for cont in continents: print(cont.name)
Africa
Europe
South America
Antarctic
Asia
North America
Australia
On peut trouver certaines informations sur un pays grâce notamment à la latitude et la longitude (module pyql.geo.placefinder), mais comme j’avais déjà fait des articles sur la géolocalisation je vais passer directement au reste :
Le module pyql.geo.states donne tous les états d’un pays comme par exemple pour la France :
Code:
>>> from pyql.geo.states import State >>> states = State.filter(place="France") >>> for state in states: print(state.name)
Résultat :
Centre region
Limousin
Poitou-Charentes
Auvergne
Burgundy
Pays de la Loire
Ile-de-France
Lower Normandy
Upper Normandy
Midi-Pyrenees
Champagne-Ardenne
Aquitaine
Rhone-Alpes
Picardy
Franche-Comte
Languedoc-Roussillon
Brittany
Lorraine
Provence-Alpes-Cote d'Azur
Nord-Pas-de-Calais
Alsace
Corsica
Les informations météo en utilisant WOEID
Une partie intégrante de GeoPlanet est le WOEID (où sur la terre IDentifier), un identifiant unique de référence 32-bit, maintenant attribué par Yahoo , qui identifie une caractéristique sur la Terre.
Voici le lien : http://woeid.rosselliot.co.nz/lookup/
Il vous suffit d’y entrer le nom d’un état, région, pays, ville pour accéder directement à son WOEID.
Maintenant que nous avons le moyen d’identifier avec exactitude l’endroit où nous voulons que le script agisse pour donner des informations météorologiques, nous pouvons avancer nos pions ou modules.
Vous l’avez d’ores et déjà compris le module allez instancier le service Yahoo et plus précisément son service géo localisateur et météo pour nous donner un état général en temps réel de la situation sur un endroit sélectionné.
On pose :
Code:
from pyql.weather.forecast import Forecast my_woeid = 628879 forecast = Forecast.get(woeid=my_woeid, u="c")
Maintenant que nous avons cet objet en mémoire on va utiliser les données le concernant en exploitant le script ainsi :
Code:
print(forecast.location.city) print(forecast.location.region) print(forecast.location.country)
En sortie, vous aurez la ville choisis par le WOEID mais aussi la région et le pays.
On va aller plus loin :
Code:
print("Lever du Soleil: {0}".format(forecast.astronomy.sunrise)) print("Coucher du soleil: {0}".format(forecast.astronomy.sunset))
Comme le print l’indique, on a le lever et coucher du soleil, intéressant pour les amis pêcheurs.
Pour identifier l'état actuel de la météo, nous utilisons le même objet comme suit:
Code:
print(forecast.item.condition.code) print(forecast.item.condition.date) print(forecast.item.condition.temp) print(forecast.item.condition.text)
Le résultat est le suivant :
28Thu, 16 Jun 2016 12:53 pm CDT26Rain
Yahoo Weather nous permet de connaître les prévisions météo de 5 dates continues (date de consultation, y compris).
Nous pouvons voir que le résultat est pyql-temps retourne un tableau d'objets au format JSON qui peuvent être manipulés pour formater les informations comme suit:
Code:
from pyql.weather.forecast import Forecast woeid = 628879 forecast = Forecast.get(woeid=woeid, u="c") ville = forecast.location.city region = forecast.location.region pays = forecast.location.country print("Condition climatique pour la Ville de {0}, {1}, {2}: \n".format(ville, region, pays)) for day in forecast.item.forecast: print("Date: {0} {1}".format(day['day'], day['date'])) print("Pronostique: {0} ({1})".format(day['text'], day['code'])) print("Température Minimale: {0}º {1}".format(day['low'], forecast.units.temperature)) print("Température Maximale: {0}º {1}".format(day['high'], forecast.units.temperature)) print("*****************************************************************************")
Le résultat est bluffant :
Condition climatique pour la Ville de Toulon, Provence-Alpes-Cote d'Azur, France:
Date: Thu 16 Jun 2016
Pronostique: Rain (12)
Température Minimale: 16º C
Température Maximale: 21º C
*****************************************************************************
Date: Fri 17 Jun 2016
Pronostique: Mostly Sunny (34)
Température Minimale: 13º C
Température Maximale: 22º C
*****************************************************************************
Date: Sat 18 Jun 2016
Pronostique: Scattered Thunderstorms (47)
Température Minimale: 13º C
Température Maximale: 21º C
*****************************************************************************
Date: Sun 19 Jun 2016
Pronostique: Scattered Thunderstorms (47)
Température Minimale: 14º C
Température Maximale: 22º C
*****************************************************************************
Date: Mon 20 Jun 2016
Pronostique: Partly Cloudy (30)
Température Minimale: 15º C
Température Maximale: 22º C
*****************************************************************************
Date: Tue 21 Jun 2016
Pronostique: Partly Cloudy (30)
Température Minimale: 16º C
Température Maximale: 21º C
*****************************************************************************
Date: Wed 22 Jun 2016
Pronostique: Mostly Sunny (34)
Température Minimale: 16º C
Température Maximale: 22º C
*****************************************************************************
Date: Thu 23 Jun 2016
Pronostique: Mostly Sunny (34)
Température Minimale: 16º C
Température Maximale: 23º C
*****************************************************************************
Date: Fri 24 Jun 2016
Pronostique: Sunny (32)
Température Minimale: 17º C
Température Maximale: 25º C
*****************************************************************************
Date: Sat 25 Jun 2016
Pronostique: Mostly Sunny (34)
Température Minimale: 18º C
Température Maximale: 25º C
*****************************************************************************
Python est magique en plus d’être concis, fiable et surtout facile.
A vos claviers et plus d’excuse pour savoir la météo de demain.
A bientôt.