Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente |
issue77:tutoriel_-_python_47 [2014/02/25 16:22] – [4] auntiee | issue77:tutoriel_-_python_47 [2014/03/07 12:13] (Version actuelle) – [8] fredphil91 |
---|
Ensuite (ci-dessous), nous affectons simplement les données retournées par RecupereSaisonEpisode et les mettons dans des variables distinctes avec lesquelles nous pourrons jouer. Maintenant que nous savons où nous en sommes, parlons de ce qui va se passer. | Ensuite (ci-dessous), nous affectons simplement les données retournées par RecupereSaisonEpisode et les mettons dans des variables distinctes avec lesquelles nous pourrons jouer. Maintenant que nous savons où nous en sommes, parlons de ce qui va se passer. |
| |
Nous voulons obtenir le numéro d'épisode pour chaque fichier et le placer dans la liste ep_liste. Une fois que nous avons terminé avec tous les fichiers du dossier dans lequel nous sommes, nous pouvons faire l'hypothèse que nous avons à peu près traité correctement les fichiers et que le numéro d'épisode le plus élevé est le plus récent disponible. Comme nous l'avons vu le mois dernier, nous pouvons alors créer un ensemble contenant les nombres de 1 au dernier épisode, convertir la liste en ensemble et calculer la différence. C'est très bien en théorie, mais il y a un petit grain de sable dans notre mécanique quand on la met en pratique. Nous n'avons pas vraiment d'indication claire et nette quand nous avons fini avec un dossier particulier. Ce que nous savons cependant, c'est que, lorsque nous aurons fini avec chaque fichier, le code juste après « for fic in [... » est exécuté. Si nous connaissons le nom du dernier dossier visité et le nom du dossier en cours, nous pouvons comparer les deux et s'ils sont différents, c'est que nous venons de terminer un dossier et que notre liste d'épisodes devrait être complète. C'est pour cela que la variable « derniere_racine » est là. | Nous voulons obtenir le numéro d'épisode pour chaque fichier et le placer dans la liste ep_liste. Une fois que nous avons terminé avec tous les fichiers du dossier dans lequel nous sommes, nous pouvons faire l'hypothèse que nous avons à peu près correctement traité les fichiers et que le numéro d'épisode le plus élevé est le plus récent disponible. Comme nous l'avons vu le mois dernier, nous pouvons alors créer un ensemble contenant les numéros de 1 au dernier épisode, convertir la liste en ensemble et calculer la différence. C'est très bien en théorie, mais il y a un petit grain de sable dans notre mécanique quand on la met en pratique. Nous n'avons pas vraiment d'indication claire et nette quand nous avons fini avec un dossier particulier. Ce que nous savons cependant, c'est que, lorsque nous aurons fini avec chaque fichier, le code juste après « for fic in [... » est exécuté. Si nous connaissons le nom du dernier dossier visité et le nom du dossier en cours, nous pouvons comparer les deux et s'ils sont différents, c'est que nous venons de terminer un dossier et que notre liste d'épisodes devrait être complète. C'est pour cela que la variable « derniere_racine » est là. |
| |
====== 5 ====== | ====== 5 ====== |
Voici la logique du nouveau code, ligne par ligne : | Voici la logique du nouveau code, ligne par ligne : |
| |
Tout d'abord, nous vérifions si la variable derniere_racine a la même valeur que racine (le nom du dossier en cours). Si c'est le cas, nous sommes dans le même dossier, et nous n'exécutons pas le code. Sinon, nous attribuons le nom de dossier actuel à la variable derniere_racine. Ensuite, nous vérifions si la liste des épisodes (ep_liste) a des entrées (len(ep_liste)> 0). C'est pour s'assurer que nous n'étions pas dans un répertoire vide. Si nous avons des éléments dans la liste, alors nous appelons la routine Manquant. Nous lui passons la liste des épisodes, le numéro de l'épisode le plus élevé, le numéro de la saison en cours, et le nom de la saison, pour pouvoir les afficher plus tard. Les trois dernières lignes effacent la liste, le nom de l'émission en cours, et la saison en cours, et nous continuons comme nous le faisions avant. | Tout d'abord, nous vérifions si la variable derniere_racine a la même valeur que racine (le nom du dossier en cours). Si c'est le cas, nous sommes dans le même dossier et nous n'exécutons pas le code. Sinon, nous attribuons le nom de dossier actuel à la variable derniere_racine. Ensuite, nous vérifions si la liste des épisodes (ep_liste) a des entrées (len(ep_liste)> 0). C'est pour s'assurer que nous ne sommes pas dans un répertoire vide. Si nous avons des éléments dans la liste, alors nous appelons la routine Manquant. Nous lui passons la liste des épisodes, le numéro de l'épisode le plus élevé, le numéro de la saison en cours, et le nom de la saison, pour pouvoir les afficher plus tard. Les trois dernières lignes effacent la liste, le nom de l'émission en cours, et la saison en cours, et nous continuons comme nous le faisions avant. |
| |
====== 6 ====== | ====== 6 ====== |
C'est tout. La seule faille dans cette logique est qu'avec cette façon de faire, nous ne savons pas s'il y a de nouveaux épisodes que nous n'avons pas. | C'est tout. La seule faille dans cette logique est qu'avec cette façon de faire, nous ne savons pas s'il y a de nouveaux épisodes que nous n'avons pas. |
| |
J'ai mis les deux routines sur pastebin pour si vous voulez juste faire un remplacement rapide dans votre code. Vous pouvez les consulter ici : http://pastebin.com/q8Re6bLd. | J'ai mis les deux routines sur pastebin au cas où vous voudriez juste faire un remplacement rapide dans votre code. Vous pouvez les consulter ici : http://pastebin.com/CnHK8xxf. |
| |
Passez un bon mois et nous vous reverrons bientôt. | Passez un bon mois et nous vous reverrons bientôt. |
| |
| ====== Morceaux de code dans les encadrés ====== |
| |
| ==== page 7 en haut ==== |
| |
| for racine, reps, fichiers in os.walk(chemin,topdown=True): |
| for fic in [f for f in fichiers if f.endswith (('.avi','mkv','mp4','m4v'))]: |
| |
| ==== page 7 juste en dessous ==== |
| |
| # Combine chemin et nom de fichier pour creer une seule variable |
| fn = join(racine,fic) |
| NomFicOriginal,ext = os.path.splitext(fic) |
| fl = fic |
| estok,donnees = RecupereSaisonEpisode(fl) |
| |
| ==== page 7 en bas ==== |
| |
| if estok: |
| nomEmission = data[0] |
| saison = data[1] |
| episode = data[2] |
| print("Saison {0} Episode {1}".format(saison,episode) |
| |
| ==== page 8 en haut ==== |
| |
| for fic in [f for f in fichiers if f.endswith (('.avi','mkv','mp4','m4v'))]: |
| # Combine chemin et nom de fichier pour creer une seule variable |
| if derniere_racine != racine: |
| derniere_racine = racine |
| if len(ep_liste) > 0: |
| Manquants(ep_liste,max(ep_liste),saison_courante,emission_courante) |
| ep_liste = [] |
| emission_courante = '' |
| saison_courante = '' |
| fn = join(racine,fic) |
| |
| ==== page 8 juste en dessous ==== |
| |
| estok,donnees = RecupereSaisonEpisode(fl) |
| if estok: |
| emission_courante = nomEmission = data[0] |
| saison_courante = saison = data[1] |
| episode = data[2] |
| ep_liste.append(int(episode)) |
| else: |
| |
| ==== page 8 en bas ==== |
| |
| #---------------------------------- |
| def Manquants(episode_liste,nombre_theorique,saison,nom_emission): |
| temp = set(range(1,nombre_theorique+1)) |
| ret = list(temp-set(episode_liste)) |
| if len(ret) > 0: |
| print('Episodes manquants pour {0} saison {1} - {2}'.format(nom_emission,saison,ret)) |
| |
| |