J'écris un script qui utilise des fichiers .CUE pour diviser des fichiers musicaux monolithiques en pistes individuelles, puis les encode en MP3 le long avec les balises correctes du CUE. Tout fonctionne, mais malheureusement les balises (appliquées simplement en les incluant avec les arguments de la ligne de commande de lame
) apparaissent de manière fiable comme du charabia dans iTunes lorsqu'elles incluent des caractères Unicode (ce qu'elles font toujours, car la musique est japonaise).Exécuter des commandes shell à partir d'objets bytes dans python 3.1 (Ou écrire des tags mp3 UTF-8 dans python 3.1)
Je peux les corriger en les exécutant par le biais du script this, mais c'est un autre script à exécuter, et parfois attacher des guillemets aux balises (Un bogue que je n'ai pas pu réparer), nécessitant encore une exécution d'un script retirer. Donc, ma solution préférée est de coder la chaîne lame
command + arguments comme UTF-8 avant de l'exécuter, mais python 3.1 semble ne pas avoir de support pour exécuter des commandes à partir d'octets plutôt que de chaînes. Il suffit de passer une chaîne pour encoder à la place.
Sinon, je suis content d'utiliser simplement une bibliothèque de tags pour insérer les tags une fois l'encodage terminé, même si une telle solution est plus lente et moins élégante. Toutes les suggestions sont les bienvenues, cependant!
Merci d'avance.
EDIT: J'invoque lame
comme ça (désolé pour la ligne longue):
args = "lame --tt \"{0}\" --tn {1:02d} --ta \"{2}\" --tl \"{3}\" \"{4}\" \"{5}.mp3\"".format(item.title, item.tracknumber, item.artist, albumObject.title, item.wavFile, "{0:02d} ".format(item.tracknumber) + item.title)
#args = bytearray(args, "utf-8")
retcode = subprocess.check_call(args)
aussi, il serait utile de voir comment vous invoquez boiteux dans votre script –
Quel système êtes-vous - Windows, Mac, Linux? Si Windows, la "page de code système par défaut" est-elle définie en japonais? –
Je suis sur OSX. Le terminal que j'exécute est UTF-8, par défaut. – Ripdog