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).
Chaque morceau est identifié selon une structure XML assez simple dont voici un
extrait :
<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.