Warning: Undefined array key "DOKU_PREFS" in /home/clients/a4e6fc1ce1761b72982b805de0f418c4/web/python/mesrecettespython/inc/common.php on line 2082
renommer_mp3 [Les recettes Python de Tyrtamos]

Outils pour utilisateurs

Outils du site


renommer_mp3

Warning: Undefined array key -1 in /home/clients/a4e6fc1ce1761b72982b805de0f418c4/web/python/mesrecettespython/inc/html.php on line 1458

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édentes Révision précédente
Prochaine révision
Révision précédente
renommer_mp3 [2010/01/21 07:24]
tyrtamos
renommer_mp3 [2010/01/21 08:02]
tyrtamos
Ligne 195: Ligne 195:
 </code> </code>
  
-Dans ce cas, par rapport au contenu des tags id3, le programme a par exemple transformé les espaces en '_', éliminé les accents ('é' => 'e') et supprimé les '"' qui aurait déclenché une erreur au renommage.+Dans ce cas, par rapport au contenu des tags id3, le programme a par exemple transformé les espaces en '_', éliminé les accents ('é' => 'e') et supprimé les '"' qui auraient déclenché une erreur au renommage.
  
-La phase de la proposition est là pour ça: il est possible que ces tags id3 contiennent encore des caractères interdits ou non souhaités dans les noms de fichier. Il faudra dans ce cas ajouter les corrections à faire dans le code de la fonction modifcar(). +La phase de la proposition est là pour ça: il est possible que ces tags id3 contiennent encore des caractères interdits ou non souhaités dans les noms de fichier. Il faudra dans ce cas ajouter les corrections à faire dans le code de la fonction modifcar(). Et si, après acceptation, une erreur de renommage stoppe l'exécution en cours, ce n'est pas grave: il faut comprendre pourquoi (quel caractère interdit ais-je oublié?), ajouter la nouvelle correction à faire dans les ch1 et ch2 de la fonction modifcar() et recommencer
  
 ==== Lecture des fichiers du répertoire ==== ==== Lecture des fichiers du répertoire ====
Ligne 273: Ligne 273:
     """     """
     global codesource     global codesource
-    ch1 = (r""" /&"?.,:;!""" + \ +    ch1 = r''' /&"?.,:;!àÀâÂçÇéÉèÈêÊëËîÎïÏôÔùÙûÛüÜÿŸ'''.decode(codesource) 
-          r"""àÀâÂçÇéÉèÈêÊëËîÎïÏôÔùÙûÛüÜÿŸ""").decode(codesource) +    ch2 = r'''_-xxxxxxxxaAaAcCeEeEeEeEiIiIoOuUuUuUyY'''.decode(codesource)
-    ch2 = (r"""_-xxxxxxxx""" + \ +
-          r"""aAaAcCeEeEeEeEiIiIoOuUuUuUyY""").decode(codesource)+
     s = ""     s = ""
     for c in ch:     for c in ch:
Ligne 287: Ligne 285:
     return s     return s
 </code> </code>
 +
 +On pourrait facilement modifier ce code pour lui faire traiter des situations plus complexes. Par exemple que le 'æ' soit transformé en 'ae', donc qu'un seul caractère en donne 2. Il faudrait, bien entendu, remplacer les chaines ch1 et ch2 par des listes de chaines, ch1 devenant une liste de caractères. Par contre, pour trouver avec ch1 des 'motifs' composés de plusieurs caractères, ce serait un peu plus compliqué à faire (et cependant faisable!).
  
 ==== Fonction d'affichage ==== ==== Fonction d'affichage ====
 +
 +Cette fonction d'affichage remplace le print, en corrigeant les encodages pour un affichage correct dans la console en cours.
 +
 +Grâce à l'argument '*ch', on peut l'utiliser comme print: affiche(chaine1, chaine2, chaine3)
  
 Comme le présent code s'exécute en console, il faut prévoir que la console utilisée a un encodage spécifique, donc une représentation spécifique des mêmes caractères, voire un échec dans l'affichage qui stoppe le programme. Par exemple, la console DOS de Windows a un encodage 'cp850', la console Linux est en général en 'utf-8', etc... Et l'encodage de la console en cours est donnée par sys.stdout.encoding. Comme le présent code s'exécute en console, il faut prévoir que la console utilisée a un encodage spécifique, donc une représentation spécifique des mêmes caractères, voire un échec dans l'affichage qui stoppe le programme. Par exemple, la console DOS de Windows a un encodage 'cp850', la console Linux est en général en 'utf-8', etc... Et l'encodage de la console en cours est donnée par sys.stdout.encoding.
Ligne 319: Ligne 323:
 </code> </code>
  
-Cette fonction d'affichage remplace le print, en corrigeant les encodages pour un affichage correct dans la console en cours.+Bien entendu, si on devait, pour un autre usage, utiliser cette même fonction pour afficher une chaine avec un autre encodage, par exemple 'latin-1', sans que ça coïncide avec le coding du code (chaine issue d'un fichier disque par exemple)il faudrait d'abord convertir cette chaine en unicode interne avec decode(). Par exemple pour la chaine 'chaine2': 
  
-Grâce à l'argument '*ch', on peut l'utiliser comme print: affiche(chaine1, chaine2, chaine3)+<code python> 
 +affiche(chaine1, chaine2.decode('latin-1'), chaine3)   
 +</code>
  
 ==== Fonction de récupération du code d'erreur ==== ==== Fonction de récupération du code d'erreur ====
Ligne 412: Ligne 418:
     """     """
     global codesource     global codesource
-    ch1 = (r""" /&"?.,:;!""" + \ +    ch1 = r''' /&"?.,:;!àÀâÂçÇéÉèÈêÊëËîÎïÏôÔùÙûÛüÜÿŸ'''.decode(codesource) 
-          r"""àÀâÂçÇéÉèÈêÊëËîÎïÏôÔùÙûÛüÜÿŸ""").decode(codesource) +    ch2 = r'''_-xxxxxxxxaAaAcCeEeEeEeEiIiIoOuUuUuUyY'''.decode(codesource)
-    ch2 = (r"""_-xxxxxxxx""" + \ +
-          r"""aAaAcCeEeEeEeEiIiIoOuUuUuUyY""").decode(codesource)+
     s = ""     s = ""
     for c in ch:     for c in ch:
renommer_mp3.txt · Dernière modification: 2010/01/21 08:02 de tyrtamos