【问题标题】:Aperture export import scriptAperture 导出导入脚本
【发布时间】:2019-10-31 21:21:45
【问题描述】:

随着 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) 的问题,但我在网上找不到任何示例,可以从中找出还需要在这里写什么。

【问题讨论】:

    标签: applescript dam


    【解决方案1】:

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

    从错误消息中,我可以合理地确定project 是一个AppleScript 对象,特别是一个元素,从您的脚本中,我将假定它属于library 对象。在这种情况下,几乎肯定会有一个名为 "projects" already defined 的复数元素形式,它指的是所有类型为 project 的(即多个)元素的集合。

    因此,以下行:

    set projects to (get every project)
    

    是有问题的,因为您正在尝试重新定义属于 AppleScript 的类对象。事实上,projects 将是 every project 的简写,所以这应该已经按照你想要的方式定义了,完全删除这一行就足够了。

    另外,看起来(从您的脚本)export 命令可以作为其直接参数传递对象集合,您正在使用export its every image... 执行此操作。假设这是有效的,那么它可能能够一次导出所有项目中的所有图像:

    tell application "Aperture" to export every image version in every project of library 1 ¬
        naming folders with folder naming policy "Project Name" using export setting ¬
        "JPEG - Original Size" to (choose folder with prompt "Choose an export folder")
    

    【讨论】:

    • 感谢您的帮助。我尝试运行您的脚本并在最后一个小时尝试修复它给我的错误:execution error: Aperture got an error: Can’t get folder naming policy "Project Name". (-1728) 和类似的execution error: Aperture got an error: Can’t get export setting "JPEG - Original Size". (-1728)。考虑到我肯定有一个具有这些确切名称的导出设置和文件夹策略,这很奇怪。
    • 如果我运行tell application "Aperture" activate set folderPolicies to name of folder naming policies choose from list folderPolicies with prompt "Select a folder naming policy" set folderPolicy to (item 1 of result) end tell,它甚至会显示我期待的list of policies
    • 正如您所说,这些不是 我的脚本 的问题。它们是你的问题,因为我的脚本是你的副本,除了我已经关注如何解决 pictures 被引用的问题。所以看起来我的脚本解决了你的脚本最初的问题,但事实证明你的脚本遇到了你现在面临的后续问题。由于我不使用 Aperture,因此我无法就实施特定于它的术语/语法提供建议。
    • 如果您将 Aperture 的脚本定义文件上传到提供下载链接的文件共享站点,或者将其内容复制到一个在线粘贴箱,例如paste.ee。一般情况下,它是以应用程序命名的,这种情况下,你可以运行这行 AppleScript 将其内容复制到剪贴板并粘贴到粘贴箱中:set the clipboard to (read (path to resource "Aperture.sdef" in bundle app "Aperture") as "utf8") 然后我就可以理解 Aperture AppleScripts 应该可以工作并为您提供建议。
    【解决方案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 需要在整个库的上下文中设置(即在脚本的最开始处),而不是在每个项目级别上避免错误

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

    【讨论】:

      猜你喜欢
      • 2020-03-23
      • 2011-03-24
      • 2017-06-15
      • 1970-01-01
      • 2013-07-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-04
      相关资源
      最近更新 更多