2016-05-26 2 views
2

J'essaie de créer une application qui définit l'arrière-plan du bureau pour l'illustration d'album de la chanson en cours de lecture dans iTunes, mais j'ai rencontré un problème où mon script peut Ne lisez pas l'album d'une chanson Apple Music à moins qu'elle n'ait été ajoutée à la collection musicale ou à la liste de lecture de l'utilisateur.Comment accéder à l'album Apple Music dans iTunes via Apple Script

Actuellement, j'utilise this code pour extraire la pochette de l'album.

-- get the raw bytes of the artwork into a var 
tell application "iTunes" to tell artwork 1 of current track 
    set srcBytes to raw data 
    -- figure out the proper file extension 
    if format is «class PNG » then 
     set ext to ".png" 
    else 
     set ext to ".jpg" 
    end if 
end tell 

-- get the filename to ~/Desktop/cover.ext 
set fileName to (((path to desktop) as text) & "cover" & ext) 
-- write to file 
set outFile to open for access file fileName with write permission 
-- truncate the file 
set eof outFile to 0 
-- write the image bytes to the file 
write srcBytes to outFile 
close access outFile 

Est-ce que quelqu'un sait pourquoi cela ne fonctionnera pas lors de la lecture directe d'Apple Music?
Je peux donc ajouter une chanson Apple Music à ma bibliothèque ou à une playlist, et mon script peut lire ses pochettes d'albums (la chanson ne doit pas être téléchargée), mais lorsque vous parcourez simplement la section Nouveau ou Pour vous, Par exemple, et en jouant une chanson, mon script ne la lira pas et mon application va planter.

Toutes les suggestions seraient grandement appréciées car j'aimerais tous ceux qui le souhaitent pour pouvoir utiliser cette application.

Répondre

1

Désolé, lors de la diffusion d'Apple Musique la piste en cours est une piste URL . Bien que cela hérite de piste, la liste des éléments de l'illustration n'est pas exposée via l'écriture de scripts iTunes, donc aucune jaquette n'est disponible.

tell application "iTunes" 
    tell current track 
     if exists (every artwork) then 
      tell artwork 1 
       get properties 
      end tell 
     else 
      tell me to display alert "No Cover Art found." 
     end if 
    end tell 
end tell 
+0

Utilisé 'if exists artworks', qui a fonctionné de façon splendide. L'utilisation de 'if exists artwork 1' a provoqué l'erreur" Impossible d'obtenir les données brutes de l'illustration 1 de la piste en cours ". –

+0

@BenClose, heureux que cela a fonctionné. J'ai mis à jour la réponse pour intégrer vos commentaires. Si vous êtes satisfait de la réponse, veuillez l'accepter en cliquant sur la coche. Merci! –