Applescript encapsulé dans une application Xcode

two

Membre actif
6 Novembre 2005
897
291
Namur
Bonjour à tous,
je viens demander de l'aide à la communauté ;)

Je suis confronté à un truc bizarre o_O dans une application que je cherche à développer. Cette application encapsule des AppleScript pour aller chercher des infos dans l'application "Music".

Si j'écris le bout de script suivant, mon application récupère l'info souhaitée :
set soundFile to ""
tell application id "com.apple.Music"
beep -- vérification 1
set MyGenre to genre of current track
beep -- vérification 2
end tell
return {MBselectedTrackPath:MyGenre}

Par contre, avec cet exemple, cela ne marche plus:
set soundFile to ""
tell application id "com.apple.Music"
beep -- vérification 1
set MyGenre to genre of item 1 of selection
beep -- vérification 2
end tell
return {MBselectedTrackPath:MyGenre}

Dans les première exemple, j'entends bien les deux beep de vérification. Dans le second je n'entends que le premier.
Bizarrement, si je colle ces lignes de code dans "Editeur de script" les deux fonctionnent.
j'en conclus que c'est lié au contexte de passer une commande AppleScript encapsulée au sein d'une application et que music ne gère pas "selection" de la même manière... mais cela dépasse mes compétences.


Si une bonne âme veut se pencher sur le problème, il va falloir tester cela dans Xcode. Le plus simple est de récupérer l'archive sur https://github.com/hhas/Swift-AppleScriptObjC/tree/master

Ensuite pour reproduire le comportement voulu et celui non désiré, il suffit de tester l'app telle quelle et ensuite de remplacer, dans "ITunesBridge.applescript" (cela marche avec "Music" :merci: ), la ligne
return {trackName:name, trackArtist:artist, trackAlbum:album} of current track

par la ligne
return {trackName:name, trackArtist:artist, trackAlbum:album} of item 1 of selection




Pour la petite histoire, c'est sur cet exemple que je je me suis basé pour développer mon projet en remplaçant le code cocoa et l'interface datée par leur équivalent en swift.