Scripts pour iTunes : modifier le chemin, dédoublonner

flotow

AppIeSpirit™
Club MacG
23 Mars 2004
12 622
2 393
Bonjour,

J'utilise mon iTunes entre Windows et Mac OS.
J'avais laissé 'laisser iTunes gérer ma bibliothèque' sur Windows comme sur Mac OS.
Sur Windows, ça m'a causé un soucis ou les chemins sont mis à jour et ou les répertoires sont tronqués à 40 caractères.

Le soucis, c'est que iTunes sous Windows m'a crée des chemins comme ceux ci :
Bloc de code:
file://localhost/E:/Music/iTunes/iTunes Media/<artiste>/<album>/<chanson>
iTunes Mac n'est pas capable de mettre à jour ces chemins, ni de trouver des chansons similaires lorsque je met à jour le chemin d'une chanson du même album.
Y a t'il un moyen pour supprimer les
Bloc de code:
file://localhost/E:
?

De même, si les chemins existent en tronqués dans la DB, et qu'un unique autre chemin existe (avec les lettre non tronquées), déplacer les chansons vers ce chemin non tronqué, et mettre à jour iTunes.
Étant donné que j'ai iTunes qui gère la bilbiothèque sur Mac, il semblerait que iTunes lise la chanson une fois pour que le fichier soit déplacé vers le repertoire avec le nom complet dans iTunes Media. C'est peut être une bonne alternative, mais comment automatiser ça, et sauter les chansons manquantes ?

Suite à un gros import dans iTunes, j'ai aussi pas mal de chansons en double ou en triple (10 000 doublons exacts, dont 3000 affichés dans 'même album'), et j'aimerai faire un premier tri en ne gardant que les Apple Lossless si il y a d'autre chansons identiques.
J'aimerai aussi, migrer mon nombre de lecture, et surtout mes classements vers le fichier qui est conservé.
Mes classements sont normalement sur mes fichiers les plus anciens.

Existe-t-il des scripts qui font ça ?

ps: coucou @zeltron54
 
Dernière édition:

flotow

AppIeSpirit™
Club MacG
23 Mars 2004
12 622
2 393
Edit: si je regarde ce qui est possible en Swift, récupérer le chemin d'une piste si ce chemin est invalide, ce n'est pas possible, et c'est décrit :
If the location of this media item is not available, this property returns ITLibMediaItemLocationTypeUnknown.
Ce qui correspond à mon 'id64'.

--

Pour le chemin qui est incorrect, j'ai des résultats, mais pas ceux que je veux.

Si le chemin est correct, alors j'ai une réponse, mais sinon, non.
AppleScript:
    get name of file track id 727614 of user playlist id 727611 of source id 64
        --> "Sent For You Yesterday And Here You Come Today"
    get location of file track id 727614 of user playlist id 727611 of source id 64
        --> missing value
    get name of file track id 727615 of user playlist id 727611 of source id 64
        --> "Sent For You Yesterday And Here You Come Today"
    get location of file track id 727615 of user playlist id 727611 of source id 64
        --> alias "Music:iTunes:iTunes Media:Music:Benny Goodman:King Of Jazz:04 Sent For You Yesterday And Here You Come Today.m4a"

Pourtant, le XML d'iTunes connait le chemin des deux (tout comme la fenêtre de propriété).

Dans iTunes, playlist avec les deux pistes:
Screen Shot 2020-03-31 at 19.04.31.png


Voici le contenu du XML.
- mauvais chemin (piste 1) :
XML:
<key>Location</key><string>file:///Volumes/Music/iTunes/iTunes%20Media/Music/Benny%20Goodman/King%20Of%20Jazz/04%20Sent%20For%20You%20Yesterday%20And%20Here%20Y.m4a</string>
- chemin correct (piste 2) :
XML:
<key>Location</key><string>file:///Volumes/Music/iTunes/iTunes%20Media/Music/Benny%20Goodman/King%20Of%20Jazz/04%20Sent%20For%20You%20Yesterday%20And%20Here%20You%20Come%20Today.m4a</string>

Sauf que le fichier que je souhaite conserver, c'est le premier !

C'est dommage, car après ça, je pourrais réparer les chemins et supprimer les mauvais fichiers, avec quelque chose comme (et une logique pour être sur que ça correspond bien):
AppleScript:
    set no1 to (item 1 of listOfTracks)
    set no2 to (item 2 of listOfTracks)
 
    set n2L to location of no2
    set location of no1 to n2L
 
Dernière édition:

flotow

AppIeSpirit™
Club MacG
23 Mars 2004
12 622
2 393
Zut, je ne peux plus éditer...
Bref, en demandant le 'database ID' et en le croisant avec le XML, je peux retrouver les bons et les mauvais chemins, et faire les réparations que je souhaite.
Mais ça ne sera pas pour ce soir :p