Cómo descargar canciones de iTunes (a través de iTunes Match) usando AppleScript

Estoy tratando de averiguar cómo descargar el archivo de las canciones de iTunes que aún no se han descargado en mi máquina local (y residen en iTunes Match Cloud) usando AppleScript o cualquier otra biblioteca.

Mi objetivo es tener un script que se ejecute localmente en un cron que descargue cualquier canción con calificación de 5 estrellas. Como transmito la mayor parte de mi música a través de iTunes Match, quiero una forma automatizada de descargar esas canciones de alta calificación.

Miré a mi alrededor y pensé que algo como esto funcionaría:

tell application "iTunes"
    activate
    set results to (every file track of playlist "Library" whose rating is 100)
    repeat with t in results
        download t
    end repeat
end tell

Aunque simplemente explote:

error "iTunes got an error: item 1 of
  {file track id 86657 of library playlist id 61224 of source id 66, .... } 
  doesn’t understand the “download” message."

Cualquier ayuda sería apreciada.

Respuestas (1)

tell application "iTunes"
  set matchedSongs to tracks of library playlist 1 whose rating is 100 and cloud status is matched
  set uploadedSongs to tracks of library playlist 1 whose rating is 100 and cloud status is uploaded

  set results to matchedSongs & uploadedSongs

  repeat with aTrack in results
    if class of aTrack is shared track then
      try
        download aTrack
      end try
    end if
  end repeat
end tell

¡Esto hace el trabajo!

No pude entender cómo hacer una condición anidada en el, whoseasí que simplemente adquirí ambos conjuntos de búsquedas de canciones coincidentes y cargadas y las combiné.

Y trysolo ifasegúrese de descargar las pistas válidas si no existen localmente.