Home

iTunes

Génération des listes intelligentes par AppleScript

pour pallier aux pertes de titres

ou pour créer vos listes sur un autre Mac



Suite à des manipulations de ma bibliothèque iTunes, j'ai eu des titres ne pointant plus correctement sur les fichiers physiques correspondants. Ceci m'étant arrivé plusieurs fois, j'ai écrit des programmes AppleScript pour générer les listes intelligentes (PlayList).



Explication du problème


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
Photo 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
Photo 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
Photo 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
Photo 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
Photo PL32


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


PL34
Photo 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 V4a


É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
Photo PL22


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


PL23
Photo 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
Photo 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". 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, la Pop, etc.

Ayant programmé la majorité du code dans des sous-programmes, la partie principale nécessaire à lire pour l'adaptation ne fait que quelques lignes, et uniquement des paramètres regroupés en début..

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 :


PL25
Photo PL25

Elles sont en tout début du programme et elles commandent tous les paramètres.


Par exemple pour adapter au Genre Variété.



Vous pouvez rajouter vos propres listes en PROPERTY pour n'avoir qu'un programme pour tous les cas ayant un seul critère de sélection.

Ou dupliquer le script, et l'adapter pour chaque genre de musique, pour les cas de critère multiple, que nous allons étudier.



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
Photo 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).






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
Photo 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} ».



Le problème du cafouillage de frappe

N'ayant pas trouvé la cause du fonctionnement incorrecte de la commande keystroke, j'ai contourné le problème en faisant exécuter la commande keystroke caractère par caractère.


PL50
Photo PL50


Correction incluse dans la version V4 de mon programme SmartPlaylist. Vérifiez que vous avez bien la V4 SmartPlaylist V4a.



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
SignatureZapfino








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.








Page précédente

Page suivante



Merci de votre visite


UP