文章目录
- OSXPhotos:macOS 照片库的全能管理工具
- 1、 这玩意儿是干嘛的
- 2、 能干什么
- 3、 安装方式
- 4、 用起来什么样
- 5、 Python API
- 6、 适合谁用
OSXPhotos:macOS 照片库的全能管理工具
osxphotos 在 GitHub 上已经拿到 3,639 Star 了。
这是一个专门和 Apple Photos 照片库打交道的命令行工具。查询照片元数据、批量导出、编辑描述信息、同步多个图库,全靠它。
1、 这玩意儿是干嘛的
一句话:用命令行操控你的 macOS 照片库。
Apple 自带的 Photos 应用好看是好看,但一旦你想批量操作就抓瞎。想导出某个时间段的所有照片?想把所有包含某个人的照片找出来?想给几百张照片批量添加关键词?Photos 应用本身做不了这些事。
OSXPhotos 就是来补这个缺口的。它能直接读取 Photos 的数据库,查询文件名、路径、关键词、人脸、相册等元数据,也能把原始照片和编辑后的版本一起导出来。
2、 能干什么
这个工具提供的命令相当多,挑几个常用的说。
export是用得最多的命令,把照片从图库里导出来。可以按日期分文件夹,可以只导出视频,可以筛选大于某个尺寸的文件,选项超过 100 个。
query用来查询。比如找出所有带"旅行"关键词的照片,输出成 JSON 文件。配合其他工具做数据分析很方便。
batch-edit批量编辑照片的标题、描述、关键词这些元数据。手动在 Photos 里一张张改,几千张照片能改到天黑。
import往图库里导入照片和视频。sync在多个 Photos 图库之间同步元数据和相册。timewarp调整照片的拍摄时间和时区。
还有一个repl命令,开一个交互式终端,可以直接用 Python 代码操作照片库,适合需要灵活查询的场景。
3、 安装方式
最推荐用 uv 来装,这是 Python 的包管理工具:
curl-LsSfhttps://astral.sh/uv/install.sh|shuv toolinstall--python3.13osxphotos用 Homebrew 也行:
brew tap RhetTbull/osxphotos brewinstallosxphotos直接用 pip 装:
python3-mpipinstallosxphotosMacPorts 用户可以用sudo port install osxphotos。
如果不想装 Python,可以直接下载 GitHub Releases 页面的预编译可执行文件,解压放到系统路径里就能用。
Linux 上也能跑,只是 macOS 专属的功能(比如直接和 Photos 应用交互)不可用,但导出和查询命令以及 Python API 都正常工作。
4、 用起来什么样
导出全部照片,按日期归档:
osxphotosexport~/Desktop/export --export-by-date找出所有带"Kids"关键词的照片,输出为 JSON:
osxphotos query--keywordKids--json>results.json找出所有超过 200MB 的视频,自动加入一个叫"Big Videos"的相册:
osxphotos query --only-movies --min-size 200MB --add-to-album"Big Videos"每个命令都可以用osxphotos help COMMAND查看详细帮助,比如osxphotos help export。选项太多记不住的话,还能按主题搜索:osxphotos help export raw会列出所有和 RAW 文件相关的选项。
5、 Python API
除了命令行,OSXPhotos 还提供了一套 Python API,可以在自己的代码里调用。查询照片库、遍历照片、读取元数据,都能用 Python 完成。对于需要做复杂数据处理或者集成到其他工作流里的场景,API 比命令行更灵活。
项目文档里有 API 说明和示例代码,终端里运行osxphotos docs可以直接打开在线文档。
6、 适合谁用
在 macOS 上管理大量照片的人。摄影师、内容创作者、或者只是想把多年积累的照片做个系统性整理的普通用户。
需要批量导出照片做备份、迁移的场景。想用脚本自动化照片管理流程的开发者。在 Linux 上需要读取 macOS Photos 图库数据的人。
年积累的照片做个系统性整理的普通用户。
需要批量导出照片做备份、迁移的场景。想用脚本自动化照片管理流程的开发者。在 Linux 上需要读取 macOS Photos 图库数据的人。