Outils pour utilisateurs

Outils du site


issue146:python

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révisionLes deux révisions suivantes
issue146:python [2019/07/12 15:23] d52frissue146:python [2019/07/12 19:24] d52fr
Ligne 17: Ligne 17:
 Alors, qu'est-ce que JSON exactement ? Alors, qu'est-ce que JSON exactement ?
  
-JSON veut dire JavaScript Object Notation. C'est une façon de lire, d'écrire et d'échanger des données en utilisant une norme industrielle. Python a une bibliothèque qui traite les données JSON.+JSON veut dire JavaScript Object Notation. C'est une façon de lire, d'écrire et d'échanger des données en utilisant une norme de l'industrie. Python a une bibliothèque qui traite les données JSON.
  
 En haut à droite, voici un court échantillon de données JSON (J'ai emprunté cet exemple sur https://developer.rhino3d.com/guides/rhinopython/python-xml-json/) En haut à droite, voici un court échantillon de données JSON (J'ai emprunté cet exemple sur https://developer.rhino3d.com/guides/rhinopython/python-xml-json/)
Ligne 27: Ligne 27:
 Now, one of the requirements of the service is that you keep your secret key, well, secret, so I won't disclose my key. I'll use "{secretkey}" wherever it's required. What I'll do to make it easy is to create a variable and assign the value to it. That way, you can use your secret key by simply plugging it into the code I will provide.** Now, one of the requirements of the service is that you keep your secret key, well, secret, so I won't disclose my key. I'll use "{secretkey}" wherever it's required. What I'll do to make it easy is to create a variable and assign the value to it. That way, you can use your secret key by simply plugging it into the code I will provide.**
  
-J'allais vous donner un exemple de l'acquisition et du travail avec des données JSON en utilisant « Weather Underground », mais il ont supprimé l'accès libre. Aussi, j'ai décidé d'essayer l'API Dark SKY. Pour utiliser leurs services, vous devez vous inscrire à un compte gratuit. Ce compte vous permet d'exécuter jusqu'à 1000 demandes gratuites d'API par jour. Ça devrait vous siffire pour faire quelques tests par vous-même. Quand j'ai testé le code de ce mois, j'ai utilisé largement moins de 40 demandes. Vous pouvez vous inscrire sur https://darksky.net/dev/docs et cliquer sur le bouton « SIGN UP » (inscription) dans le coin en haut à droite de la page. Ils vous enverront un mail pour confirmer votre adresse mail avec un lien. Une fois fait, ils vous fourniront votre clé secrète personnelle.+J'allais vous donner un exemple de l'acquisition et du travail avec des données JSON en utilisant « Weather Underground », mais il ont supprimé l'accès libre. Aussi, j'ai décidé d'essayer l'API Dark SKY. Pour utiliser leurs services, vous devez vous inscrire à un compte gratuit. Ce compte vous permet d'exécuter jusqu'à 1000 demandes gratuites d'API par jour. Ça devrait vous suffire pour faire quelques tests par vous-même. Quand j'ai testé le code de ce mois, j'ai utilisé largement moins de 40 demandes. Vous pouvez vous inscrire sur https://darksky.net/dev/docs et cliquer sur le bouton « SIGN UP » (inscription) dans le coin en haut à droite de la page. Ils vous enverront un mail pour confirmer votre adresse mail avec un lien. Une fois fait, ils vous fourniront votre clé secrète personnelle.
  
-Maintenant, un des désidératas du service est que vous gardiez votre clé secrète, disons, secrète ; aussi, je ne vous dévoile pas ma clé. J'utiliserai « (secretkey) » (clésecrète) si c'est nécessaire. Pour simplifier, je créerai un variable et je lui assignerai la valeur. De cette façon, vous pouvez utiliser votre clé secrète en la  glissant dans le code que je fournirai.+Maintenant, un des désidérata du service est que vous gardiez votre clé secrète, disons, secrète ; aussi, je ne vous dévoile pas ma clé. J'utiliserai « (secretkey) » (clésecrète) si c'est nécessaire. Pour simplifier, je créerai un variable et je lui assignerai la valeur. De cette façon, vous pouvez utiliser votre clé secrète en la  glissant dans le code que je fournirai.
  
 **Let's try it out. In addition to the API Key, you'll need to know the Latitude and Longitude of the area you are interested in. If you don't know your latitude and longitude off the top of your head, you can got to https://www.latlong.net/ and enter your city and country. I'll use that lat and lon for Austin, Texas... **Let's try it out. In addition to the API Key, you'll need to know the Latitude and Longitude of the area you are interested in. If you don't know your latitude and longitude off the top of your head, you can got to https://www.latlong.net/ and enter your city and country. I'll use that lat and lon for Austin, Texas...
Ligne 51: Ligne 51:
 https://api.darksky.net/forecast/{secretkey}/30.2672,-97.7431 https://api.darksky.net/forecast/{secretkey}/30.2672,-97.7431
  
-(Les appels complémentaires peuvent être quelque peu complexe ; aussi, nous commençons avec un rappoort complet).+(Les appels complémentaires peuvent être quelque peu complexes ; aussi, nous commençons avec un rapport complet).
  
 Nous commencerons par le tester dans notre navigateur. Mettez l'adresse ci-dessus dans le champ d'adresse du navigateur. Ce qui vous sera renvoyé n'a pas d'importance. Si vous utilisez Google Chrome, assurez-vous d'ajouter ou d'autoriser l'extension JSONview. Par défaut, Firefox affiche bien le JSON. Nous commencerons par le tester dans notre navigateur. Mettez l'adresse ci-dessus dans le champ d'adresse du navigateur. Ce qui vous sera renvoyé n'a pas d'importance. Si vous utilisez Google Chrome, assurez-vous d'ajouter ou d'autoriser l'extension JSONview. Par défaut, Firefox affiche bien le JSON.
Ligne 61: Ligne 61:
 Before going any further, please save a copy of the data. For Chrome, right-click in the window and select "Save as..". In Firefox, you can simply click the save button. Then save the file as "sampledata.json" somewhere easy to get to. This way, we can use it instead of a “live” feed while we are developing our program without costing “live” calls. Remember, 1000 calls per day sounds like a bunch, but during learning and development, it can go quickly.** Before going any further, please save a copy of the data. For Chrome, right-click in the window and select "Save as..". In Firefox, you can simply click the save button. Then save the file as "sampledata.json" somewhere easy to get to. This way, we can use it instead of a “live” feed while we are developing our program without costing “live” calls. Remember, 1000 calls per day sounds like a bunch, but during learning and development, it can go quickly.**
  
-Voici (page suivante, en haut à droite) la version abbrégée des données de sortie ; je l'ai délibérement modifié pour qu'il ne contienne que l'entête et la section « currently ».+Voici (page suivante, en haut à droite) la version abrégée des données de sortie ; je l'ai délibérément modifiée pour qu'elle ne contienne que l'entête et la section « currently ».
  
-Même si je l'ai limité à l'entête et la section « currently », ça fait beaucoup de données. Certaines d'entre leles peuvent avoir une importance pour vous et d'autres moins.+Même si je l'ai limité à l'entête et la section « currently », ça fait beaucoup de données. Certaines d'entre elles peuvent avoir une importance pour vous et d'autres moins.
  
-Avant d'aller plus loin,  merci de sauvegarder une copie des données. Pour Chrome, faites un clic droit dans la fenêtre et sélectionnez « Enregistrer sous ». Dans Firefox, vous n'avez qu'à appuyer sur le bouton Sauvegarder. Puis, sauvegardez le fichier comme « sampledata.json » dans un endroit facile d'accès. De cette façon, nous pouvons l'utiliser à la place d'une fourniture directe pendant que nous développons notre programme sans le coût des appels directs. Souvenez-vous que 1000 appels par jour semble un gros paquet, mais, pendant l'apprentissage et le développement, ça peut aller très vite.+Avant d'aller plus loin,  merci de sauvegarder une copie des données. Pour Chrome, faites un clic droit dans la fenêtre et sélectionnez « Enregistrer sous ». Dans Firefox, vous n'avez qu'à appuyer sur le bouton Enregistrer. Puis, sauvegardez le fichier comme « sampledata.json » dans un endroit facile d'accès. De cette façon, nous pouvons l'utiliser à la place d'une fourniture directe pendant que nous développons notre programme sans le coût des appels directs. Souvenez-vous que 1000 appels par jour semble un gros paquet, mais, pendant l'apprentissage et le développement, ça peut aller très vite.
  
 **Now we can look at the information presented. We have some header information, then a series of sections called "currently", "minutely", "hourly", "daily", “flags” and there might be one called "alerts". When you make a "full" call as we did above, you get everything. You can use the "exclude" option to filter out the items you don't want or need to see (more on that in a bit). However, right now, let's just concentrate on the "currently" section. **Now we can look at the information presented. We have some header information, then a series of sections called "currently", "minutely", "hourly", "daily", “flags” and there might be one called "alerts". When you make a "full" call as we did above, you get everything. You can use the "exclude" option to filter out the items you don't want or need to see (more on that in a bit). However, right now, let's just concentrate on the "currently" section.
Ligne 73: Ligne 73:
 Now let's start talking Python code. Create a new python file called ‘DarkskyJSON.py’ and put it in the same folder that you put the sample data download earlier.** Now let's start talking Python code. Create a new python file called ‘DarkskyJSON.py’ and put it in the same folder that you put the sample data download earlier.**
  
-Maintenant, nous pouvons regarder l'information présentée. Nous avons quelques informations d'entête, puisune série de sections appelées « currently », « minutely », « hourly », « daily », « flags » et il peut y en avoir une appelée « alerts ». Quand vous faites un appel « complet » comme celui du dessus, nous obtenons tout. Vous pouvez utiliser l'option « exclude » pour éliminer les sujets que vous ne voulez ou devez pas voir (plus là dessus sous peu). Cependant, juste maintenant, concentrons-nous sur la section « currently ».+Maintenant, nous pouvons regarder l'information présentée. Nous avons quelques informations d'entête, puis une série de sections appelées « currently », « minutely », « hourly », « daily », « flags » et il peut y en avoir une appelée « alerts ». Quand vous faites un appel « complet » comme celui du dessus, nous obtenons tout. Vous pouvez utiliser l'option « exclude » pour éliminer les sujets que vous ne voulez ou devez pas voir (plus là dessus sous peu). Cependant, pour le moment, concentrons-nous sur la section « currently ».
  
-Comme vous pouvez le voir, il y a un champ « time » qui est l'horodatage UNIX, des champs pour une résumé (summary), des informations sur les orages (storm - s'il y a un orage dans le voisinage), la température, le point de rosée (dewpoint), l'humidité, la pression, le vent et encore plus. Pour la plupart, ces données sont les mêmes que celles des sections « hourly » et « daily ». Certains champs pourraient ne pas être disponibles quand vous demandez des données. C'est le cas surtout pour des informations comme les orages, présentes seulement en cas d'orage dans le voisinage.+Comme vous pouvez le voir, il y a un champ « time » qui est l'horodatage UNIX, des champs pour une synthèse (summary), des informations sur les orages (storm - s'il y a un orage dans le voisinage), la température, le point de rosée (dewpoint), l'humidité, la pression, le vent et encore plus. Pour la plupart, ces données sont les mêmes que celles des sections « hourly » et « daily ». Certains champs pourraient ne pas être disponibles quand vous demandez des données. C'est le cas surtout pour des informations comme les orages, présentes seulement en cas d'orage dans le voisinage.
  
 Maintenant, commençons à parler du code en Python. Créez un nouveau fichier Python appelé « DarkskyJSON.py » et placez-le dans le même dossier que les données échantillon téléchargées précédemment. Maintenant, commençons à parler du code en Python. Créez un nouveau fichier Python appelé « DarkskyJSON.py » et placez-le dans le même dossier que les données échantillon téléchargées précédemment.
Ligne 99: Ligne 99:
 from datetime import datetime from datetime import datetime
  
-Vous devez penser que ça a du sens d'importer la bibliothèque json, mais pourquoi les bibliothèques requests et datetime ? C'est évident pour la bibliothèque json. La bibliothèque requests est ainsi faite que nous pouvons faire une requête http directement depuis notre programme. Et datetime est telle que nous pouvons convertir l'horodatage unix en une valeur que des huùains normaux peuvent comprendre d'un coup d'œil. Pendant qu'on y est,  vous pourriez vouloir faire un « pip3 list » dans un terminal et voir si requests est déjà installé.+Vous devez penser que ça a du sens d'importer la bibliothèque json, mais pourquoi les bibliothèques requests et datetime ? C'est évident pour la bibliothèque json. La bibliothèque requests est ainsi faite que nous pouvons faire une requête http directement depuis notre programme. Et datetime est telle que nous pouvons convertir l'horodatage unix en une valeur que des humains normaux peuvent comprendre d'un coup d'œil. Pendant qu'on y est,  vous pourriez vouloir faire un « pip3 list » dans un terminal et voir si requests est déjà installé.
  
-Bon. Avançons. La première tâche est de travailler avec notre fichier local (ci-dessous); aussi, nous écrirons un peu de code pour charger ces données JSON. J'ai fait une copie de mon fichier local - pour le conserver - et je l'ai appelé « sampledata.json ».+Bon. Avançons. La première tâche est de travailler avec notre fichier local (ci-dessous) ; aussi, nous écrirons un peu de code pour charger ces données JSON. J'ai fait une copie de mon fichier local - pour le conserver - et je l'ai appelé « sampledata.json ».
  
 **This should mainly look familiar to you. We’ve done it many times over the years. The only difference is that we are telling the JSON library to load the file and return it as a Python dictionary called ‘response’. When we print it to the terminal, it should look something like this… **This should mainly look familiar to you. We’ve done it many times over the years. The only difference is that we are telling the JSON library to load the file and return it as a Python dictionary called ‘response’. When we print it to the terminal, it should look something like this…
Ligne 117: Ligne 117:
 # 'currently': {'time': 1558447441, 'summary': 'Light Rain', 'icon': 'rain', 'nearestStormDistance': 0, 'precipIntensity': 0.0206, 'precipIntensityError': 0.0203, 'precipProbability': 0.73, 'precipType': 'rain', 'temperature': 79.43, 'apparentTemperature': 82.99, 'dewPoint': 72.49, 'humidity': 0.79, 'pressure': 1004.58, 'windSpeed': 6.51, 'windGust': 12.42, 'windBearing': 275, 'cloudCover': 0.72, 'uvIndex': 2, 'visibility': 6.7, 'ozone': 299.33}, 'offset': -5} # 'currently': {'time': 1558447441, 'summary': 'Light Rain', 'icon': 'rain', 'nearestStormDistance': 0, 'precipIntensity': 0.0206, 'precipIntensityError': 0.0203, 'precipProbability': 0.73, 'precipType': 'rain', 'temperature': 79.43, 'apparentTemperature': 82.99, 'dewPoint': 72.49, 'humidity': 0.79, 'pressure': 1004.58, 'windSpeed': 6.51, 'windGust': 12.42, 'windBearing': 275, 'cloudCover': 0.72, 'uvIndex': 2, 'visibility': 6.7, 'ozone': 299.33}, 'offset': -5}
  
-Une fois encore, pensez que des choses comme « nearestStormDistance » and « precipType » pourraient être absentes quand nous faisons des requêtes. Nous traiterons celles-ci dans un petit moment.+Une fois encore, pensez que des choses comme « nearestStormDistance » et « precipType » pourraient être absentes quand nous faisons des requêtes. Nous traiterons celles-ci dans un petit moment.
  
 **Now, we’ll deal with the current time. That shows up in the ‘currently’ section as ‘time’. Since I live in the U.S., I’ll use a datetime format that makes it easy for me. I’m sure you know by now how to do it for yourself. But just in case, here’s a quick memory aid reminder link: https://www.programiz.com/python-programming/datetime/strftime **Now, we’ll deal with the current time. That shows up in the ‘currently’ section as ‘time’. Since I live in the U.S., I’ll use a datetime format that makes it easy for me. I’m sure you know by now how to do it for yourself. But just in case, here’s a quick memory aid reminder link: https://www.programiz.com/python-programming/datetime/strftime
Ligne 141: Ligne 141:
 Thu 05/23/2019 19:30:20 Thu 05/23/2019 19:30:20
  
-Et, pour moi, c'est compréhensible. Maintenant, pour nous aider à décomposer la première ligne du cde ci-dessus, « response » est le paquet de données complet que nous avons obtenu par la lecture de la bibliothèque JSON, « currently » est le section que nous voulons traiter et « time » est le clé que nous voulons. Rien de plus simple.+Et, pour moi, c'est compréhensible. Maintenant, pour nous aider à décomposer la première ligne du code ci-dessus, « response » est le paquet de données complet que nous avons obtenu par la lecture de la bibliothèque JSON, « currently » est le section que nous voulons traiter et « time » est le clé que nous voulons. Rien de plus simple.
  
 **Now, we can play some simplifying games with the data so we don’t have to type so much. For example… **Now, we can play some simplifying games with the data so we don’t have to type so much. For example…
Ligne 163: Ligne 163:
 'Light Rain' 'Light Rain'
  
-À nouveau, pour faire l'analogie avec le dictionnaire clé:valeur, « currents » est la section des données, « summary » est la clé et 'Light Rain' est la valeur. Nous assignons aussi (dans la première des deux lignes) la section complète « currently » du dictionnaire de données renvoyé à un dictionnaire nommé currents. Aussi, maintenant, quand nous voulons n'importe quelle valeur dans le disctionnaire currents, nous avons juste à mettre la clé de cette valeur entre crochets. Ci-dessus, vous voyez quelques autres exemples placés dans des déclarations print.+À nouveau, pour faire l'analogie avec le dictionnaire clé:valeur, « currents » est la section des données, « summary » est la clé et 'Light Rain' est la valeur. Nous assignons aussi (dans la première des deux lignes) la section complète « currently » du dictionnaire de données renvoyé à un dictionnaire nommé currents. Aussi, maintenant, quand nous voulons n'importe quelle valeur dans le dictionnaire currents, nous avons juste à mettre la clé de cette valeur entre crochets. Ci-dessus, vous voyez quelques autres exemples placés dans des déclarations print.
  
 **And our output would look, using the above response data, something like this: **And our output would look, using the above response data, something like this:
Ligne 193: Ligne 193:
 ••s'il ne l'est pas, qu'il n'y ait pas d'erreur ? ••s'il ne l'est pas, qu'il n'y ait pas d'erreur ?
  
-Nous utiliserons la clé precipType comme exemple. S'il pleut ou neige, il sera disponible, mais si le soleil brille, il ne sera pas présent dans les données. Voici comment :+Nous utiliserons la clé precipType comme exemple. S'il pleut ou neige, elle sera disponible, mais si le soleil brille, elle ne sera pas présente dans les données. Voici comment :
  
 if 'precipType' in response['currently']: if 'precipType' in response['currently']:
Ligne 212: Ligne 212:
 response = session.get(url, timeout=timeout).json()** response = session.get(url, timeout=timeout).json()**
  
-Aussi, si dans la structure de données de réponse[‘currently’] la clé « preciType » est présente, nous l'imprimerons ; autrement, nous sortirons sans problème. C'est la partie « clé dans le distionnaire » de la clause if. À nouveau, pour beaucoup d'entre vous, nous avons déjà fait de telles choses avant ; c'est donc un sujet usé. Pour les autres ce sont des informations nouvelles.+Aussi, si dans la structure de données de réponse[‘currently’] la clé « precipType » est présente, nous l'imprimerons ; autrement, nous sortirons sans problème. C'est la partie « clé dans le dictionnaire » de la clause if. À nouveau, pour beaucoup d'entre vous, nous avons déjà fait de telles choses avant ; c'est donc un sujet usé. Pour les autres ce sont des informations nouvelles.
  
-Maintenant, regardons, la manière d'obtenir les données en direct. Nous commençons par définir un certain nombre de variables de sorte que nous pouvons l'avoir simplement prêt à l'emploi dans une chaîne. Voici le code (en haut à droite). +Maintenant, regardons, la manière d'obtenir les données en direct. Nous commençons par définir un certain nombre de variables de sorte que nous pouvons les avoir simplement prêtes à l'emploi dans une chaîne. Voici le code (en haut à droite). 
  
-Notez que l'appel de requests ne prend pas les réglages de délai déppasé en compte. C'est facile à changer, si ça vous pose problème. Ajoutez simplement une ligne et remplacez les deux dernières lignes du code ci-dessus :+Notez que l'appel de requests ne prend pas en compte les réglages de délai dépassé. C'est facile à changer, si ça vous pose problème. Ajoutez simplement une ligne et remplacez les deux dernières lignes du code ci-dessus :
  
-timeout = 10   # 10 second timeout+timeout = 10   # limite de temps de 10 secondes
  
 session = requests.Session() session = requests.Session()
Ligne 230: Ligne 230:
 For those of you who don’t live in the US, and/or don’t use English as your primary language, there are various options for you that keep you from having to write Fahrenheit to Celsius conversion functions, and will present the display text in a language that you want. For example, if you want to see the output in Norwegian, you can pass “nb” within the URL as language and “si” as the units. Below is a modified URL string creation statement that you can use to set things up correctly. Set ‘unitstouse’ as “si” and ‘langtouse’ to ‘nb’. If you want Spanish, use “es”. If you want German, use “de”, and so on. It’s all in the API docs.** For those of you who don’t live in the US, and/or don’t use English as your primary language, there are various options for you that keep you from having to write Fahrenheit to Celsius conversion functions, and will present the display text in a language that you want. For example, if you want to see the output in Norwegian, you can pass “nb” within the URL as language and “si” as the units. Below is a modified URL string creation statement that you can use to set things up correctly. Set ‘unitstouse’ as “si” and ‘langtouse’ to ‘nb’. If you want Spanish, use “es”. If you want German, use “de”, and so on. It’s all in the API docs.**
  
-Maintenant nous avons la structure de données de JSON dans notre dictionnaire, exactement comme nous les lisions précédemment à partir du ficher. Aussi, nous pouvons commenter nos quatre lignes qui lisent le fichier local et ajouter les lignes ci-dessus. De cette façon, si vous voulez continuer à tester, vous pouvez encore utiliser les fichier local en commentant le code de demande directe et en décommentant le code de lecture du fichier local.+Maintenant nous avons la structure de données en JSON dans notre dictionnaire, exactement comme nous les lisions précédemment à partir du ficher. Aussi, nous pouvons commenter nos quatre lignes qui lisent le fichier local et ajouter les lignes ci-dessus. De cette façon, si vous voulez continuer à tester, vous pouvez encore utiliser les fichier local en commentant le code de demande directe et en décommentant le code de lecture du fichier local.
  
 J'ai pris le programme de démonstration complètement fonctionnel que j'avais créé (sans ma clé secrète, bien sûr, mais vous pouvez mettre la votre) et je l'ai porté sur pastebin. L'adresse est https://pastebin.com/yJ7dJGis . J'ai pris le programme de démonstration complètement fonctionnel que j'avais créé (sans ma clé secrète, bien sûr, mais vous pouvez mettre la votre) et je l'ai porté sur pastebin. L'adresse est https://pastebin.com/yJ7dJGis .
  
-Pour ceux qui ne vivent pas aux USA, et/ou dont l'anglais n'est pas la langue maternelle, vous disposez de nombreuses options qui vous évitent de devoir écrire des fonctions de conversions des Fahrenheit en Celcius et qui présenteront le texte affiché dans la langue que vous voulez. Par exemple, si vous voulez qua sortie soit en norvégien, vous pouvez passer dans l'URL « nb » comme langue et « si » comme unités. Ci-dessous, vous trouvez une déclaration de création d'une chaîne d'URL modifiée que vous pouvez utiliser pour régler les choses correctement. Changez « unitstouse » en « si » et « langtouse » en « nb ». Si vous voulez de l'espagnol, utilisez « es ». Pour l'allemand, « de » et ainsi de suite. Tout est dans les docs d'API.+Pour ceux qui ne vivent pas aux USA, et/ou dont l'anglais n'est pas la langue maternelle, vous disposez de nombreuses options qui vous évitent de devoir écrire des fonctions de conversion des Fahrenheit en Celsius et qui présenteront le texte affiché dans la langue que vous voulez. Par exemple, si vous voulez que la sortie soit en norvégien, vous pouvez passer dans l'URL « nb » comme langue et « si » comme unités. Ci-dessous, vous trouvez une déclaration de création d'une chaîne d'URL modifiée que vous pouvez utiliser pour régler les choses correctement. Changez « unitstouse » en « si » et « langtouse » en « nb ». Si vous voulez de l'espagnol, utilisez « es ». Pour l'allemand, « de » et ainsi de suite. Tout est dans les docs d'API.
  
 **Where to go from here? Well, if you go back to the DarkSky API Documentation page I directed you to before, they have a full list of all the keys that are available. They include daily forecasts for the current day plus seven days, hourly forecasts, changing the output language and units of measurements, minute by minute forecasts for the next hour, alerts for severe weather information, and even a “time machine mode” that allows you to include a date in the past or in the future and get the observed (past) or forecasted (future) data. I haven’t played with these two options yet, so I don’t know how far backwards or forwards you can go. **Where to go from here? Well, if you go back to the DarkSky API Documentation page I directed you to before, they have a full list of all the keys that are available. They include daily forecasts for the current day plus seven days, hourly forecasts, changing the output language and units of measurements, minute by minute forecasts for the next hour, alerts for severe weather information, and even a “time machine mode” that allows you to include a date in the past or in the future and get the observed (past) or forecasted (future) data. I haven’t played with these two options yet, so I don’t know how far backwards or forwards you can go.
Ligne 242: Ligne 242:
 Start up the Time Machine!** Start up the Time Machine!**
  
-Où aller à partir de là ? Eh bien, si vous retournez à la page de documentation de l'API DarSky vers laquelle je vous ait dirigé précédemment, vous trouverez une liste complète de toutes les clés disponibles. Elles comprennent les prévsions quotidiennes pour aujourd'hui et les sept jours suivants, des prévisions à l'heure, la possibilité de changer la langue de sortie et les unités de mesure, des prévisions minutes par minute pour la prochaine heure, des alertes en cas d'informations sur du mauvais temps, et même un « time machine mode » (mode « machine à remonter le temps ») qui vous permet d'inclure une date dans le passé ou le futur pour disposer des données observées (passé) ou prévues (futur). Je n'ai pas encore joué avec ces options ; aussi, je ne sais pas de combien vous pouvez vous éloigner du temps présent dans un sens ou dans l'autre.+Où aller à partir de là ? Eh bien, si vous retournez à la page de documentation de l'API DarSky vers laquelle je vous ait dirigé précédemment, vous trouverez une liste complète de toutes les clés disponibles. Elles comprennent les prévisions quotidiennes pour aujourd'hui et les sept jours suivants, des prévisions à l'heure, la possibilité de changer la langue de sortie et les unités de mesure, des prévisions minute par minute pour la prochaine heure, des alertes en cas d'informations sur du mauvais temps, et même un « time machine mode » (mode « machine à remonter le temps ») qui vous permet d'inclure une date dans le passé ou le futur pour disposer des données observées (passé) ou prévues (futur). Je n'ai pas encore joué avec ces options ; aussi, je ne sais pas de combien vous pouvez vous éloigner du temps présent dans un sens ou dans l'autre.
  
-Si vous êtes un « fana de la météo » comme moi, ceci peut être un sujet vraiment amusant. Il devrait être assez facile de mettre ce code dans une interface graphique. Nous pourrions faire cela quelque part dans le futur.+Si vous êtes un « fana de météo » comme moi, ceci peut être un sujet vraiment amusant. Il devrait être assez facile de mettre ce code dans une interface graphique. Nous pourrions faire cela quelque part dans le futur.
  
 Démarrez la machine à remonter le temps ! Démarrez la machine à remonter le temps !
  
issue146/python.txt · Dernière modification : 2019/07/16 23:06 de andre_domenech