Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente |
issue69:programmer_en_python [2013/04/03 10:21] – [2] auntiee | issue69:programmer_en_python [2013/04/03 19:52] (Version actuelle) – [12] fredphil91 |
---|
| |
| |
Voici la liste des routines que nous allons créer (enfin pas toutes pour cette fois. Je veux laisser la place à d'autres choses dans ce numéro). | Voici la liste des routines que nous allons créer (enfin pas toutes pour cette fois-ci. Je veux laisser la place à d'autres choses dans ce numéro). |
| |
def TrouverIdParNom(self, nomEmission, debug = 0) | def TrouverIdParNom(self, nomEmission, debug = 0) |
| |
| |
La routine TrouverIdParNom prend une chaîne (nomEmission), effectue l'appel API, analyse la réponse XML et retourne une liste des émissions qui correspondent aux informations contenues dans un dictionnaire, ce sera donc une liste de dictionnaires. RecupererInformationEmission récupère le showid de la routine précédente et retourne un dictionnaire d'informations sur l'émission. RecupererListeEpisodes utilise également le showid de la routine ci-dessus et retourne une liste de dictionnaires contenant des informations pour chaque épisode. | La routine TrouverIdParNom prend une chaîne (nomEmission), effectue l'appel API, analyse la réponse XML et retourne une liste des émissions qui correspondent aux informations contenues dans un dictionnaire ; ainsi, ce sera une liste de dictionnaires. RecupererInformationEmission récupère le showid de la routine précédente et retourne un dictionnaire d'informations sur l'émission. RecupererListeEpisodes utilise également le showid de la routine ci-dessus et retourne une liste de dictionnaires contenant des informations pour chaque épisode. |
| |
Nous utiliserons une série de chaînes pour contenir la clé et l'URL de base, puis leur ajouter ce dont nous avons besoin. Par exemple, considérons le code suivant (nous compléterons ceci plus tard). | Nous utiliserons une série de chaînes pour contenir la clé et l'URL de base, puis leur ajouter ce dont nous avons besoin. Par exemple, considérons le code suivant (nous le compléterons plus tard). |
| |
self.CleApi = "Itnl8IyY1hsR9n0IP6zI" | self.CleApi = "Itnl8IyY1hsR9n0IP6zI" |
chaine = self.ChaineRechercheSerie + self.CleAPI + "&show=" + nomEmission | chaine = self.ChaineRechercheSerie + self.CleAPI + "&show=" + nomEmission |
| |
Pour les besoins des tests, je vais utiliser une série intitulée « Continuum » qui, si vous ne l'avez jamais vue, est une série géniale de science-fiction sur la chaîne canadienne Showcase. J'utilise cette série pour plusieurs raisons. Tout d'abord, il n'y a (lorsque j'écris ces lignes) que deux séries qui correspondent à la recherche « Continuum », ce qui rend votre débogage facile, et d'autre part, il n'y a actuellement qu'une seule saison de 10 épisodes à gérer. | Pour les besoins des tests, je vais utiliser une série intitulée « Continuum » qui, si vous ne l'avez jamais vue, est une série géniale de science-fiction sur la chaîne canadienne Showcase. J'utilise cette série pour plusieurs raisons. Tout d'abord, il n'y a (lorsque j'écris ces lignes) que deux séries qui correspondent à la recherche « Continuum », ce qui rend votre débogage facile, et, d'autre part, il n'y a actuellement qu'une seule saison de 10 épisodes à gérer. |
| |
====== 6 ====== | ====== 6 ====== |
http://services.tvrage.com/myfeeds/episode_list.php?key=Itnl8IyY1hsR9n0IP6zI&sid=30789** | http://services.tvrage.com/myfeeds/episode_list.php?key=Itnl8IyY1hsR9n0IP6zI&sid=30789** |
| |
Vous devriez avoir une idée de ce que vous rechercherez dans vos routines d'analyse, j'ai donc placé ci-dessous les URL complètes pour que vous testiez avant de vous lancer dans votre code. | Vous devriez avoir une idée de ce que vous rechercherez dans vos routines d'analyse ; j'ai donc placé ci-dessous les URL complètes pour que vous les testiez avant de vous lancer dans votre code. |
| |
Rechercher en utilisant un nom d'émission : | Rechercher en utilisant un nom d'émission : |
Comme je l'ai dit plus tôt, les quatre premières lignes sont nos chaînes partielles pour construire l'URL de la fonction que nous voulons utiliser. (ChaineListeEpisodes doit être sur une seule ligne.) Les quatre dernières lignes sont l'initialisation des listes que nous utiliserons plus tard. | Comme je l'ai dit plus tôt, les quatre premières lignes sont nos chaînes partielles pour construire l'URL de la fonction que nous voulons utiliser. (ChaineListeEpisodes doit être sur une seule ligne.) Les quatre dernières lignes sont l'initialisation des listes que nous utiliserons plus tard. |
| |
Tout d'abord (au milieu à droite), nous réglons la chaîne qui sera utilisée comme URL. Ensuite, nous réglons le socket avec un délai d'attente de 8 secondes par défaut. Ensuite, nous appelons urllib.urlopen avec l'URL générée et (espérons-le) recevons notre fichier xml dans l'objet usock. Nous utilisons ElementTree pour analyser les informations xml. (Si vous êtes perdus, relisez s'il vous plaît mes articles sur XML (les parties 10, 11 et 12 figurant dans les FCM n° 36, 37 et 38)). Ensuite, on ferme le socket et on initialise le compteur pour le nombre de résultats trouvés, et on réinitialise la liste listeEmissions à une liste vide. | Tout d'abord (au milieu à droite), nous réglons la chaîne qui sera utilisée comme URL. Puis, nous réglons le socket avec un délai d'attente de 8 secondes par défaut. Ensuite, nous appelons urllib.urlopen avec l'URL générée et (espérons-le) recevons notre fichier xml dans l'objet usock. Nous utilisons ElementTree pour analyser les informations xml. (Si vous êtes perdus, relisez s'il vous plaît mes articles sur XML (les parties 10, 11 et 12 figurant dans les FCM n° 36, 37 et 38)). Enfin, on ferme le socket et on initialise le compteur pour le nombre de résultats trouvés, puis on réinitialise la liste listeEmissions à une liste vide. |
| |
====== 9 ====== | ====== 9 ====== |
Nous allons parcourir chaque groupe d'informations en cherchant « show » comme parent et analyser l'information. En pratique, nous n'avons besoin que du nom de l'émission (<name>) et du showid (<showid>) montré en bas à gauche, mais nous allons gérer tous les résultats. | Nous allons parcourir chaque groupe d'informations en cherchant « show » comme parent et analyser l'information. En pratique, nous n'avons besoin que du nom de l'émission (<name>) et du showid (<showid>) montré en bas à gauche, mais nous allons gérer tous les résultats. |
| |
Je vais expliquer le premier et vous comprendrez le reste. Lorsque nous parcourons les informations, nous recherchons les balises (en bas à droite) qui correspondent à ce que nous voulons. Si nous en trouvons une, nous l'affectons à une variable temporaire puis mettons cela dans le dictionnaire comme valeur avec une clé qui correspond à ce que nous insérons. Dans le cas qui précède, nous recherchons la balise « showid » dans les données XML. Lorsque nous la trouvons, nous l'assignons comme une valeur de la clé « ID ». | Je vais expliquer le premier et vous comprendrez le reste. Lorsque nous parcourons les informations, nous recherchons les balises (en bas à droite) qui correspondent à ce que nous voulons. Si nous en trouvons une, nous l'affectons à une variable temporaire, puis mettons cela dans le dictionnaire comme valeur avec une clé qui correspond à ce que nous insérons. Dans le cas qui précède, nous recherchons la balise « showid » dans les données XML. Lorsque nous la trouvons, nous l'assignons en tant que valeur de la clé « ID ». |
| |
====== 10 ====== | ====== 10 ====== |
La partie suivante (page suivante, en haut à droite) porte sur le(s) genre(s) de la série. Comme vous pouvez le voir dans l'extrait XML ci-dessus, cette série se trouve dans quatre genres différents. Action, crime, drame et Sci-Fi. Nous devons les traiter tous. | La partie suivante (page suivante, en haut à droite) porte sur le(s) genre(s) de la série. Comme vous pouvez le voir dans l'extrait XML ci-dessus, cette série se trouve dans quatre genres différents. Action, crime, drame et Sci-Fi. Nous devons les traiter tous. |
| |
Enfin, on incrémente la variable compteurTrouves, et on ajoute ce dictionnaire dans la liste « listeEmissions ». Ensuite, nous recommençons le processus jusqu'à ce qu'il n'y ait plus aucune donnée XML. Une fois que tout est terminé, on retourne la liste des dictionnaires (en bas à droite). | Enfin, on incrémente la variable compteurTrouves et on ajoute ce dictionnaire dans la liste « listeEmissions ». Ensuite, nous recommençons le processus jusqu'à ce qu'il n'y ait plus aucune donnée XML. Une fois que tout est terminé, on retourne la liste des dictionnaires (en bas à droite). |
| |
====== 11 ====== | ====== 11 ====== |
Enter Selection or 0 to exit ->** | Enter Selection or 0 to exit ->** |
| |
La plupart du code est assez explicite. Nous allons nous concentrer sur la boucle « for » que nous utilisons pour afficher les informations. Nous bouclons sur chaque élément de la liste de dictionnaires et affichons une variable compteur, le nom de l'émission (c['Nom']), et l'id. Le résultat ressemble à ceci : | La plupart du code est assez explicite. Nous allons nous concentrer sur la boucle « for » que nous utilisons pour afficher les informations. Nous bouclons sur chaque élément de la liste de dictionnaires et affichons une variable compteur, le nom de l'émission (c['Nom']) et l'id. Le résultat ressemble à ceci : |
| |
Entrer le nom de la série -> continuum | Entrer le nom de la série -> continuum |
See you soon.** | See you soon.** |
| |
Souvenez-vous que la liste des articles commence à zéro, donc lorsque l'utilisateur entre 1, en fait il demande l'entrée numéro 0 du dictionnaire. Nous faisons comme ça parce que les gens « normaux » pensent que le décompte doit commencer par 1, pas par 0. Et nous pouvons ainsi utiliser 0 pour quitter la routine et ne pas leur faire utiliser Q ou q ou -1. | Souvenez-vous que la liste des articles commence à zéro, donc lorsque l'utilisateur entre 1, en fait il demande le dictionnaire numéro 0. Nous faisons comme ça parce que les gens « normaux » pensent que le décompte doit commencer par 1, pas par 0. Et nous pouvons ainsi utiliser 0 pour quitter la routine et ne pas leur faire utiliser Q ou q ou -1. |
| |
Maintenant, la routine « main » va tout rassembler pour nous. | Maintenant, la routine « main » va tout rassembler pour nous. |
| |
Pour aujourd'hui, nous allons juste commencer la routine (au milieu à droite) et nous continuerons la prochaine fois. | Pour aujourd'hui, nous allons juste commencer la routine (au milieu à droite) et nous la continuerons la prochaine fois. |
| |
La prochaine fois, nous ajouterons les autres routines. Pour l'instant, le code peut être trouvé sur http://pastebin.com/8F3Bd1Xd | La prochaine fois, nous ajouterons les autres routines. Pour l'instant, le code peut être trouvé sur http://pastebin.com/8F3Bd1Xd |
| |
À bientôt. | À bientôt. |
| |