0

我正在编写一个 AppleScript 来管理我的专辑插图。我正在尝试编写一些代码来删除所选曲目中包含的所有艺术品(iTunes 曲目最多可以包含 30 个艺术品对象)。这相当于在 iTunes 中选择曲目,打开“获取信息”窗口,然后选中(空白)艺术品框。

例如,应该工作的代码:

tell application "iTunes" to set t to track 1 of playlist "Example Playlist"
tell t to delete every artwork

请注意,仅删除第一幅作品的语法为:tell t to delete artwork 1

不幸的是,AppleScript 不合作。如果曲目有两幅作品,则只删除第一幅;如果曲目有 3 幅作品,则删除前 2 幅作品。

这似乎是在执行删除命令期间艺术品索引发生变化的问题(即,对于具有 2 个艺术品的轨道,它成功删除了艺术品 1,但是当它尝试删除艺术品 2 时,它找不到它,因为它已被重命名当原始艺术品 1 被删除时,转移到艺术品 1)。试图将every artwork说明符强制转换为列表(以便可以反转)不起作用,因为delete似乎不适用于用户定义的列表。

有谁知道我做错了什么?我知道我可以使用重复循环来遍历轨道中的所有艺术品,因为单独删除每个艺术品,但这似乎与 AppleScript 尝试的简单性背道而驰。我是否以某种方式滥用了该every声明?

4

1 回答 1

1

尝试:

tell application "iTunes"
    set t to first item of (get selection)
    delete t's artworks
end tell

或者

tell application "iTunes"
    set t to first item of (get selection)
    set tArtwork to t's artworks
    repeat with i from (count tArtwork) to 1 by -1
        delete tArtwork's item i
    end repeat
end tell
于 2013-11-11T09:44:11.610 回答