Aperture导出导入脚本

时间:2019-10-31 21:21:45

标签: applescript dam

随着macOS Catalina放弃对Aperture的支持,我需要将库移至其他应用程序。 Mylio有一个很棒的导入工具,可以继承几乎所有的库结构和元数据,但是会丢失一些调整。为了保留这些图像,我正在尝试编写一个Apple脚本,该脚本可以导出库中的所有图像(应用调整后),然后将它们重新导入到同一项目中,然后再删除原始图像。

我想我几乎是第一部分,导出所有图像。

tell application "Aperture"
  tell library 1
        set projects to (get every project)
        repeat with i from 1 to count of projects
            tell (item i of projects)
                export its every image version naming folders with folder naming policy ¬
                    "Project Name" using export setting ¬
                    "JPEG - Original Size" to (choose folder with prompt "Choose an export folder")
            end tell
        end repeat
  end tell
end tell

但是,当我尝试运行此脚本时,我不断收到错误消息

apertureExportImport.applescript:704:712:
execution error: Aperture got an error: Can’t make {project id "1ixjjya6T+Sb3pFmhRK8Fg"} into type project. (-1700)

我想问题出在set projects to (get every project)上,但是我找不到在线示例来找出在此还要写些什么。

2 个答案:

答案 0 :(得分:2)

我不使用 Aperture ,所以我只能进行有根据的猜测:

从错误消息中,我可以合理地确定project是一个AppleScript对象,尤其是一个元素,根据您的脚本,我认为它属于{{1 }}对象。在这种情况下,几乎可以肯定已经定义了一个名为library的复数元素形式,该形式将引用所有"projects"类型的元素(即多个)的集合。

因此,以下行:

project

是有问题的,因为您试图重新定义属于AppleScript的类对象。实际上,set projects to (get every project) projects的简写,因此应该已经按照您想要的方式定义了它,只需完全删除此行就足够了。

在单独的注释中,看起来(从您的脚本起) every project 命令可以传递对象的集合作为其直接参数,您可以使用{{ 1}}。假设这是有效的,那么它也许可以一次导出所有项目中的所有图像:

export

答案 1 :(得分:2)

最后,它可以正常工作(除了在导出和重新导入后删除原始图像外,其他所有操作,但我可以通过标记或对脚本将处理的所有图像进行颜色编码来手动完成)。

tell application "Aperture"
  with timeout of 86400 seconds
    activate
    set exportSetting to export setting "JPEG - Original Size"
    set folderPolicy to folder naming policy "Project Name"
    set exportFolder to "/Users/<user>/Desktop"
    -- Alternatively, use
    -- set exportFolder to (choose folder with prompt "Choose an export folder")

    tell library 1
    repeat with proj in projects
      set imageSel to every image version in proj where flagged is true
      export imageSel naming folders with folderPolicy using exportSetting to exportFolder
        set importFolder to exportFolder & "/" & name of proj
        import importFolder by referencing into proj
    end repeat
    end tell
  end timeout
end tell

一个很难学习的重要课程是,exportSettingfolderPolicy必须在整个库的上下文中(即在脚本的开头)设置,而不是在每个库的上下文中设置。 -project级以避免错误

execution error: Aperture got an error: Can’t get folder naming policy "Project Name". (-1728)