Outils pour utilisateurs

Outils du site


issue70:programmer_en_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évision
Révision précédente
issue70:programmer_en_python [2013/05/12 15:48] – [5] fredphil91issue70:programmer_en_python [2013/06/18 20:50] (Version actuelle) – [8] fredphil91
Ligne 5: Ligne 5:
 The way we left the code, you would run the program and enter in the terminal window the name of a TV show you want information on. Remember, we used the show Continuum. Once you pressed <Enter>, the program would call the api and search by the name of the show, and then return a list of show names that matches your input. You then would select from the list by entering a number and it would show “ShowID selected was 30789”. Now, we will create the code that will use that ShowID to get the series information. One other thing to keep in mind: the display routines are there pretty much to prove the routine works. The ultimate goal here is to create a reusable library that can be used in something like a GUI program. Feel free to modify the display routines if you want to do more with the standalone capabilities of the library.** The way we left the code, you would run the program and enter in the terminal window the name of a TV show you want information on. Remember, we used the show Continuum. Once you pressed <Enter>, the program would call the api and search by the name of the show, and then return a list of show names that matches your input. You then would select from the list by entering a number and it would show “ShowID selected was 30789”. Now, we will create the code that will use that ShowID to get the series information. One other thing to keep in mind: the display routines are there pretty much to prove the routine works. The ultimate goal here is to create a reusable library that can be used in something like a GUI program. Feel free to modify the display routines if you want to do more with the standalone capabilities of the library.**
  
-Le mois dernier, nous avons commencé notre version en ligne de commande d'une bibliothèque pour discuter avec l'API Web TVRAGE. Ce mois-ci, nous allons continuer à ajouter du code à cette bibliothèque. Si vous n'avez pas le code du mois dernier, s'il-vous-plaît récupérez-le maintenant sur pastebin (http://pastebin.com/8F3Bd1Xd) puisque que nous allons compléter ce code.+Le mois dernier, nous avons commencé notre version en ligne de commande d'une bibliothèque pour discuter avec l'API Web TVRage. Ce mois-ci, nous allons continuer à ajouter du code à cette bibliothèque. Si vous n'avez pas le code du mois dernier, veuillez le récupérer sur pastebin (http://pastebin.com/8F3Bd1Xd) puisque que nous allons compléter ce code.
  
-Dans l'état où nous avons laissé le code, vous devez exécuter le programme et entrer dans la fenêtre du terminal le nom d'une émission de télévision pour laquelle vous souhaitez obtenir des informations. Rappelez-vous, nous avons utilisé la série Continuum. Une fois que vous avez appuyé sur <Entrée>, le programme appelle l'API et recherche par le nom de l'émission, puis renvoie une liste de noms d'émissions correspondent à votre saisie. Vous pouvez ensuite sélectionner dans la liste en entrant un numéro et il affiche « le ShowID choisi est 30789 ». Maintenant, nous allons écrire le code qui va utiliser ce ShowID pour obtenir les informations sur la série. Une autre chose à garder à l'esprit : les routines d'affichage sont là simplement pour prouver que les routines fonctionnent. Le but ultime est de créer une bibliothèque réutilisable qui peut être utilisé dans  un programme graphique. N'hésitez pas à modifier les routines d'affichage si vous voulez faire plus avec les capacités autonomes de la bibliothèque.+Dans l'état où nous avons laissé le code, vous devez exécuter le programme et entrer dans la fenêtre du terminal le nom d'une émission de télévision pour laquelle vous souhaitez obtenir des informations. Rappelez-vous, nous avons utilisé la série Continuum. Une fois que vous avez appuyé sur <Entrée>, le programme appelait l'API et faisait une recherche avec le nom de l'émission, puis renvoyait une liste de noms d'émissions correspondant à votre saisie. Vous pouviez ensuite sélectionner dans la liste en entrant un numéro et il affichait « le ShowID choisi est 30789 ». Maintenant, nous allons écrire le code qui va utiliser ce ShowID pour obtenir les informations sur la série. Une autre chose à garder à l'esprit : les routines d'affichage sont là simplement pour prouver que les routines fonctionnent. Le but ultime est de créer une bibliothèque réutilisable qui peut être utilisée dans  un programme graphique. N'hésitez pas à modifier les routines d'affichage si vous voulez faire plus avec les capacités autonomes de la bibliothèque.
 ====== 2 ====== ====== 2 ======
  
Ligne 34: Ligne 34:
 • TimeZone** • TimeZone**
  
-La dernière routine que nous avons créée dans la classe était « AfficheResultatsEmission ». Nous allons placer notre prochaine routine juste après, et avant la routine « main ». L'information qui sera retournée (il y en a d'autres mais nous allons utiliser uniquement la liste ci-dessous) sera dans un dictionnaire et contiendra (si disponible) : +La dernière routine que nous avons créée dans la classe était « AfficheResultatsEmission ». Nous allons placer notre prochaine routine juste après, et avant la routine « main ». L'information qui sera retournée (il y en a d'autresmais nous allons utiliser uniquement la liste ci-dessous) sera dans un dictionnaire et contiendra (si disponible) : 
-• identifiant de l'émission +• identifiant de l'émission ; 
-• nom de l'émission +• nom de l'émission ; 
-• lien de l'émission +• lien de l'émission ; 
-• pays d'origine +• pays d'origine ; 
-• nombre de saisons +• nombre de saisons ; 
-• image de la série +• image de la série ; 
-• année de démarrage +• année de démarrage ; 
-• date de démarrage +• date de démarrage ; 
-• date de fin +• date de fin ; 
-• état (annulé, rediffusion, actuel, etc.) +• état (annulé, rediffusion, actuel, etc.) ; 
-• classification (fiction, réalité, etc.) +• classification (fiction, réalité, etc.) ; 
-• résumé de la série +• résumé de la série ; 
-• genre(s) +• genre(s) ; 
-• durée en minutes +• durée en minutes ; 
-• nom de la chaîne qui a diffusé pour la première fois +• nom de la chaîne qui a diffusé l'émission pour la première fois ; 
-• pays de la chaîne (c'est un peu la même chose que pays d'origine) +• pays de la chaîne (c'est à peu près la même chose que pays d'origine) ; 
-• heure de diffusion +• heure de diffusion ; 
-• jour de diffusion (dans la semaine) +• jour de diffusion (dans la semaine) ; 
-• fuseau horaire+• fuseau horaire.
  
 ====== 3 ====== ====== 3 ======
Ligne 85: Ligne 85:
 Maintenant, nous sommes à peu près revenus au code « normal » (affiché au milieu à droite) que vous avez déjà vu. La seule chose un peu différente, c'est le tag « chaîne » qui a un attribut « pays ». Nous récupérons les données d'attribut par la recherche de « child.attrib['attributetag'] » au lieu de « child.text ». Maintenant, nous sommes à peu près revenus au code « normal » (affiché au milieu à droite) que vous avez déjà vu. La seule chose un peu différente, c'est le tag « chaîne » qui a un attribut « pays ». Nous récupérons les données d'attribut par la recherche de « child.attrib['attributetag'] » au lieu de « child.text ».
  
-C'est la fin de cette routine. Maintenant (ci-dessous), nous avons besoin d'une méthode pour afficher les informations que nous avons obtenu par ce si dur travail. Nous allons créer une routine appelée « AfficheInfoEmission ».+C'est la fin de cette routine. Maintenant (ci-dessous), nous avons besoin d'une méthode pour afficher les informations que nous avons obtenues par ce si dur travail. Nous allons créer une routine appelée « AfficheInfoEmission ».
  
 Maintenant, nous devons mettre à jour la routine « main » (page suivante, en haut à droite) pour prendre en compte nos deux nouvelles routines. Je donne la routine entière ci-dessous, mais le nouveau code est affiché en noir. Maintenant, nous devons mettre à jour la routine « main » (page suivante, en haut à droite) pour prendre en compte nos deux nouvelles routines. Je donne la routine entière ci-dessous, mais le nouveau code est affiché en noir.
  
-En bas à gauche de la page suivante on voit à quoi devrait ressembler la sortie de « AfficheInfoEmission », en supposant que vous avez choisi « Continuum » comme émission.+En bas à gauche de la page suivanteon voit à quoi devrait ressembler la sortie de « AfficheInfoEmission », en supposant que vous avez choisi « Continuum » comme émission.
  
 ====== 5 ====== ====== 5 ======
Ligne 108: Ligne 108:
 • Screen Capture Image of Episode (if available)** • Screen Capture Image of Episode (if available)**
  
-Veuillez noter que je ne suis pas l'affichage des informations de fuseau horaire ici, mais n'hésitez pas à ajouter si vous le souhaitez.+Veuillez noter que je n'inclus pas l'affichage des informations de fuseau horaire ici, mais n'hésitez pas à l'ajouter si vous le souhaitez.
  
-Ensuite, nous devons travailler sur la routine qui liste les épisodes pour la série. La routine « qui travaille » sera appelé « TrouveListeEpisodes » et fournira les informations suivantes... +Ensuite, nous devons travailler sur la routine qui liste les épisodes pour la série. La routine « qui travaille » sera appelée « TrouveListeEpisodes » et fournira les informations suivantes : 
-• Saison +• Saison ; 
-• numéro de l'épisode +• numéro de l'épisode ; 
-• numéro de l'épisode au sein de la saison +• numéro de l'épisode au sein de la saison ; 
-• Numéro de production +• numéro de production ; 
-• Date de diffusion +• date de diffusion ; 
-• Lien +• lien ; 
-• Titre +• titre ; 
-• Résumé +• résumé ; 
-• Évaluation +• évaluation ; 
-• Capture d'image de l'épisode (si disponible)+• capture d'image de l'épisode (si disponible).
  
 ====== 6 ====== ====== 6 ======
  
-Before we start with the code, it would be helpful to revisit what the episode list request to the API returns. It looks something like that shown on the next page, top right.+**Before we start with the code, it would be helpful to revisit what the episode list request to the API returns. It looks something like that shown on the next page, top right.
  
 The information for each episode is in the “episode” tag – which is a child of “Season” – which is a child of “Episodelist” – which is a child of “Show”. We have to be careful how we parse this. As with most of our “worker” routines this time, the first few lines (below) are fairly easy to understand by now. The information for each episode is in the “episode” tag – which is a child of “Season” – which is a child of “Episodelist” – which is a child of “Show”. We have to be careful how we parse this. As with most of our “worker” routines this time, the first few lines (below) are fairly easy to understand by now.
Ligne 130: Ligne 130:
 Now we need to look for the “name” and “totalseasons” tags below the “root” tag “Show”. Once we’ve dealt with them, we look for the “Episodelist”, “Season” tags. Notice above that the “Season” tag has an attribute. You might notice (in the code above) that we aren’t including the “Showname” or “Totalseasons” data in the dictionary. We are assigning them to a variable that will be returned at the end of the routine to the calling code. Now we need to look for the “name” and “totalseasons” tags below the “root” tag “Show”. Once we’ve dealt with them, we look for the “Episodelist”, “Season” tags. Notice above that the “Season” tag has an attribute. You might notice (in the code above) that we aren’t including the “Showname” or “Totalseasons” data in the dictionary. We are assigning them to a variable that will be returned at the end of the routine to the calling code.
  
-Now that we have that portion of the data, we deal with the episode specific information (shown below).+Now that we have that portion of the data, we deal with the episode specific information (shown below).** 
 + 
 +Avant que nous commencions avec le code, il serait utile de revenir sur ce que l'API retourne lors de la demande de la liste des épisodes. Cela ressemble à ce qui est en haut à droite de la page suivante. 
 + 
 +Les informations pour chaque épisode sont dans la balise « épisode » - qui est un enfant de « saison » - qui est un enfant de « ListeEpisodes » - qui est un enfant de « Emission ». Nous devons faire attention à la façon dont nous analysons ceci. Comme avec la plupart de nos routines « utilitaires » de cette fois-ci, les quelques premières lignes (ci-dessous) sont assez faciles à comprendre à présent. 
 + 
 +Maintenant, nous devons chercher les balises « Nom » et « SaisonsTotal » en dessous de la balise racine « Emission ». Une fois que nous les avons traitées, nous cherchrons les balises « ListeEpisodes » et « Saison ». Remarquez ci-dessus que la balise « Saison » a un attribut. Vous remarquerez peut-être (dans le code ci-dessus) que nous n'incluons pas les données « NomEmission » ni «SaisonsTotal » dans le dictionnaire. Nous les assignons à une variable qui sera renvoyée au code appelant à la fin de la routine. 
 + 
 +Maintenant que nous avons cette partie des données, nous traitons les informations spécifiques à l'épisode (voir ci-dessous).
  
 ====== 7 ====== ====== 7 ======
  
-All that’s left now (bottom right) is to append the episode specific information (that we’ve put into the dictionary) to our list, and keep going. Once we are done with all the episodes, we return to the calling routine and, as I stated earlier, return three items of data, “ShowName”, “TotalSeasons” and the list of dictionaries.+**All that’s left now (bottom right) is to append the episode specific information (that we’ve put into the dictionary) to our list, and keep going. Once we are done with all the episodes, we return to the calling routine and, as I stated earlier, return three items of data, “ShowName”, “TotalSeasons” and the list of dictionaries.
  
-Next, we need to create our display routine. Again, it’s fairly straightforward. The only thing that you might not recognize is the “if e.has_key(‘keynamehere’)“ lines. This is a check to make sure that there is actually data in the “Rating” and “Summary” variables. Some shows don’t have this information, so we include the check to make our print-to-screen data a little prettier (shown above right).+Next, we need to create our display routine. Again, it’s fairly straightforward. The only thing that you might not recognize is the “if e.has_key(‘keynamehere’)“ lines. This is a check to make sure that there is actually data in the “Rating” and “Summary” variables. Some shows don’t have this information, so we include the check to make our print-to-screen data a little prettier (shown above right).** 
 + 
 +Tout ce qui reste à faire (en bas à droite) est d'ajouter les informations spécifiques de l'épisode (que nous avons mises dans le dictionnaire) à notre liste, et de continuer. Une fois que nous avons fini avec tous les épisodes, nous revenons à la routine d'appel et, comme je l'ai dit plus tôt, retournons trois données, « NomEmission », « SaisonsTotal » et la liste des dictionnaires. 
 + 
 +Ensuite, nous devons créer notre routine d'affichage. Encore une fois, c'est assez simple. La seule chose que vous pourriez ne pas reconnaître, c'est le « if e.has_key('keynamehere') ». C'est une vérification pour s'assurer qu'il y a effectivement des données dans les variables « Évaluation » et « Résumé ». Certaines émissions n'ont pas cette information, aussi nous incluons la vérification pour améliorer les données que nous afficherons à l'écran (ci-dessus à droite).
  
 ====== 8 ====== ====== 8 ======
  
-All that’s left is to update our “main” routine (next page, shown top right). Once again, I’m going to provide the full “main” routine with the newest code in black bold.+**All that’s left is to update our “main” routine (next page, shown top right). Once again, I’m going to provide the full “main” routine with the newest code in black bold.
  
 Now, if you save and run the program, the output of the “GetEpisodeList” and “DisplayEpisodeList” will work. Shown bottom right is a snippet of the Episode information. Now, if you save and run the program, the output of the “GetEpisodeList” and “DisplayEpisodeList” will work. Shown bottom right is a snippet of the Episode information.
Ligne 146: Ligne 158:
 That’s it for this month. As always, you can find the full source code on pastebin at http://pastebin.com/kWSEfs2E. I hope you enjoy playing with the library. There is additional data available from the API that you can include. Please remember, TVRage provides this information for free, so consider donating to them to help their efforts at updating the API and for all their hard work. That’s it for this month. As always, you can find the full source code on pastebin at http://pastebin.com/kWSEfs2E. I hope you enjoy playing with the library. There is additional data available from the API that you can include. Please remember, TVRage provides this information for free, so consider donating to them to help their efforts at updating the API and for all their hard work.
  
-I’ll see you next time. Enjoy.+I’ll see you next time. Enjoy.** 
 + 
 +Tout ce qui reste à faire est de mettre à jour notre routine « main » (en haut à droite de la page suivante). Encore une fois, je vais donner la routine « main » complète avec le nouveau code en caractères gras.
  
 +Maintenant, si vous enregistrez et exécutez le programme, la sortie de « TrouveListeEpisodes » et « AfficheListeEpisodes » va fonctionner. En bas à droite se trouve un extrait de l'information d'un épisode.
  
 +C'est tout pour ce mois-ci. Comme toujours, vous pouvez trouver le code source complet sur ​​pastebin : http://pastebin.com/gU5XSPcq. J'espère que jouer avec la bibliothèque vous amuse. Il existe des données supplémentaires disponibles avec l'API que vous pouvez utiliser. S'il vous plaît rappelez-vous que TVRage fournit cette information gratuitement, alors pensez à leur faire un don pour aider leurs efforts dans la mise à jour de l'API et en guise de remerciements pour leur travail acharné.
  
-code en français : +Je vous verrai la prochaine fois. Amusez-vous bien.
-http://pastebin.com/gU5XSPcq+
issue70/programmer_en_python.1368366490.txt.gz · Dernière modification : 2013/05/12 15:48 de fredphil91