J'ai eu récemment à récupérer toute une bibliothèque iTunes, suite à un plantage. Il a été nécessaire de changer d'ordinateur, et l'utilisateur possédait une très large bibliothèque iTunes et de nombreuses playlists.
La récupération des données n'a pas posé de problème particulier (extraction du disque et recopie des données sur le nouveau PC via un adaptateur USB).
Mais bien entendu, une fois iTunes installé sur le nouveau PC, la bibliothèque était absente, et les playlists disparues. Il a été nécessaire de fouiller un peu, la résolution du problème étant rendu plus difficile du fait que la bibliothèque en question était répartie sur deux disques durs externe et dans une arborescence de répertoires disparate.
Il a malgré tout été possible de récupérer les morceaux et les playlists.
- La liste des morceaux de musique ainsi que les playlists est stockée dans une base de données XML, située dans le dossiers Musique/iTunes et s'appelle iTunes Music Library.xml
- Pour vider complètement la base de données, il suffit de
supprimer/déplacer/renommer (au choix) ce fichier iTunes Music Library.xml et
un autre fichier dans le même répertoire, qui s'appelle Itunes
Library.itl
Ceci ne supprime pas les fichiers de musique, mais seulement la base de données (c'est à dire la liste des morceaux, les détails enregistrés par morceau, tel le classement, et les playlists).
<dict>
<key>3000</key>
<dict>
<key>Track ID</key><integer>3000</integer>
<key>Name</key><string>Symphony No. 9 (Scherzo)</string>
<key>Artist</key><string>Ludwig van Beethoven, composer. Seattle Symphony. Gerard Schwarz, director</string>
<key>Genre</key><string>Classique</string>
<key>Kind</key><string>Fichier audio AAC</string>
<key>Size</key><integer>1227915</integer>
<key>Total Time</key><integer>75650</integer>
<key>Track Number</key><integer>1</integer>
<key>Date Modified</key><date>2008-09-06T08:57:04Z</date>
<key>Date Added</key><date>2007-10-23T20:37:21Z</date>
<key>Bit Rate</key><integer>128</integer>
<key>Sample Rate</key><integer>44100</integer>
<key>Play Count</key><integer>7</integer>
<key>Play Date</key><integer>3309610938</integer>
<key>Play Date UTC</key><date>2008-11-15T14:22:18Z</date>
<key>Persistent ID</key><string>4430096F2AC0B091</string>
<key>Track Type</key><string>File</string>
<key>Location</key><string>file:/F:/Music/Ludwig%20van%20Beethoven,%20composer.%20Seattle/Unknown%20Album/01%20Symphony%20No.%209%20(Scherzo).m4a</string>
<key>File Folder Count</key><integer>4</integer>
<key>Library Folder Count</key><integer>1</integer>
</dict></dict>
Le point le plus important dans cette structure, c'est la clé "Location" qui définit le chemin d'accès au fichier. Vous remarquerez que les espaces sont remplacés par des %20, qui représente un espace en HTML. Dans cet exemple, il s'agit d'un fichier 01 Symphony No. 9 (Scherzo).m4a situé sur le disque F: dans un dossier Music, puis Ludwig van Beethoven, composer Seattle, puis Unknow Album (F:/Music/Ludwig van Beethoven, composer Seattle/Unknow Album/01 Symphony No. 9 (Scherzo).m4a).
Dans le cas duquel je me suis occupé, il avait été nécessaire de rassembler sur un seul disque externe les fichiers situés dans trois sessions différentes du portable en panne, ainsi que quelques autres morceaux qui étaient sur un autre disque dur externe. La base de données XML faisaient donc référence à quatre emplacement différents, et une dizaine de sous-dossier différents.
Le principe a donc été simple dans la logique : rechercher chaque occurence du chemin d'accès de la première référence (par exemple, C:\Documents and Settings\session 1\Mes documents\Ma Musique\iTunes\iTunes Library\) et la remplacer par la nouvelle (M:\Session 1\iTunes Library\). Pour rechercher/remplacer, le bloc-note de Windows convient très bien (ou un équivalent comme Notepad2) : utilisez le menu Edition - > Remplacer ; la première case contient la chaîne de caractère à rechercher, la seconde contient le texte à coller à la place.
En faisant bien attention à la syntaxe, et en ayant préalablement et manuellement rassemblé les fichiers musicaux dans un seul dossier, l'opération est relativement aisée.
Une fois les opérations de rechercher/remplacer effectuées, il faut enregistrer le fichier XML (dont on aura pris soin de faire une copie au préalable).
Puis aller dans itunes, Fichier -> importer -> Bibliothèque, et sélectionner le fichier. Le logiciel va alors récupérer le contenu de la base de données, vérifier chaque chemin d'accès, et importer les morceaux puis les playlists de la base de données modifiée.
Une playlist est simplement une autre structure XML qui contient tout bêtement les références (key) de chaque morceau qu'elle contient :
<dict>
<key>Name</key><string>Mes préférés</string>
<key>Playlist ID</key><integer>34798</integer>
<key>Playlist Persistent ID</key><string>F30D9E314AC8C015</string>
<key>All Items</key><true/>
<key>Playlist Items</key>
<array>
<dict>
<key>Track ID</key><integer>4102</integer>
</dict>
<dict>
<key>Track ID</key><integer>4103</integer>
</dict>
<dict>
<key>Track ID</key><integer>4104</integer>
</dict>
<dict>
<key>Track ID</key><integer>4105</integer>
</dict>
<dict>
<key>Track ID</key><integer>4106</integer>
</dict></dict>
Cette playlist s'appelle "Mes Préférés" et contient les morceaux 4102, 4103, 4104, 4105 et 4106.
L'opération d'importation de la base peut prendre un bon moment, selon le nombre de morceaux et de playlists. Il faut être patient.
Une fois l'opération effectuée, les playlists vont réapparaitre. Vérifiez sommairement leur contenu : s'il manque des éléments, retournez dans la base de données, et recherchez soit la playlist incomplète ou le morceau manquant. Les titres de playlist sont toujours récupérées, mais le contenu n'est affiché que si la base de données contient le bon chemin d'accès au fichier. Vérifiez que le chemin d'accès au fichier est correct (c'est au caractère près).
Attention, lorsque vous importez les données, elles sont ajoutées : en important la base, puis la modifiant, puis réimportant, vous aurez les playlists en double.
En cas d'erreur, il suffit d'effacer la base de données et de recommencez l'importation.
Tout ceci est sans danger, puisque si vous faites une copie de votre base XML initiale, vous ne pouvez rien perdre.
