尝试从pict文件捕获艺术品并将其嵌入曲目时出现“未知对象”错误

2024-06-01 04:26:47 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图从一个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:])

我收到一个错误,错误:-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时抛出错误


Tags: thereaddata错误itcurrentuserstemp
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()

希望这有帮助

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

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

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

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

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

相关问题 更多 >