如何使用 JXA 从苹果照片中导出照片?

问题描述 投票:0回答:1

我尝试在 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 导出照片,但无法管理列表过滤并且对语法感到沮丧。

有什么想法吗?谢谢!

export javascript-automation apple-photos
1个回答
0
投票

导致问题的线路

Photos.export( { export: matching_photos, to: destination } )

应该阅读

Photos.export( matching_photos, { to: destination } )

并且只获得一张照片

Photos.export( [randomPhoto], {to: destination} )
© www.soinside.com 2019 - 2024. All rights reserved.