# # Activité 1 du chapitre 3 (p54) : Utiliser des APIs et des modules Python # # Accès au service OpenWeatherMap # Mettre ici la clé obtenue par le professeur à partir de ce lien : # https://home.openweathermap.org/users/sign_up # Les élèves peuvent aussi obtenir eux-même une clé (nécessite l'accès à leur mail). cle = '0001aa32345d1df47456f64b45f8170b' # -------- Question 1 : Requête explicite à l'API de OpenWeatherMaps import requests import json def requete(cle, ville): """ Affiche les informations du site OpenWeatherMaps pour une ville """ # Interroger le service Web OpenWeatherMap pour la ville donnée reponse = requests.get('https://api.openweathermap.org/data/2.5/weather?q='+ville+'&appid='+cle) # Afficher le dictionnaire obtenu : print(json.dumps(reponse.json(), indent=4)) ### COMPLÉTER ici par un test de la fonction ci-dessus # -------- Question 3 : Utilisation du module Python pyowm # module OpenWeatherMap à installer par la commande # pip install pyowm # à exécuter dans le terminal ou depuis EduPython from pyowm.owm import OWM # Obtenir un accès au site authentifié par la clé owm = OWM(cle) def test_api(cle, ville): """ Afficher la météo d'une ville """ # Obtenir l'objet 'manager' pour gérer une session avec le site OpenWeatherMaps manager = owm.weather_manager() # Obtenir la météo d'une ville et l'afficher observation = manager.weather_at_place(ville) print(observation.weather.status, observation.weather.temperature('celsius')) ### COMPLÉTER ici par un test de la fonction ci-dessus # -------- Question 4 : Utilisation plus avancée # - accès au registre des villes # - accès aux prévisions à 8 jours def previsions(owm, ville, pays): """ Retourne les prévisions météo (temps et température) d'une ville """ # Obtenir l'accès au registre des villes reg = owm.city_id_registry() # Obtenir les informations sur la ou les villes de ce nom liste = reg.locations_for(ville, pays) if len(liste) == 0: # ville inconnue print(ville+' inconnue !') return ([], []) # Extraire la latitude et longitude de la première ville de la liste latitude = liste[0].lat longitude = liste[0].lon # Obtenir l'objet 'manager' pour gérer une session avec le site OpenWeatherMap manager = owm.weather_manager() # Obtenir les prévisions pour les coordonnées données previsions = manager.one_call(latitude, longitude) ### COMPLÉTER ici pour créer un tableau des prévisions de températures ### et un tableau des prévisions du temps (couvert, ensoleillé, ...) ### Ces informations sont dans le tableau previsions.forecast_daily. ### Chaque élément de ce tableau correspond aux prévisions d'une journée. ### Ces prévisions sont un objet qui contient deux attributs qui nous intéressent : ### previsions.forecast_daily[i].temperature('celsius') : température en ºC ### previsions.forecast_daily[i].status : météo sous forme de chaine de caractères temperatures = [e.temperature('celsius') for e in previsions.forecast_daily] meteo = [e.status for e in previsions.forecast_daily] # retourner les deux tableaux sous forme d'un tuple return temperatures, meteo ### COMPLÉTER ici pour afficher les prévisions d'au moins deux villes ### Le pays est le code sur 2 lettres du pays : ### 'FR' pour France, 'GB' pour Grande-Bretagne, etc. # -------- Section 2, Question 2 : Afficher les prévisions from matplotlib import pyplot ### COMPLÉTER ici pour afficher les graphes des prévisions de températures. ### Utiliser la fonction `previsions` ci-dessus pour obtenir les prévisions. ### Utiliser la fonction `pyplot.plot` de la bibliothèque pyplot importée ci-dessus. ### On peut appeler `plot` plusieurs fois pour afficher plusieurs graphes ### Utiliser la fonction `pyplot.legend` pour afficher la légende avec les noms des villes. ### Utiliser la fonction `pyplot.show` pour afficher le graphe, ### ou `pyplot.savefig` pour l'enregistrer dans un fichier. temperatures, meteo = previsions(owm, 'Paris', 'FR') pyplot.plot(temperatures, meteo) pyplot.show()