如何在 Applescript 中等待文件添加到 iTunes
How to wait for a file to be added to iTunes in Applescript
我有以下 AppleScript 可以将新文件添加到 iTunes
tell application "iTunes"
launch
set the_track_ref to add the_filename as POSIX file as alias
-- delay 5 -- This prevents "Error: error in user parameter list (paramErr:-50)"
set the_track to contents of the_track_ref
set the name of the_track to the_track_name -- This sometimes results in "Error: error in user parameter list (paramErr:-50)"
set the album of the_track to the_track_album
set the artist of the_track to the_track_artist
set the genre of the_track to the_track_genre
end tell
要添加的文件是一个音频文件,通常时长为 2 小时。当我 运行 脚本时,我经常在行 set the name of the_track to the_track_name
上得到错误 Error: error in user parameter list (paramErr:-50)
。我的猜测是将文件从临时位置复制到 iTunes 库时出现延迟,并且 the_track
尚不可用。
如您所见,我已经尝试添加 5 秒的延迟,但这仍然不能解决问题。通过手动 运行 脚本,我可以在 50%-75% 的时间内重现问题。错误发生时,iTunes 正在 运行ning。
我想我应该在 add
语句之后创建一个循环来等待导入有效,但我不知道要检查什么。
我没有看到任何直接的方法来测试文件是否准备好被处理,但是在循环中测试错误很容易:
tell application "iTunes"
launch
set the_track_ref to add the_filename as POSIX file as alias
set the_track to contents of the_track_ref
repeat
try
set the name of the_track to the_track_name
exit repeat
on error errstr number errnum
if errnum = -50 then
delay 0.5
else
display alert "Error " & errnum & ": " & errstr
end if
end try
end repeat
end tell
如果重命名曲目出错,则循环跳转到错误部分。如果错误是预期的“-50”,则循环延迟半秒并重试;如果发生其他错误,脚本会显示一个错误对话框。如果重命名轨道成功,脚本将退出循环并继续处理。
您可以根据需要将其他命令放在 try 块内或之后。我可以看到任何一种方式的优缺点,具体取决于您可能会看到的错误类型。
我有以下 AppleScript 可以将新文件添加到 iTunes
tell application "iTunes"
launch
set the_track_ref to add the_filename as POSIX file as alias
-- delay 5 -- This prevents "Error: error in user parameter list (paramErr:-50)"
set the_track to contents of the_track_ref
set the name of the_track to the_track_name -- This sometimes results in "Error: error in user parameter list (paramErr:-50)"
set the album of the_track to the_track_album
set the artist of the_track to the_track_artist
set the genre of the_track to the_track_genre
end tell
要添加的文件是一个音频文件,通常时长为 2 小时。当我 运行 脚本时,我经常在行 set the name of the_track to the_track_name
上得到错误 Error: error in user parameter list (paramErr:-50)
。我的猜测是将文件从临时位置复制到 iTunes 库时出现延迟,并且 the_track
尚不可用。
如您所见,我已经尝试添加 5 秒的延迟,但这仍然不能解决问题。通过手动 运行 脚本,我可以在 50%-75% 的时间内重现问题。错误发生时,iTunes 正在 运行ning。
我想我应该在 add
语句之后创建一个循环来等待导入有效,但我不知道要检查什么。
我没有看到任何直接的方法来测试文件是否准备好被处理,但是在循环中测试错误很容易:
tell application "iTunes"
launch
set the_track_ref to add the_filename as POSIX file as alias
set the_track to contents of the_track_ref
repeat
try
set the name of the_track to the_track_name
exit repeat
on error errstr number errnum
if errnum = -50 then
delay 0.5
else
display alert "Error " & errnum & ": " & errstr
end if
end try
end repeat
end tell
如果重命名曲目出错,则循环跳转到错误部分。如果错误是预期的“-50”,则循环延迟半秒并重试;如果发生其他错误,脚本会显示一个错误对话框。如果重命名轨道成功,脚本将退出循环并继续处理。
您可以根据需要将其他命令放在 try 块内或之后。我可以看到任何一种方式的优缺点,具体取决于您可能会看到的错误类型。