Eliminar todas las canciones en una lista de reproducción de iTunes determinada usando Applescript

Estoy trabajando en un script para administrar mi lista de reproducción de "cola" en iTunes y quería una manera fácil y rápida de eliminar rápidamente todas las canciones en esa lista de reproducción.

Applescript parecía la mejor opción y creé un pequeño script ejecutable con un atajo de teclado. Sin embargo, no parece funcionar.

Esta es la parte relevante:

tell application "iTunes"
    repeat with t in tracks of playlist "queue"
        tell playlist "queue" to delete t
    end repeat
end tell

El problema es que no se borran todas las pistas, solo una parte de ellas. Al ejecutar el script varias veces, eventualmente se eliminan todas las pistas de la lista de reproducción.

Respuestas (3)

He tenido exactamente el mismo problema. Cada vez hay más errores de AppleScript en cada versión de OS X.

Si solo desea eliminar todas las pistas de una lista de reproducción, las expresiones simples como esta no parecen omitir ninguna pista y también son más rápidas:

tell application "iTunes"
    delete tracks of playlist "untitled playlist"
end tell

Si solo necesita eliminar algunas pistas, algo como esto podría funcionar:

tell application "iTunes"
    repeat
        set tr to tracks of playlist "untitled playlist"
        if tr is {} then exit repeat
        repeat with t in tr
            delete t
        end repeat
    end repeat
end tell
Por alguna razón, la expresión "eliminar pistas de la lista de reproducción" no me funciona. El editor de secuencias de comandos devuelve el error "todas las pistas de la lista de reproducción \"Not In Library"\ no entienden el mensaje "eliminar"
FYI: "delete tracks of playlist "..."funcionó para mí.

El problema es que no se borran todas las pistas, solo una parte de ellas.

Dado que está eliminando las pistas a medida que las itera, es posible que se esté confundiendo. Termina con aproximadamente la mitad del número de pistas, por lo que parece que está eliminando todas las demás.

tell playlist "queue" to delete t

Para que conste, se tell playlist "queue" toestá ignorando, por lo que esto es equivalente a simplemente decir delete t.

La respuesta de @ user495470 es buena, pero esto también funciona para mí:

tell application "iTunes"
    delete of (every track of playlist "tmpList")
end tell

Tenga en cuenta que estos ejemplos solo eliminan la canción de la lista de reproducción y no del disco.

Esto me ha funcionado para hacer ambas cosas:

tell application "iTunes"
  set tr to tracks of playlist "a"
  repeat with t in tr
    set a to location of t
    set f to POSIX path of a
    delete t
    do shell script "rm " & quoted form of f
  end repeat
end tell