如何定期导出Photos.app收藏的照片/视频及解决Automator脚本报错
嘿,我来帮你逐个解决这些关于Photos.app的问题~
这个操作很直接,跟着步骤走就行:
- 打开Photos.app,左侧边栏找到并点击已收藏(没看到侧边栏的话按
Cmd+Shift+S调出) - 按
Cmd+A全选所有已收藏内容 - 点击顶部菜单栏的文件 > 导出 > 导出X项(X是你选中的内容数量)
- 在导出设置窗口里,按需调整:比如选「原始」格式保证画质,勾选「导出包含视频」,然后选择一个保存位置(建议在桌面新建一个专门的文件夹,比如「收藏导出」)
- 导出完成后,找到这个文件夹,右键点击它选择压缩「收藏导出」,系统会自动生成对应的ZIP文件
要实现定期自动导出,我们可以组合AppleScript、Automator和Mac日历来完成,操作不算复杂:
第一步:编写导出逻辑的AppleScript
打开「脚本编辑器」(在「应用程序/实用工具」文件夹里),粘贴下面的代码,记得把exportPath和zipPath换成你自己的路径(比如"/Users/你的用户名/Desktop/每周收藏导出/"):
set exportPath to "/Users/你的用户名/Desktop/每周收藏导出/原始文件/" set zipPath to "/Users/你的用户名/Desktop/每周收藏导出/本周收藏.zip" -- 自动创建导出目录(不存在的话) do shell script "mkdir -p " & quoted form of exportPath tell application "Photos" -- 获取所有已收藏的媒体项目 set favoriteItems to every media item where favorite is true -- 导出原始文件到指定目录 export favoriteItems to POSIX file exportPath using originals yes end tell -- 压缩导出的文件为ZIP(覆盖已存在的旧ZIP) do shell script "ditto -c -k --sequesterRsrc --keepParent " & quoted form of exportPath & space & quoted form of zipPath
点击脚本编辑器的「编译」按钮(锤子图标)确认没有语法错误,然后把它保存为应用程序格式(比如命名为「自动导出收藏内容」)。
第二步:设置每周定时运行
- 打开「日历」app,新建一个事件
- 给事件起个名字(比如「自动导出收藏照片」),在「重复」选项里选「每周」,设置你想要的运行时间(比如每周日凌晨2点,避开使用电脑的时段)
- 点击「提醒」下拉菜单,选「自定义」,然后点击「添加提醒」,选择「打开文件」,找到你刚才保存的AppleScript应用
- 把事件的「显示为」设置为「繁忙」,这样到点日历就会自动触发这个应用运行
如果你觉得日历不够灵活,也可以用launchd来配置定时任务,但操作相对复杂,日历的方式对普通用户更友好。
这个坑我之前也踩过!Automator的「运行AppleScript」动作有时候会自动调整语法,把using originals true改成with using originals,导致脚本跑不起来。这里有两个靠谱的解决办法:
办法一:调整脚本语法适配Automator
把脚本里的导出语句改成Automator能识别的格式,也就是把using originals yes换成with using originals:
export favoriteItems to POSIX file exportPath with using originals
修改后直接在Automator的「运行AppleScript」动作里使用,Automator就不会再乱改这行代码了。
办法二:让Automator直接调用外部脚本
如果还是有问题,你可以把AppleScript单独保存为.scpt格式(比如在脚本编辑器里保存为「导出收藏脚本.scpt」),然后在Automator里添加「运行Shell脚本」动作,输入下面的命令来调用这个脚本:
osascript "/Users/你的用户名/路径/导出收藏脚本.scpt"
这样Automator就不会碰你的脚本内容,直接执行它,完美避开语法被修改的问题。
内容的提问来源于stack exchange,提问作者user1542125

