Formatter vos fichiers MP3 pour iTune, iPhone, iPod avec Perl
S’il vous arrive d’avoir à manipuler cet objet étrange qu’est l’iPhone, notamment pour synchroniser vos fichiers MP3 favoris, il se peut que vous en ressentiez une certaine frustration. C’est du moins mon avis, ayant justement fait l’expérience récemment. Je me propose de partager avec vous cette petite histoire qui m’a bien occupé pendant le weekend.
Pour faire simple, supposons que vous réunissez les conditions suivantes :
- Vous avez un iPhone (ou iPod, je pense que ce qui va suivre restera vrai avec son petit frère)
- Vous ne souhaitez pas jailbreaker l’engin (pour diverses raisons, par exemple ne pas casser la garantie)
- Vous souhaitez écouter vos MP3 avec l’iPhone
- Vous voulez voir vos jaquettes de CD lorsque vous lisez les MP3 sur l’iPhone
Rien de sorcier a priori. Oui a priori. Dans les faits, vous allez vite comprendre que “synchroniser vos MP3″ sans jailbreaker revient à dire “utiliser iTune”. Soit, je ne veux pas casser la garantie, je me plie à la doctrine de Steve, je prend mon vmware, installe iTune dans le Windows virtuel que je garde pour les situations exotique et commence à chercher comment synchroniser mes MP3.
Première surprise, il faut créer une playlist pour pouvoir synchroniser les MP3 vers iPhone, un glisser déposer devait être trop simple j’immagine (les Shadoks sont passé par là). Ok je crée une playlist que je nomme “iPhone”, je peux synchroniser mes MP3.
La synchro est faite, je regarde l’iPhone, lance iTune et ô surprise, aucune jaquette de CD n’est présente. Hmm. Je vous passe toutes les investigations digne d’un épisode des Experts, et vous livre mes conclusions :
- iTune (donc iPhone) ne supporte correctement que les tags ID3v2, si vos MP3 sont taggués en ID3v1, il ignorera bêtement les infos (donc plus de titre ni d’album, ni d’artiste).
- Les images de couvertures d’album ne sont pas recherchées dans le répertoire où sont rangés vos MP3, mais à chaque fois, dans le MP3 lui-même. Pour être précis, c’est dans le tag ID3v2, la frame APIC (attached picture).
- Le fait de copier l’image dans chacun de vos MP3 ne suffit pas, il faut que la frame APIC soit correctement renseignée, notamment que son mime-type et son image-type soient remplis
Si vos MP3 réunissent toutes ces conditions, tout se passera bien dans iTune. Cependant il y a fort à parier que :
- Vous n’avez jamais pris la peine de copier vos images d’album dans chacun de vos mp3, utilisant un logiciel moderne (sic) qui sait trouver une image a un seul endroit
- Vous possédez des MP3 taggués en ID3v1
Pour les tags ID3v1, iTune n’est pas la solution à vos soucis, puisqu’il ne permet pas de lire les ID3v1, il vous proposera seulement de modifier à la main chaque champ absent. Inacceptable.
Pour les images, c’est encore plus fastidieux avec iTune : vous double-cliquez sur une chanson, puis faite glisser l’image dans la zoen prévue. Cela veut donc dire : pour chaque MP3 que je possède un glissé/déposé pour avoir mes images dans iTune. Intolérable.
Il me faudra donc faire sans iTune pour le grand nettoyage numérique. Je commence par chercher sur le net, je trouve un logiciel qui semble résoudre le problème des covers, TuneSleeve. Après un essai je me rend compte que c’est un logiciel payant (15 euros quand même) et que la version téléchargeable ne permet de définir que 5 images d’ablum. 15 euros c’est cher payé pour définir une frame ID3v2…
Perl. Vim. Perldoc. CPAN…
Les quelques solutions que je propose en cette fin de dimanche :
- Synchroniser les tags ID3v2 à partir des ID3v1 existant : mp3id3v2 (pour tout nettoyer d’un coup :
find . -name '*.mp3' -exec mp3id3v2 {} \;). - Synchroniser vos tags ID3v2 pour tous les MP3 d’un répertoire, et y intégrer l’image du répertoire dans la frame “APIC” : mp3sync
Voici quelques exemples d’utilisation:
Copie des tags ID3v1 en ID3v2:
$ find . -name '*.mp3' -exec ~/bin/mp3id3v2 {} \;
[...]
frame title not defined in ID3v2, copying value from ID3v1: Crash Course In Brain Surgery
frame album not defined in ID3v2, copying value from ID3v1: Garage Inc. (Disc 2)
[...]
Synchronisation des tags ID3v2 et incrustation de l’image:
$ mp3sync *.mp3 artist (Charlotte Gainsbourg): album (5:55): picture (_cover.jpg): Setting picture "_cover.jpg" for file "01 - 555.mp3". Setting picture "_cover.jpg" for file "02 - AF607105.mp3". Setting picture "_cover.jpg" for file "03 - The Operation.mp3". Setting picture "_cover.jpg" for file "04 - Tel Que Tu Es.mp3". Setting picture "_cover.jpg" for file "05 - The Songs That We Sing.mp3". Setting picture "_cover.jpg" for file "06 - Beauty Mark.mp3". Setting picture "_cover.jpg" for file "07 - Little Monsters.mp3". Setting picture "_cover.jpg" for file "08 - Jamais.mp3". Setting picture "_cover.jpg" for file "09 - NightTime Intermission.mp3". Setting picture "_cover.jpg" for file "10 - Everything I Cannot See.mp3". Setting picture "_cover.jpg" for file "11 - Morning Song.mp3". $
Une fois ces MP3 tout bien formattés, plus de problème dans la nébuleuse Apple, ouf !
Tags: iTune, mp3, Perl
Posted in Programmation 3 Comments »