Mengapa mengulangi daftar dalam applescript dengan `repeat with ... in` gagal dengan kode kesalahan` -1731` bagian dari daftar?

1

saya sudah skrip ini untuk memastikan bahwa setiap trek dalam daftar putar cerdas yang diberikan dapat dikocok dan dapat dibookmark.

Script ini dimaksudkan untuk diluncurkan melalui launchd.

Semua ini diatur dengan baik kecuali bahwa skrip menunjukkan perilaku aneh. Ketika Anda menjalankannya, beberapa dari mereka berhasil tetapi sebagian besar tampaknya gagal karena kode kesalahan -1731. Berjalan selanjutnya perilaku yang sama terjadi sampai Anda tidak memiliki lagi trek yang dapat diacak dan di-bookmark.

Saya akan berharap bahwa jika kode kesalahan pada jalankan pertama itu akan tetap salah tapi bukan itu yang terjadi

Apa yang sedang terjadi disini?

Tim Visher
sumber
Saya berani bertaruh bahwa kegagalan itu tidak acak.
Daniel

Jawaban:

4

Tambahkan akses eksplisit untuk menyelesaikan referensi ke trek:

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

Coba jalankan skrip seperti ini:

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

Jika daftar putar memiliki tiga trek di mana shufflable salah, hasilnya di akhir akan menjadi seperti item 3 of every track of playlist "Listen Smart" of application "iTunes" whose shufflable = false. Jika Anda mengatur shufflable dari dua trek pertama ke true di dalam loop berulang, tidak akan ada item 3 di mana shufflable salah.

Jika Anda mengganti repeat with t in (tracks dengan repeat with t in (get tracks, hasilnya pada akhirnya akan seperti 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"}.

Lri
sumber
Saya rasa saya mengerti sekarang. Saya percaya apa yang Anda tunjukkan adalah daftar yang saya konsumsi dengan repeat … in sebenarnya bermutasi di bawah tenda tetapi penghitung yang saya ulangi tidak begitu saya benar-benar salah ketika saya mengkonsumsi setengah daftar setiap kali karena setengah yang terakhir sekarang hilang Bisakah Anda membuatnya sedikit lebih eksplisit dalam jawaban Anda jika itu tujuan Anda? Butuh beberapa saat untuk melihatnya dan saya pikir orang lain akan mengalami kesulitan yang sama.
Tim Visher
@TimVisher Saya mengedit jawabannya. Daftar ini tidak bermutasi, tetapi mengandung referensi seperti item 123 of every track of playlist "Listen Smart" of application "iTunes" whose shufflable = false.
Lri
0

Sebagai lengkap retas, ini sepertinya melakukan trik.

Perhatikan bahwa ini sangat tidak memuaskan sehingga saya masih sangat tertarik mendengar tanggapan yang lebih baik.

Tim Visher
sumber