本文介绍怎样用 Gallery Organizer 整理已经导出的 Mac 照片库:先预览移动计划,再按拍摄年月归档,并把 Live Photo、重复副本和日期不明的素材分别处理。网页和命令行两种入口都可以完成前两轮整理。
为什么导出的照片越整理越乱
手机和相机都会反复使用 IMG_0001 这样的文件名。几次导出重叠后,同名文件可能拍摄于不同年份,也可能是同一张照片的副本。Live Photo 导出后常变成一张 HEIC 加一段 MOV,旁边还可能有记录编辑信息的 .aae 或 .xmp。如果只按文件名移动,很容易拆散这些关系;如果只看修改时间,复制当天又可能被误当成拍摄日期。
Gallery Organizer 的做法是先区分能确认的相机素材,再检查剩下的截图、录屏、下载图片和信息有冲突的文件。它只处理已经导出的文件夹,不会从 iPhone 或 Apple 照片 App 提取照片;也不要直接把照片图库包交给它。项目仅在 macOS 上运行。
先准备目录和备份
先独立备份原始导出,再挑一个熟悉的小批次试用。打开项目的 config.ini,设置照片根目录和输出位置。默认结构可以这样理解:
|
|
这些是可能出现的目录,不代表每次都会创建。归档通常采用 2024/2024-06/ 的年月结构;同名但内容不同的文件不会互相覆盖,必要时会再加日期目录。config.ini 中的 language = zh 可以让报告和新建分类目录使用中文,但不会重命名已经存在的文件夹。
用网页先预览第一轮
在项目目录打开终端,运行:
|
|
浏览器访问 http://127.0.0.1:8000/,保持终端窗口开启。在网页选择主整理工具,输入 Incoming/Stage0/Batch A 的完整路径,先点 Scan / Dry Run。逐项看目标位置、同名冲突、Live Photo 配对和待人工复核项,再点 Apply changes。执行前工具会重新扫描;成功后整批目录移到 Stage1,仍需处理的文件留在里面。
网页可切换中英文;详细报告使用 config.ini 的语言设置。任务历史会保留供回看,但中断的任务不会自动接着运行,也没有整批撤销按钮。重新运行前先核对报告和文件实际位置。
喜欢终端,也可以走同样的两轮
命令行适合已有固定导出目录、想逐批处理的人。下面的路径要换成自己的。每轮第一条只预览,第二条带 --apply 才会移动文件:
|
|
第一轮把能确认的相机照片与视频放进 Gallery/Main/年份/年-月/;照片、Live Photo 视频及能确认归属的伴随文件会尽量待在一起。第二轮检查 Stage1 留下的内容:截图和录屏进 Screenshots,保存或下载的图片进 OtherMedia,仍认不准的进 NeedsRepair。第二轮才确认的相机素材会进入 SortedFromUnsorted。
例如 IMG_0100.HEIC、IMG_0100.MOV 和 IMG_0100.HEIC.xmp 可以一起出现在 Gallery/Main/2024/2024-06/。不确定归属的 .xmp 则应先留在待检查目录。相机缩略图 .thm、低分辨率视频 .lrv 等文件也可能是素材的一部分,整理结束前不要因为扩展名陌生就删除。
第一次配置,只改自己能确认的路径
假设照片都放在外接盘,可以先把 backup_root 改成那块盘里的专用目录,其他子目录沿用默认值。gallery_root = Gallery 是相对于照片根目录的路径,main_library_root = Main 又是相对于 Gallery;它们不是三个互不相关的位置。路径里有空格时,config.ini 中不用加引号,命令行参数则需要保留示例中的引号。
把一批导出放到 Incoming/Stage0/Batch A,处理时选择这个批次,不要直接把整个 Stage0 当输入。根目录也是工具允许处理的来源与目标边界,所以不要把输入随意指到根目录外。先让配置对应的文件夹结构清楚,再尝试不同分类位置,能少掉很多“文件到底移到哪了”的困惑。
requirements-api.txt 安装的是本地网页需要的 Python 包,不代表所有媒体读取程序也都包含在里面。如果扫描提示缺少某个外部工具,按提示检查 [tools]:留空表示搜索系统,也可以填写已安装程序的完整路径。不要把工具所在的文件夹当成可执行文件路径。
一次试运行应该检查哪些结果
先挑一批包含普通照片、一组 Live Photo、几张截图和一份重复导出的样本。Dry Run 以后重点看四件事:拍摄年月是否符合记忆;Live Photo 的照片与短视频是否在一起;截图是否仍混在待分类项里;重复副本保留的是哪一份。日期明显不对时,先调查元数据,不要为了完成整理就直接应用。
确认第一轮后,再对 Stage1 中同一批次运行第二轮。两个脚本不是一条会自动走到底的流水线;第二轮也是独立预览、独立执行。完成以后,在目标目录抽查几张照片、播放一段视频,再确认待检查项为什么被留下。分类目录清楚,比文件全部“消失在输入文件夹”更有意义。
JPEG 日期修复更适合放在整理之后的专项检查里。比如一批旧照片只有复制日期,不能因为文件名看起来像某天,就把整批时间全部写进去。先确定时区、允许修改的日期范围和要人工保留的月份,再使用工具提供的备份与报告。NeedsRepair 是提醒你继续判断的入口,不是应该直接删除的废料箱。
重复文件和日期异常另做一轮
主整理会把确认的重复副本单独放置;另有可选工具检查已经进入主库的重复文件。完全重复和“看起来相似”不是一回事:连拍、修图版、不同格式导出,都值得先看内容再决定保留哪一份。网页的图片对照默认关闭,需要时再打开;HEIC 首次生成预览可能稍慢。
JPEG 日期修复是另一项独立操作。写入前先在 config.ini 确认时区和可处理日期范围,保留它生成的备份与报告。一次只允许一个网页或终端任务应用更改。若只想先核对某张照片的拍摄参数,可用 View Media Info 查看。更多路径配置和可选工具见 项目 README。