我尝试在 Mac 上使用 javascript-for-automation 从 Apple Photos 导出图像,但无法解决
Can't convert types
错误。
我的代码中有问题的行是
Photos.export( { export: matching_photos, to: destination } )
,但我不知道如何修复它。我真的只想导出 randomPhoto
,而不是 matching_photos
的整个列表,但我试图首先使其工作,因为 matching_photos
绝对是媒体项目列表。我认为问题在于目的地的类型,它应该是一个“文件”。
这是我从 Apple 脚本编辑器中的照片词典中获得的内容
export 方法:将媒体项作为文件导出到指定位置
export list of [MediaItem](#) :要导出的媒体项目列表。
to: 文件:导出的目的地。
[usingOriginals: boolean] :如果为 true,则导出原始文件,否则导出渲染的 jpg。默认为 false。
我的代码,我从命令行运行
echo "$(osascript -l JavaScript <<'EOT'
...:
const posix_path="/Users/erik/dev/temp/"
const destination=Path(posix_path)
const Photos=Application("Photos")
Photos.includeStandardAdditions = true // What does this accomplish?
matching_photos=Photos
.search({for:"ravens"})
.filter(x=>x.filename().match(/(jpeg|jpg|heic)$/i)
)
if (matching_photos.length>0){
const randomPhoto = matching_photos[
Math.floor(Math.random() * matching_photos.length)
]
console.log("foo")
Photos.export({ export: matching_photos, to: destination } )
console.log("bar")
randomPhoto.size()
} else {
0
}
输出:
foo
execution error: Error: Error: Can't convert types. (-1700)
我也尝试过
Photos.export( { export: matching_photos, to: posix_path } )
看看是否可行,但不行。
我找不到任何有关使用JXA从照片导出的相关文档或示例。指向此类材料的指针将非常有帮助。
我设法使用 AppleScript 导出照片,但无法管理列表过滤并且对语法感到沮丧。
有什么想法吗?谢谢!
导致问题的线路
Photos.export( { export: matching_photos, to: destination } )
应该阅读
Photos.export( matching_photos, { to: destination } )
并且只获得一张照片
Photos.export( [randomPhoto], {to: destination} )