Import Old iTunes Library - Convert Old iTunes Library
After a recuperation of a TimeMachine of 2019 the iTunes Library inside was too OLD to be imported in the recent version MUSIC iTunes of Apple.
inside the iTunes folder there is a XML file "iTunes Music Library 2010-06-28 20.52.30.xml"
2 Problems need to be solved:
The Location of the files (New HardDrive)
in my case I had multiple different PATH need to be changed.
OLD_PATH1="file://localhost/Users/printi/Music/iTunes/"
OLD_PATH2="file://localhost/Volumes/Work/iTunes/"
NEW_PATH="file://localhost/Volumes/Matrice%20Raid/iTunes/"
To do the replacement of the path, create a file 'replace.sh'
in the Terminal:
- vi replace1.sh
- i (to insert)
- paste the content
- :wq (to save)
- chmod +x replace1.sh (to give authorisations to be launched)
- ./replace1.sh (to launch the script)
#!/bin/bash
# Chemin d'origine à remplacer
OLD_PATH1="file://localhost/Users/printi/Music/iTunes/"
OLD_PATH2="file://localhost/Volumes/Work/iTunes/"
# Nouveau chemin de remplacement
NEW_PATH="file://localhost/Volumes/Matrice%20Raid/iTunes/"
# Nom du fichier XML
XML_FILE="iTunes Music Library 2010-06-28 20.52.30.xml"
# Vérifie si le fichier XML est lisible
if [ -r "$XML_FILE" ]; then
# Effectue le remplacement de tous les chemins dans le fichier XML
sed -i '' "s@$OLD_PATH1@$NEW_PATH@g" "$XML_FILE"
sed -i '' "s@$OLD_PATH2@$NEW_PATH@g" "$XML_FILE"
echo "Tous les remplacements de chemin ont été effectués avec succès dans le fichier $XML_FILE."
else
echo "Le fichier $XML_FILE n'est pas lisible."
fi
The sorting of iTunes that have changed from
file://localhost/Volumes/Work/iTunes/iTunes%20Music/Artist/Album/filename.mp3
to
file://localhost/Volumes/Work/iTunes/iTunes%20Music/Artist/S/filename.mp3
The Goal is to reuse the Album name and replace the S into the file url
<key>Artist</key><string>Bonnie Tyler</string>
<key>Album</key><string>Slowtime 02</string>
<key>Location</key><string>file://localhost/Volumes/Work/iTunes/iTunes%20Music/Bonnie%20Tyler/S/01%20Total%20Eclipse%20Of%20The%20Heart.mp3</string>
Result:
<key>Location</key><string>file://localhost/Volumes/Matrice%20Raid/iTunes/iTunes%20Music/Bonnie%20Tyler/Slowtime%2002/01%20Total%20Eclipse%20Of%20The%20Heart.mp3</string>
in the Terminal:
vi replace2.sh
i (to insert)
paste the content
:wq (to save)
chmod +x replace2.sh (to give authorisations to be launched)
./replace2.sh (to launch the script)
#!/bin/bash
# Define XML file name
XML_FILE="iTunes Music Library 2010-06-28 20.52.30.xml"
# Check if the XML file is readable
if [ -r "$XML_FILE" ]; then
# Temporary file to store updated XML
TEMP_FILE="temp.xml"
# Variable to hold the current album name
CURRENT_ALBUM=""
# Read the XML file line by line
while IFS= read -r line; do
# Check for album name and update the CURRENT_ALBUM variable
if [[ $line =~ \<key\>Album\</key\>\<string\>(.*)\</string\> ]]; then
CURRENT_ALBUM="${BASH_REMATCH[1]}"
fi
# Check if the line contains the location key and path with "/S/"
if [[ $line == *"<key>Location</key>"* && $line == *"/S/"* ]]; then
# Prepare the album name for URL by replacing spaces with %20
ALBUM_FOR_URL="${CURRENT_ALBUM// /%20}"
# Replace "/S/" with the URL-safe album name in the path
NEW_LOCATION=$(echo "$line" | sed -E "s@/S/@/${ALBUM_FOR_URL//@/%40}/@")
echo "$NEW_LOCATION" >> "$TEMP_FILE"
else
echo "$line" >> "$TEMP_FILE"
fi
done < "$XML_FILE"
# Replace the original XML file with the updated one
mv "$TEMP_FILE" "$XML_FILE"
echo "Updates have been successfully applied to the file $XML_FILE."
else
echo "The file $XML_FILE is not readable."
fi
Hope this will help.
Mac Pro, macOS 10.12