You can make a difference in the Apple Support Community!

When you sign up with your Apple Account, you can provide valuable feedback to other community members by upvoting helpful replies and User Tips.

Looks like no one’s replied in a while. To start the conversation again, simply ask a new question.

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:


  1. vi replace1.sh
  2. i (to insert)
  3. paste the content
  4. :wq (to save)
  5. chmod +x replace1.sh (to give authorisations to be launched)
  6. ./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

Posted on Apr 27, 2024 1:09 PM

Reply

There are no replies.

Import Old iTunes Library - Convert Old iTunes Library

Welcome to Apple Support Community
A forum where Apple customers help each other with their products. Get started with your Apple Account.