¿Por qué la iteración sobre una lista en applecript con 'repetir con ... en' falla con el código de error '-1731' a la mitad de la lista?

1

Tengo esta secuencia de comandos para asegurar que cada pista en una lista de reproducción inteligente determinada sea tanto shufflable como marcable <. / p>

El script está habilitado para ser lanzado a través de launchd.

Todo esto está bien configurado excepto que la secuencia de comandos muestra un comportamiento extraño. Cuando lo ejecuta, algunos de ellos tienen éxito pero la mayoría parece fallar debido al código de error -1731 . A continuación, se ejecuta el mismo comportamiento hasta que no tenga más pistas baratas y que puedan marcarse.

Esperaría que si los errores de código en la primera ejecución siguieran fallando, pero eso no es lo que sucede.

¿Qué está pasando aquí?

    
pregunta Tim Visher 22.08.2013 - 14:11

2 respuestas

4

Agregue un acceso explícito para resolver la referencia a las pistas:

tell application "iTunes"
    repeat with t in (get tracks of playlist "Listen Smart" where shufflable is false)
        set shufflable of t to true
    end repeat
    repeat with t in (get tracks of playlist "Listen Smart" where bookmarkable is false)
        set bookmarkable of t to true
    end repeat
end tell

Intente ejecutar un script como este:

tell application "iTunes"
    repeat with t in (tracks of playlist "Listen Smart" where shufflable is false)
        t
    end repeat
end tell

Si la lista de reproducción tiene tres pistas donde el orden aleatorio es falso, el resultado al final será algo así como item 3 of every track of playlist "Listen Smart" of application "iTunes" whose shufflable = false . Si configura el orden aleatorio de las dos primeras pistas en verdadero dentro del ciclo de repetición, no habrá un elemento 3 donde el orden aleatorio sea falso.

Si reemplazas repeat with t in (tracks con repeat with t in (get tracks , el resultado al final será algo así como item 3 of {file track id 54774 of user playlist id 54771 of source id 73 of application "iTunes", file track id 54775 of user playlist id 54771 of source id 73 of application "iTunes", file track id 54776 of user playlist id 54771 of source id 73 of application "iTunes"} .

    
respondido por el user495470 22.08.2013 - 18:50
0

Como hack completo , esto parece hacer el truco. p>

Tenga en cuenta que es super insatisfactorio, así que todavía estoy muy interesado en escuchar una mejor respuesta.

    
respondido por el Tim Visher 22.08.2013 - 14:20

Lea otras preguntas en las etiquetas