Appscript编写iTunes图稿

时间:2009-10-28 22:31:15

标签: python appscript

我正在尝试从pict文件中捕获艺术作品,并使用python appscript嵌入iTunes中的轨道。 我做了这样的事情:

imFile = open('/Users/kartikaiyer/temp.pict','r')
data = imFile.read()
it = app('iTunes')
sel = it.current_track.get()
sel.artworks[0].data_.set(data[513:])

我收到错误OSERROR:-1731   消息:未知对象

类似的AppleScript代码如下所示:

tell application "iTunes"
    set the_artwork to read (POSIX file "/Users/kartikaiyer/temp.pict") from 513 as picture
    set data of artwork 1 of current track to the_artwork
end tell

我尝试使用ASTranslate,但它从未实例化'the_artwork',然后在有对the_artwork的引用时抛出错误。谁能帮忙。我是appcript和python的新手。

3 个答案:

答案 0 :(得分:3)

这是一个较老的问题,但由于我现在无法做同样的事情,我想我会发布我的解决方案以防其他人可能受益。

selected = appscript.app('iTunes').selection.get()

for t in selected:
    myArt = open(/path/to/image.jpg,'r')
    data = myArt.read()
    t.artworks[1].data_.set(data) # no need to remove header but one-indexed as has said earlier
    myArt.close()

希望这有帮助。

答案 1 :(得分:0)

快速猜测,Appscript引用,如AppleScript引用,使用1索引,而不是像Python列表那样零索引。所以你可能需要写:

it.current_track.artworks[1].data_.set(...)

(顺便说一下,原始脚本中的额外get命令是不必要的,但在这种情况下无害。)

对于ASTranslate,如果您希望它实际向应用程序和脚本添加发送命令并接收其结果,则需要启用“将事件发送到应用程序”复选框。通常,最好禁用此选项,以便在翻译setdelete等潜在破坏性命令时不会发生任何不幸事故,因此只有在您真正需要时才启用它,你要小心你运行的代码。

答案 2 :(得分:0)

read命令是Scripting Additions的一部分,ASTranslate不会将其转换为。通过单击“字典”菜单下的“选择已安装的脚本添加”,然后从列表中选择“脚本添加”,使用ASDictionary为脚本添加创建粘合剂。