Modifier les tags MP3 en PHP

J'ai eu besoin pour alltomp3.org de modifier les tags MP3 de fichier MP3, dont la pochette d'album, en PHP.

En cherchant sur Google je suis tombé sur plusieurs librairies. Mon choix s'est porté sur getID3(), dont je vous invite à télécharger la dernière version (1.9.5 au moment où j'écris cet article). J'écris cet article car j'ai dû passer pas mal de temps dans les démos avant d'arriver à mes fins : modifier les tags MP3 dont la pochette d'album d'un fichier MP3 en PHP.

Décompressez le .zip, c'est le dossier getid3 qui nous intéresse. Je vous invite à le copier intégralement sur votre serveur, à l'endroit que vous souhaitez. Pour faire vite, voici ce que j'ai codé, avec les commentaires adaptés :

'gif', 2=>'jpeg', 3=>'png');
//On ajoute les tags MP3
$TagData['attached_picture'][0]['data']          = $APICdata; //Voilà, c'est réellement ici que se trouve l'image
$TagData['attached_picture'][0]['picturetypeid'] = 3; //3 indique que c'est la pochette de l'album, de nombreux autres types existent
//0:Other
//1:32x32 pixels 'file icon' (PNG only)
//2:Other file icon
//3:Cover (front)
//4:Cover (back)
//5:Leaflet page
//6:Media (e.g. label side of CD)
//7:Lead artist/lead performer/soloist
//8:Artist/performer
//9:Conductor
//10:Band/Orchestra
//11:Composer
//12:Lyricist/text writer
//13:Recording Location
//14:During recording
//15:During performance
//16:Movie/video screen capture
//17:A bright coloured fish
//18:Illustration
//19:Band/artist logotype
//20:Publisher/Studio logotype
$TagData['attached_picture'][0]['description']   = 'Description'; //Petite description
$TagData['attached_picture'][0]['mime']          = 'image/'.$imagetypes[$APIC_imageTypeID];

//Tout est prêt, maintenant on va enregistrer les tags dans le fichier mp3
$tagwriter = new getid3_writetags;
$tagwriter->filename       = 'morceau.mp3'; //Fichier mp3 dont vous voulez changer les tags
$tagwriter->tagformats     = array('id3v1','id3v2.3'); //Formats des tags
$tagwriter->tag_data = $TagData; //On indique le tableau des tags
$tagwriter->WriteTags(); //On enregistre les tags =) !

J'espère que cet article vous a servi !