光圈导出导入脚本
Aperture export import script
随着 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)
上,但我无法在网上找到任何示例来弄清楚这里还有什么要写的。
我没有使用Aperture
,所以我只能做一个有根据的猜测:
从错误消息中,我可以合理地确定 project
是一个 AppleScript 对象,具体来说是一个 element,根据你的脚本,我假设它属于到 library
对象。在那种情况下,几乎肯定会有一个名为 "projects"
的复数元素形式已经定义,它将引用所有类型为 project
.
的(即多个)元素的集合。
因此,下面一行:
set projects to (get every project)
有问题,因为您试图重新定义属于 AppleScript 的 class 对象。事实上,对于 every project
,projects
将是 shorthand,因此这应该已经按照您想要的方式定义,只需完全删除这一行就足够了。
在一个单独的注释中,看起来(从你的脚本中)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")
我最终让它工作了(除了在导出和重新导入后删除原始图像之外的所有内容,但我可以通过标记脚本将处理的所有图像或对所有图像进行颜色编码来手动完成)。
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
一个难以学习的重要教训是 exportSetting
和 folderPolicy
需要在整个库的上下文中设置(即在脚本的最开头)而不是在每个项目级别以避免错误
execution error: Aperture got an error: Can’t get folder naming policy "Project Name". (-1728)
随着 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)
上,但我无法在网上找到任何示例来弄清楚这里还有什么要写的。
我没有使用Aperture
,所以我只能做一个有根据的猜测:
从错误消息中,我可以合理地确定 project
是一个 AppleScript 对象,具体来说是一个 element,根据你的脚本,我假设它属于到 library
对象。在那种情况下,几乎肯定会有一个名为 "projects"
的复数元素形式已经定义,它将引用所有类型为 project
.
因此,下面一行:
set projects to (get every project)
有问题,因为您试图重新定义属于 AppleScript 的 class 对象。事实上,对于 every project
,projects
将是 shorthand,因此这应该已经按照您想要的方式定义,只需完全删除这一行就足够了。
在一个单独的注释中,看起来(从你的脚本中)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")
我最终让它工作了(除了在导出和重新导入后删除原始图像之外的所有内容,但我可以通过标记脚本将处理的所有图像或对所有图像进行颜色编码来手动完成)。
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
一个难以学习的重要教训是 exportSetting
和 folderPolicy
需要在整个库的上下文中设置(即在脚本的最开头)而不是在每个项目级别以避免错误
execution error: Aperture got an error: Can’t get folder naming policy "Project Name". (-1728)