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
issue146:python [2019/07/14 15:26] auntieeissue146:python [2019/07/16 23:06] (Version actuelle) andre_domenech
Ligne 21: Ligne 21:
 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/)
  
-Cela ne vous parait-il pas familier ? Il a d'évidence une structure clé:valeur. Quelque chose comme un dictionnaire dans Python ? Hmmmm.+Cela ne vous paraît-il pas familier ? Il a d'évidence une structure clé:valeur. Quelque chose comme un dictionnaire dans Python ? Hmmmm.
  
 **I was going to give you an example of getting and working with some JSON data by using Weather Underground, but they have removed the free access. So, I've decided to try the Dark SKY API. In order to use their service, you need to sign up for a free account. This account will give you up to 1000 free API requests per day. This should be enough for you to do some testing on your own. When I was trying out the code for this month, I used way less than 40 requests. You can sign up at https://darksky.net/dev/docs and click on the "SIGN UP" button in the upper-right corner of the page. They will send you an email requesting you to confirm your email address with a link. Once you do that, they will provide you with your own secret key. **I was going to give you an example of getting and working with some JSON data by using Weather Underground, but they have removed the free access. So, I've decided to try the Dark SKY API. In order to use their service, you need to sign up for a free account. This account will give you up to 1000 free API requests per day. This should be enough for you to do some testing on your own. When I was trying out the code for this month, I used way less than 40 requests. You can sign up at https://darksky.net/dev/docs and click on the "SIGN UP" button in the upper-right corner of the page. They will send you an email requesting you to confirm your email address with a link. Once you do that, they will provide you with your own secret key.
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 ils 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 en cliquant 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 ils 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'à 1 000 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 en cliquant 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.
  
-L'un des désidérata du service est que vous gardiez votre clé secrète, disonssecrète ; aussi, je ne vous dévoile pas ma clé. J'utiliserai « {secretkey} » (clésecrète) quand 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.+L'un des desiderata 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) quand c'est nécessaire. Pour simplifier, je créerai une 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 43: Ligne 43:
 We'll start out by testing it in a browser. Put the above address into the browser address box. What you'll get back is quite a bit of data. If you are using Google Chrome, be sure to either add or enable JSONview extension. Firefox shows the JSON pretty print by default.** We'll start out by testing it in a browser. Put the above address into the browser address box. What you'll get back is quite a bit of data. If you are using Google Chrome, be sure to either add or enable JSONview extension. Firefox shows the JSON pretty print by default.**
  
-Essayons-la. En plus de votre Clé d'API, vous devrez connaître les Longitude et Latitude de l'endroit qui vous intéresse. Si vous ne connaissez pas les longitude et latitude à brûle pour-point, vous pouvez aller sur https://www.latlong.net/ et saisissez votre ville et votre pays. J'utiliserai les coordonnées d'Austin, au Texas.+Essayons-la. En plus de votre Clé d'API, vous devrez connaître les longitude et latitude de l'endroit qui vous intéresse. Si vous ne connaissez pas les longitude et latitude à brûle-pourpoint, vous pouvez aller sur https://www.latlong.net/ et saisissez votre ville et votre pays. J'utiliserai les coordonnées d'Austin, au Texas.
  
 latlon = 30.2672° N, -97.7431° W latlon = 30.2672° N, -97.7431° W
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 complexes ; aussi, nous commençons avec un rapport complet).+(Les appels complémentaires peuvent être quelque peu complexes ; aussi, nous commençons par 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é est une quantité de données appréciable. 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é est une quantité de données appréciable. Si vous utilisez Google Chrome, assurez-vous d'ajouter ou d'autoriser l'extension JSONview. Par défaut, Firefox affiche bien le JSON.
Ligne 63: Ligne 63:
 Voici (page suivante, en haut à droite) une 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 ». Voici (page suivante, en haut à droite) une 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 ».
  
-Bien que je l'aie 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.+Bien que je l'aie limitée à 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 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 connexion directe pendant que nous développons notre programme sans que ça nous coûte 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 connexion directe pendant que nous développons notre programme sans que ça nous coûte des appels directs. Souvenez-vous que 1 000 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 111: Ligne 111:
 Again, things like ‘nearestStormDistance’ and ‘‘precipType’ might not be available when you make your requests. We’ll deal with those in a few moments.** Again, things like ‘nearestStormDistance’ and ‘‘precipType’ might not be available when you make your requests. We’ll deal with those in a few moments.**
  
-Ceci devrait vous paraître assez habituel. Nous l'avons fait de nombreuses fois pendant toutes ces années. La seule différence est que nous disons à la bibliothèque JSON de charger le fichier et de le retourner comme un dictionnaire Python appelé « response » (réponse). Quand nous l'imprimons dans le terminal, il doit ressembler à ceci...+Ceci devrait vous paraître assez habituel. Nous l'avons fait de nombreuses fois pendant toutes ces années. La seule différence est que nous disons à la bibliothèque JSON de charger le fichier et de le retourner comme un dictionnaire Python appelé « response » (réponse). Quand nous l'imprimons dans le terminal, il doit ressembler à ceci :
  
 {'latitude': 30.2672, 'longitude': -97.7431, 'timezone': 'America/Chicago', {'latitude': 30.2672, 'longitude': -97.7431, 'timezone': 'America/Chicago',
Ligne 131: Ligne 131:
 And that makes perfect sense to me. Now, to help break down the first line of the above code, ‘response’ is the full data packet we got from the JSON library read, ‘currently’ is the section we want to deal with, and ‘time’ is the key that we want. It’s just that simple.** And that makes perfect sense to me. Now, to help break down the first line of the above code, ‘response’ is the full data packet we got from the JSON library read, ‘currently’ is the section we want to deal with, and ‘time’ is the key that we want. It’s just that simple.**
  
-Maintenant, occupons-nous du temps présent. Il se presente sous « time » dans la section « currently ». Comme je vis aux USA, j'utiliserai le format temporel qui m'est facile. Je suis sûr que vous savez maintenant comment l'adapter pour vous. Mais, juste au cas où, voici un lien pour un rapide aide-mémoire : https://www.programiz.com/python-programming/datetime/strftime+Maintenant, occupons-nous du temps présent. Il se présente sous « time » dans la section « currently ». Comme je vis aux USA, j'utiliserai le format temporel qui m'est facile. Je suis sûr que vous savez maintenant comment l'adapter pour vous. Mais, juste au cas où, voici un lien pour un rapide aide-mémoire : https://www.programiz.com/python-programming/datetime/strftime
  
 tim = response['currently']['time'] tim = response['currently']['time']
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 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 la 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 la section que nous voulons traiter et « time » est la 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 154: Ligne 154:
 Again, to carry on with the key:value dictionary analogy, ‘currents’ is the section of the data, ‘summary’ is the key and ‘Light Rain’ is the value. We also assigned (in the first line of the two) the entire ‘currently’ section of the returned data dictionary to a dictionary named currents. So now, when we want any value within the currents dictionary, we just put the key for that value in square brackets. Here (top) are a few more examples set as print statements.** Again, to carry on with the key:value dictionary analogy, ‘currents’ is the section of the data, ‘summary’ is the key and ‘Light Rain’ is the value. We also assigned (in the first line of the two) the entire ‘currently’ section of the returned data dictionary to a dictionary named currents. So now, when we want any value within the currents dictionary, we just put the key for that value in square brackets. Here (top) are a few more examples set as print statements.**
  
-Maintenant, nous pouvons jouer à simplifier un peu les données pour en avoir moins à saisir. Par exemple...+Maintenant, nous pouvons jouer à simplifier un peu les données pour en avoir moins à saisir. Par exemple :
  
 currents = response['currently'] currents = response['currently']
Ligne 232: Ligne 232:
 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 le 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 le 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 vôtre) 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 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. 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.
issue146/python.txt · Dernière modification : 2019/07/16 23:06 de andre_domenech