Skrip ini berfungsi dengan baik untuk saya dan sebagian besar pelanggan saya, tetapi untuk beberapa pelanggan itu gagal karena -1712; Saya tidak tahu kenapa. Saya sudah mencoba meningkatkan batas waktu, tetapi tidak ada bedanya.
File /tmp/itunes_model.txt
tidak dibuat sehingga sepertinya tidak melakukan apa-apa.
Bagaimana saya bisa men-debug / memperbaiki ini?
with timeout of 1200 seconds
tell application "iTunes"
if (count of every file track of library playlist 1) is equal to 0 then
set thePath to (POSIX file "/tmp/itunes_model.txt")
set fileref to open for access (thePath) with write permission
set eof fileref to 0
close access fileref
return
end if
tell every file track of library playlist 1
script performancekludge
property tracknames : its name
property locs : its location
property persistids : its persistent ID
end script
end tell
end tell
set thePath to (POSIX file "/tmp/itunes_model.txt")
set fileref to open for access (thePath) with write permission
set eof fileref to 0
tell performancekludge
repeat with i from 1 to length of its tracknames
try
set nextline to item i of its tracknames ¬
& "::" & POSIX path of item i of its locs ¬
& "::" & item i of its persistids
write nextline & linefeed as «class utf8» to fileref
end try
end repeat
end tell
close access fileref
end timeout
Menambahkan try-catch di sekitar kesalahan seperti yang diminta dan reran; pertama kali dijalankan itu benar-benar bekerja yang menarik, tetapi yang kedua gagal lagi tidak mendapatkan informasi yang lebih berguna.
applescript
Paul Taylor
sumber
sumber
Jawaban:
Seharusnya seperti ini:
Anda
timeout
harus berada di dalamtell
blok, bukan sebelum / di atas / di luarnya.Sepertinya Anda mungkin mengatur batas waktu untuk skrip itu sendiri, bukan iTunes yang memiliki batas waktu default 120 detik (semua aplikasi memiliki batas waktu default 2 menit).
Ini bisa gagal karena sejumlah alasan selain batas waktu normal, seperti jika orang tersebut baru saja memutakhirkan iTunes, dan skrip Anda membukanya untuk pertama kali setelah baru diinstal, itu tidak akan dapat menjalankan fungsi iTunes normal sampai setelah menutup layar splash yang bertuliskan "Selamat datang di iTunes versi X - Lihat semua fitur baru !, dll."
Juga, sudah beberapa saat sejak saya bekerja dengan AppleScript, jadi saya tidak ingat apakah Anda memberi tahu atau tidak aplikasi sistem untuk melakukan sesuatu jika secara otomatis terbuka atau tidak. Jika tidak, itu mungkin, Anda mungkin perlu
Tell SystemEvents to open application "ITunes"
(atau apa pun sintaksnya) - atau Anda selalu dapat menggunakando shellscript
perintah untuk membuka aplikasi, dalam hal ini perintah shell yang sebenarnyaopen /Applications/iTunes.app/
- yang dapat Anda verifikasi di Terminal.Kesalahan juga bisa terjadi jika aplikasi iTunes membutuhkan fokus GUI agar operasi ini dapat berlangsung dan aplikasi secara otomatis kehilangan fokus ketika skrip sedang dijalankan ketika aplikasi lain dibuka atau pengguna mengklik atau skenario semacam itu, yang skrip Anda harus dapat menjelaskan. Dalam kasus seperti ini, Anda mungkin ingin
tell SystemEvents to activate application "iTunes"
sebelum tindakan penting terjadi. Ini akan menyebabkan jendela iTunes mendapatkan kembali fokus.Ini mungkin sebenarnya
SystemEvents
perintah yang sama ini (Anda mungkin perlu memeriksa / memperbaiki sintaks saya) yang awalnya membuka aplikasi jika belum dibuka pada saat skrip dijalankan.sumber