Perché iterare su un elenco in applescript con 'repeat with ... in' fail with error code '-1731' parte della lista?

1

Ho questo script per garantire che ogni traccia in una determinata playlist smart sia sia shufflable sia bookmarkable.

Lo script è destinato a essere lanciato tramite launchd.

Tutto questo è impostato bene tranne che lo script mostra un comportamento strano. Quando lo esegui, alcuni riescono, ma la maggior parte sembra fallire a causa del codice di errore -1731 . Esegui successivamente lo stesso comportamento fino a quando non hai più tracce shufflable e bookmarkable.

Mi aspetto che se gli errori del codice alla prima esecuzione manterrebbero errori, ma non è quello che succede.

Cosa sta succedendo qui?

    
posta Tim Visher 22.08.2013 - 14:11
fonte

2 risposte

4

Aggiungi un esplicito get per risolvere il riferimento alle tracce:

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

Prova a eseguire uno script come questo:

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

Se la playlist ha tre tracce in cui la shufflable è falsa, il risultato alla fine sarà qualcosa come item 3 of every track of playlist "Listen Smart" of application "iTunes" whose shufflable = false . Se imposti lo shufflable delle prime due tracce su true all'interno del ciclo di ripetizione, non ci sarà un elemento 3 in cui lo shufflable è falso.

Se sostituisci repeat with t in (tracks con repeat with t in (get tracks , il risultato alla fine sarà qualcosa come 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"} .

    
risposta data 22.08.2013 - 18:50
fonte
0

Come completo hack, questo sembra fare il trucco.

Si noti che è super insoddisfacente, quindi sono ancora molto interessato a sentire una risposta migliore.

    
risposta data 22.08.2013 - 14:20
fonte

Leggi altre domande sui tag