Outils pour utilisateurs

Outils du site


issue77:tutoriel_-_python_47

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
issue77:tutoriel_-_python_47 [2014/02/25 17:49] – [5] auntieeissue77:tutoriel_-_python_47 [2014/03/07 12:13] (Version actuelle) – [8] fredphil91
Ligne 60: Ligne 60:
 We want to get the episode number of each file and put it into the elist list. Once we are done with all the files within the folder we are currently in, we can then make the assumption that we have been pretty much keeping up with the files and the highest numbered episode is the latest one available. As we discussed last month, we can then create a set that is numbered from 1 to the last episode, and convert the list to a set and pull a difference. While that is great in theory, there is a bit of a “hitch in our git-a-long” when it comes down to actual practice. We don’t actually get a nice and neat indication as to when we are done with any particular folder. What we do have though, is the knowledge that when we get done with each file, the code right after the “for file in [...” gets run. If we know the name of the last folder visited, and the current folder name, we can compare the two and, if they are different, we have finished a folder and our episode list should be complete. That’s what the ‘lastroot’ variable is for.** We want to get the episode number of each file and put it into the elist list. Once we are done with all the files within the folder we are currently in, we can then make the assumption that we have been pretty much keeping up with the files and the highest numbered episode is the latest one available. As we discussed last month, we can then create a set that is numbered from 1 to the last episode, and convert the list to a set and pull a difference. While that is great in theory, there is a bit of a “hitch in our git-a-long” when it comes down to actual practice. We don’t actually get a nice and neat indication as to when we are done with any particular folder. What we do have though, is the knowledge that when we get done with each file, the code right after the “for file in [...” gets run. If we know the name of the last folder visited, and the current folder name, we can compare the two and, if they are different, we have finished a folder and our episode list should be complete. That’s what the ‘lastroot’ variable is for.**
  
-Ensuite (ci-dessous), nous affectons simplement les données retournées par RecupereSaisonEpisode FIXME 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 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à. 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à.
Ligne 112: Ligne 112:
 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))
 +
  
issue77/tutoriel_-_python_47.1393346985.txt.gz · Dernière modification : 2014/02/25 17:49 de auntiee