Profitez des offres Memoirevive.ch!
iTunes et les pertes de titres

iTunes est certainement le moins bon logiciel d’Apple. Son objectif principal n’est pas de gérer votre discothèque, mais de vous pousser à l’achat, ce qui induit une pléthore d’outils, gestion du bidule Genius, gestion des iPhone et iPod, de l’achat en ligne, au détriment de ceux de gestion de bibliothèque.

C’est néanmoins le seul logiciel qui sait gérer ma musique en WiFi à partir d'une bibliothèque de musique unique, gestion sur deux chaînes hi-fi différentes dans deux pièces différentes à deux étages de distance via des bornes AirPort Express. Il faut donc que je fasse avec.

Mon problème c’est la perte de titres. Ils sont bien sur le disque dur, mais je ne peux plus y accéder, comme vous pouvez le voir sur la photo ci-dessous. Chaque point d’exclamation indique un fichier introuvable par iTunes. iTunes vous réclame de les localiser à la main.

PL10

Notez, que ce bug est très bizarre, car, tous les fichiers physiques correspondant à chaque titre du même album sont dans le même dossier physique. iTunes retrouve tous les titres sauf les titres 8 et 11. Ils ont pourtant été créés tous ensemble par l'importation du CD.

Pour vous rassurer, ce problème arrive, que si vous déplacez la base de données iTunes. Enfin, je l’espère.

Pour information, après avoir déplacé vos fichiers physiques de musique sur un autre disque dur, vous indiquez le changement grâce aux menues des préférences d’iTunes. C'est dans le dernier onglet, ou vous sélectionnez le nouveau chemin d’accès, puis vous cliquez sur le bouton « Modifier... », et iTunes analysera l'ensemble de la librairie à la nouvelle adresse.

PL11

Ce serait parfait si iTunes n'oubliait pas des titres en route.

Dans mon cas, j’avais passé la base de données de mon iMac vers une Time Capsule. Puis, ma Time Capsule étant tombée en panne d’alimentation au bout de 13 mois, air connu chez Apple, j’ai dû rapatrier ma bibliothèque iTunes sur un disque dur externe sur mon iMac. Cette fois-là, j’ai eu environ 2 % de fichiers introuvables.

Sachant que j’avais passé une grande partie de l’hiver de 2008 à lire tous mes CD un par un pour les mettre dans iTunes, en corriger 2 % à la main est un pensum de plusieurs jours. Il fallait que je trouve une méthode automatique de création de la librairie, ceci d’autant plus que pour remplacer ma Time Capsule morte j’ai acheté, du sérieux, un NAS Netgear ReadyNas RND2000 duo, donc il faudra faire encore un nouveau transfert, avec à nouveau le risque qu'iTunes me perde des titres.

Pour pallier à ce problème la méthode la plus simple est de créer une nouvelle bibliothèque iTunes vide, et d’importer à nouveau tous les albums. Pour cela, gardez la touche Alt appuyée au lancement d’iTunes pour avoir la fenêtre ci-dessous, et cliquez sur le bouton « nouvelles bibliothèques ».

PL12

Mais, problème, vous perdez toutes vos listes de lecture intelligente de votre précédente bibliothèque. En particulier, pour la musique classique, où iTunes est incompétent, car il ne gère pas au niveau compositeur. (La clé de tri principal d'iTunes est l'artiste, puisque l'objectif est de vendre des titres de variété à la demande).

Pour palier, j’ai un dossier de liste de lecture que j'ai appelé « Classique » avec dedans des listes de lecture intelligente, une pour chaque nom de compositeur.

PL14

Actuellement j’ai un peu plus de cent compositeurs. Il n'est pas question de refaire la main plus de cent listes de lecture intelligente. D’autant plus qu’il y en a autant pour le jazz, et la pop et le rock, etc. J’ai donc créé un programme en AppleScript, qui génère un dossier contenant, et dedans toutes les listes de lecture intelligente avec le bon critère de tri.

Le programme simule autant de fois qu'il y a de nom de compositeur l'appel du menu de création de liste de lecture intelligente.

PL32

Appel qui ouvre la fenêtre de création des règles.

PL34

Fenêtres dans laquelle il faut choisi avec le bouton déroulant le plus à gauche le type de champ sur lequel s'applique la règle, dans mon cas c'est « Compositeur » à la place de « Artiste ».

Dans le deuxième bouton déroulant il faut choisir le type de règle, la règle implicite « contient » et la bonne pour moi.

Dans le troisième champ celui du texte il faut introduire le nom du compositeur.

Ce programme est bien sûr facilement adaptable pour le jazz, la Pop, etc. Nous verrons cela plus loin.

Continuons notre exemple en musique classique. Le principe est assez simple, le nom de la liste de lecture intelligente va être le même texte que le critère de tri. C’est le nom du compositeur « Chopin », « Marie-Joseph Canteloube de Malaret », etc. (J’aime bien celui-là, c’est le nom le plus long, mais il sonne bien. Ce fut le spécialiste des chants d’Auvergne).

Maintenant, voyons comment utiliser mon programme, et pour que beaucoup d’entre vous ne décrochent pas, parce qu’ils pensent qu'ils ne sont pas assez bidouilleurs pour lire du code, je vais traiter en deux parties. D’abord comment utiliser, sans connaître la programmation. Et ensuite, pour les connaisseurs en AppleScript ou ceux qui veulent connaître, je vais détailler le programme, ce qui vous permettra de l'adapter à vos besoins.

Utilisation du script sans connaissance en AppleScript

Étape 1 : Téléchargez le script SmartPlaylist

Étape 2 : Dans iTunes, positionnez-vous au niveau où vous voulez stocker vos nouvelles listes de lecture intelligente. Pour être au premier niveau, cliquez sur la ligne marqué « Musique ».

PL22

J’ai mis un message d’alerte en début du script pour vous rappeler ce point.

PL23

Étape 3 : Il faut créer votre liste de compositeurs à vous. Pour cela, ouvrir le script par un double clic. Le logiciel AppleScript Editor (Editeur AppleScript en version française) se lancera, et mon script sera visible. En tout début, après les commentaires explicatifs d'utilisation, vous voyez la phrase :

PL24

Pensez bien mettre vos noms de compositeur entre guillemets, et une virgule, comme séparateur entre les noms de compositeurs.

Étape 4 : sauvegardez vos modifications, et cliquez sur le bouton « Exécuter ».

Risque d'utilisation

Le premier risque est que le logiciel « Éditeur AppleScript » n'existe pas sur votre Macintosh. Ceci ne peut arriver que si vous l'avez supprimé, car c'est un logiciel standard Apple qui est installé d'office. Dans ce cas, rechargez-le à partir du DVD d'installation d’OS X.

Y a-t-il un risque si vous n'êtes pas positionné au bon niveau ? Et dans ce cas est-il difficile de corriger ? Non, je vous rassure, il n’y a rien de grave, et c’est réparable en un seul clic droit.

Sachant qu'il y a création d'un dossier de listes de lecture avec le nom « Classique » pour contenir la création de toutes les listes de lecture intelligente, pour supprimer, il suffit de vous positionner sur ce dossier « Classique » nouvellement créé, et avec un clic droit vous appelez la commande « Supprimer ». C’est l’intérêt d’avoir créé un dossier contenant.

Parfois la simulation de frappe du texte cafouille. J'ai eu des 'aClssique" au lieu de "Classique". Si uniquement un ou deux cafouillages corrigez à la main. Si beaucoup, supprimez le dossier et recommencez. Probable une interférence d'un process en arrière-plan, car c'est rare et aléatoire.

NDLR trois semaines après la parution de cet article : Ce problème rare avec mon iMac20 et MacBook Air est devenu fréquent sur mon iMac27 i5. J'ai donc modifié pour faire la frappe du texte caractère par caractère, ce qui allonge sérieusement le temps d'exécution, mais garantie la bonne frappe. C'est la version V4 de mon programme. Vérifiez que vous n'avez pas une vieille version.

iTunes est programmable en AppleScript, mais il n’existe aucune commande pour gérer les listes intelligentes. Merci Apple. Il faut utiliser le « System Events » qui envoie directement les commandes clic et frappe du texte au menu courant. Ceci implique qu'il ne faut pas pendant que le script s'exécute ouvrir un autre menu d'une autre application. Donc, sage précaution, ne faites rien d'autre avec votre Mac pendant l'exécution du script.

Adaptation pour le jazz, le Popp, etc.

Ayant programmé la majorité du code dans des sous-programmes, la partie principale nécessaire à lire pour l'adaptation ne fait qu’une vingtaine de lignes.

Il vous sera facile de voir et de remplacer le nom du dossier « Classique » par « Jazz », et pour le nom du champ sur lequel s'applique la règle de remplacer « Compositeur » par « Artiste » ou « Genre » etc. Il en va de même pour les critères de tri « contient » « ne contient pas », etc.

vous reconnaîtrez facilement les lignes :

keystroke « Classique »

my popup1(« Compositeur ») -- Bouton déroulant 1 - Nom du champ sur lequel s'applique la règle

my popup2(« contient ») -- Bouton déroulant 2 - Type de critère

Elles se trouvent dans la bouche REPEAT qui ne fait que 11 lignes de code. Tout le programme ne fait que 26 lignes, hors les sous-programmes que vous n'avez pas à toucher.

Je recommande de dupliquer le script, et de l'adapter pour chaque genre de musique. Par exemple chez moi, J'ai un script pour chaque dossier ci-dessous :

PL26

Le code AppleScript

Maintenant, pour ceux qui veulent comprendre mon code AppleScript voici quelques informations utiles.

iTunes est programmable en AppleScript, mais il n’existe aucune commande pour gérer les listes intelligentes. Merci Apple. Il faut utiliser le « System Events », et c’est pénible. Mais qu’importe, je l’ai fait, pour vous. Avec l’aide précieuse de Daniel de la liste AppleScript Francophone. Un grand merci à lui.

Mais, attention, je rappelle que les « System Events » de l'UI scripting envoient directement les commandes clic et frappe du texte au menu courant. Ceci implique qu'il ne faut pas pendant que le script s'exécute ouvrir un autre menu d'une autre application. Donc, sage précaution, ne faites rien d'autre avec votre Mac pendant l'exécution du script.

Dans les points clés, il y a la commande :

click menu item 4 of menu 1 of menu bar item 3 of menu bar 1

ou il faut trouver les menus de sous-menus de sous-menus pour être indépendant de la langue. car si j’écris :

click the menu item "New Smart Playlist…" of the menu "File" of menu bar 1

Ce qui est un plus plus lisible, seule la version anglaise fonctionnera. J’ai, donc, fait une version muti-langue en mettant en commentaire la commande anglaise.

PL40

Il faut aussi trouver que les boutons déroulants sont dans une scroll area du groupe 1.

set pointeurScrollArea to scroll area 1 of group 1 of window 1

À part cela, le reste de la programmation est triviale.

Le problème de l'autocomplétion

L'autocomplétion est automatique dans iTunes. iTunes va par exemple compléter « Albinoni » par « Albinoni, Thomas (1671-1751) ». Information qu'iTunes aura gardée de l'importation précédente d'un CD.

Pour éviter, j'ai ajouté « xxx » en préfixe au nom choisi par vous, et juste après je supprime ce préfixe à la volée. Il faut simuler Pomme flèche gauche « key code {123} using {command down} », et trois fois la touche delete par « key code {117, 117, 117} ».

commande à critère multiple

J'ai prévu un sous-programme newRow() pour créer une nouvelle ligne de critères pour la liste de lecture intelligente. Elle est en commentaire dans le script. il faudra l'activer, et ajouter les appels au sous-programme popup1, popup2, text1 qui vous seront nécessaires. Sans oublier de gérer le bouton de choix « et » « ou ».

Exemple, vous désirez ceci :

PL42

Qui veut dire Pop ou Rock.

La séquence à programmer sera :

my popup1(« Genre »)

my popup2(« contient »)

my text1(« Pop »)

my newrow()

my popup1(« Genre »)

my popup2(« contient »)

my text1(« Rock »)

my AnyAll(« any »)

Le dernier sous-programme « AnyAll », désolé je l'ai fait en anglais, c'est le choix de la règle booléen ET OU soit en iTunes anglais ALL ANY, en français sur l'image « n'importe laquelle des » correspond à « ANY ». Il faut choisir si toutes les règles sont nécessaires ou une seule d'entre elles est suffisante. L'implicite étant ALL, vous avez besoin d'utiliser le sous-programme qu'en cas de ANY.

La séquence complète sera à rajouter dans mon programme à la suite du code existant de la boucle REPEAT, ou en dupliquant le script à la place de la boucle REPEAT.

Vous verrez à adapter suivant la taxinomie de vos listes de lecture intelligente. Sans oublier que depuis iTunes 9, ceci documenté nulle part comme c'est la mauvaise habitude d'Apple, vous pouvez faire des (A and (A or C).

Conclusion

Vous avez avec ce script la base de programmation pour créer vos listes de lecture intelligente. A vous de le dupliquer et de l'adapter à vos critères personnels.

Ainsi quel que soient le cafouillage d'iTunes vous pourrez recréer rapidement votre bibliothèque en important à nouveau vos fichiers de musique dans une librairie nouvelle et vide, puis générer en automatique toutes vos listes de lecture intelligente.

Merci, de m'avoir lu.

image

Références

Dougs : Le site de référence en anglais où vous trouverez de nombreux scripts pour iTunes.

GeteNet : Description des possibilités d'iTunes en français.

Iscript.fr pour apprendre les bases AppleScript.

AppleScript for Absolute Starters

Apprentissage AppleScript en français

AppleScript chez Apple en français

La liste AppleScript Francophone. applescript_fr@patpro.net

Songbird : Une alternative à iTunes.

NAS Netgear ReadyNas RND2000 duo : Un vrai serveur NAS - Time Capsule ne l'est pas, et le Netgear coûte 100€ de moins, et avec la possibilité d'ajouter un disque dur miroir. Spécifications et description.

Texte écrit en utilisant la reconnaissance vocale de Dictate.

12 commentaires
1)
Inconnu
, le 01.12.2009 à 00:20

Pour la tâche donnée, il y a beaucoup plus simple depuis iTunes 9: une playlist par genre. Et on peut choisir les colonnes qu’on peut afficher dans le navigateur (y compris pour les playlists). Donc pour le baroque/classique, j’ai choisi d’afficher comme première colonne le compositeur et comme seconde le regroupement (qui chez moi correspond au numéro de catalogue de l’œuvre).

Mais merci pour les scripts, ils seront utiles dans d’autres cas.

2)
FTH
, le 01.12.2009 à 00:45

Il me semble que des Logitech SqueezeBox seraient plus appropriées comme méthode de diffusion sonore: le serveur tourne sur le ReadyNas et les SqueezeBox fonctionnent parfaitement en wifi. On peut même synchroniser la musique entre les deux étages. Le logiciel SqueezeServer est suffisement flexible pour afficher la musique classique “correctement” de 1001 diverses façons. Enfin, il n’y a aucune aide ni incitation a acheter de la musique sur un store.

Et surtout, surtout, cela calmerait probablement les nerfs de l’auteur qui n’aurait plus JAMAIS à utiliser le mauvais iTunes cafouilleur VENDU à vil prix par le mercantile Apple :)

3)
Plumpala
, le 01.12.2009 à 08:10

Merci. J’attendais que ce problème de perte de titres par itunes soit traité depuis si longtemps. C’est tellement agaçant… Malheureusement, je crains que ces pertes ne surviennent plus fréquemment que lors des seuls changements de support. Pour ma part, il y a régulièrement quelques titres qui disparaissent. Je dirais à vue de nez qu’il y en permanence 1 à 2% de titres “absents”. Redonner le chemin manuellement est effectivement fastidieux…

4)
Roger Baudet
, le 01.12.2009 à 08:57

Bizarre, bizarre !

Pas rencontré de problème de perte de titre pour l’instant, malgré une liste assez fournie. Ma bibliothèque est pourtant sur un disque externe. Il faudrait découvrir la cause de ce phénomène.

Merci pour le script, je vais le tester.

5)
Cyril Druesne
, le 01.12.2009 à 14:53

iTunes gère le champ compositeur depuis quelques années, et depuis la version 9, on peut enfin afficher une colonne « Compositeurs » (menu Présentation, Navigateur par colonne, Compositeurs), lorsque l’on se sert de la navigation par colonne (commande B).

6)
Alain Le Gallou
, le 01.12.2009 à 18:13

@Reno, Cyril j’utilise cette fonction des colonnes pour des recherches. Son défaut c’est qu’elle a tous les compositeurs, donc ceux de musique classique sont mélangés avec la pléthore de ceux de variété, d’ou mon option de me créer des listes intelligentes uniquement pour le classique. Et surtout j’aime à choisir en voyant les imagettes.

7)
Cyril Druesne
, le 01.12.2009 à 19:14

Étant donné que la colonne compositeurs n’affiche que les éléments du genre sélectionné dans la colonne éponyme, il suffit de sélectionner le genre ; ainsi, lorsque je sélectionne le genre Moderne, je vois par exemple Dukas dans la colonne compositeurs, mais pas Lennon.

Autrement dit, depuis que l’on peut choisir d’afficher la colonne compositeurs et que chaque colonne affiche depuis toujours le contenu de la précédente, l’interface d’iTunes me convient pleinement désormais.

8)
Alain Le Gallou
, le 01.12.2009 à 20:22

@Cyril Tu as totalement raison. Où avais-je la tête pour oublier ce point, surtout que je l’ai utilisé mainte fois. Probablement quelques neurones bloqués par le trop de vent ce jour, non cette unique demi-journée sans pluie depuis longtemps, où je me suis précipité dans le vent glacial pour vérifier mon bateau et lui mettre son taud pour l’hiver.

9)
Inconnu
, le 01.12.2009 à 22:07

@Alain Le Gallou: l’autre solution est de faire une smart playlist par genre (je n’avais pas été clair visiblement). Et pour les playlists associées aux genres baroque, classique,… afficher les colonnes compositeurs et regroupement (plus logique pour ce genre de musique). Pour les autres genres, le classique “artiste, album” fait son office.

10)
pat3
, le 03.12.2009 à 21:08

Content de voir que ce problème de perte de titres n’est pas que chez moi, je me suis arraché les cheveux à essayer d’en trouver la cause; hélas, celle qu’évoque Alain Le Gallou ne marche pas chez moi; ma bibliothèque iTunes est sur une partition du disque interne, et n’a pas changé d’emplacement depuis des années. En revanche, ma douce et moi utilisons le même dossier iTunes Music sur deux partitions séparées, et il arrive (je ne sais jamais pourquoi) qu’un problème survienne dans sa session. Mais les fichiers effacés, c’est dans la mienne (en tout cas, c’est moi qui le remarque), et ça peut être des albums entiers (c’est d’ailleurs comme ça que je le remarque: je cherche à écouter un album que je n’ai pas écouté depuis longtemps, et hop: il n’y est plus!).

Seulement, chez moi, il est carrément effacé! Je ne retrouve plus sa trace, sauf dans les sauvegardes (ce qui me fait dire qu’il a bien été là à un moment donné); problème bizarre dont j’aimerais trouver la solution… Malheureusement, Alain, ton script semble résoudre ton problème, bien identifié, mais pas le mien, mal défini.

11)
pat3
, le 03.12.2009 à 21:14

Pour ce qui est de migrer une bibliothèque, je n’ai par contre rien trouvé de mieux que de refaire faire le travail à iTunes en glissant déposant le dossier iTunes Music sur l’icone du logiciel, après avoir indiqué à iTunes où se trouvait le nouveau dossier iTunes Music, et avoir coché qu’iTunes reclasse les fichiers. Dans ce cas, une fois le transfert effectué, contrairement à ton expérience, Alain, je récupère tout, les playlists, les listes intelligentes, etc. En fait, je ne les récupère pas, je ne les avait pas perdues; c’est juste iTunes qui refait l’indexation des fichiers, et les listes puisent dans sa base de données.

Là où tu perds tout, c’est quand tu modifies ou déplaces les fichiers qui se trouvent dans le dossier Musique du dossier Home… Mais il y a belle lurette que je n’y stocke plus la musique.

12)
Alain Le Gallou
, le 07.12.2009 à 19:04

Mise à jour du 7 décembre 2009, pour traiter le problème de la frappe de caractères mélangés dans les textes de critère d’iTunes.

j’ai eu des “aClassique” au lieu de “Classique”. Ce problème rare sur mon iMac20 est devenu fréquent sur mon iMac27 i5.

J'ai donc modifié pour faire la frappe du texte caractère par caractère.
C'est la version V4 de mon programme.

J’ai profité de cette V4 pour regrouper en tout début de programme les paramètres d’adaptation du programme. Ce qui inclut une modification du paragraphe “Adaptation pour Jazz, Pop, etc…”.

Je n’ai pas touché, comme c’est l’usage, au texte initial sur CUK. Il reste valable à 99%. Vous trouverez la description de l’amélioration et le programme en V4 sur mon site.

http://www.legallou.com/Mac/AS/iTunes/PlayList.html