我正在尝试从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的新手。
答案 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,如果您希望它实际向应用程序和脚本添加发送命令并接收其结果,则需要启用“将事件发送到应用程序”复选框。通常,最好禁用此选项,以便在翻译set
或delete
等潜在破坏性命令时不会发生任何不幸事故,因此只有在您真正需要时才启用它,你要小心你运行的代码。
答案 2 :(得分:0)
read
命令是Scripting Additions的一部分,ASTranslate不会将其转换为。通过单击“字典”菜单下的“选择已安装的脚本添加”,然后从列表中选择“脚本添加”,使用ASDictionary为脚本添加创建粘合剂。