一位资深开发者近日披露了他所构建的、高度依赖EXIF元数据的照片管理系统,该系统现已整合了新兴的开源解决方案Immich。该工作流旨在实现照片库的长期持久化,确保未来数十年内数据的可访问性和完整性,同时满足多设备照片的统一管理需求。
该工作流的首要原则是“保留”,即避免依赖任何可能随时间消亡的专有数据库来存储关键信息,如描述、收藏状态或相册归属。作者此前曾使用自己开发的命令行工具Elodie来管理存储在Synology NAS上的照片,该工具亦完全基于EXIF元数据进行操作。
作者此前依赖Google Photos作为只读查看器,但在2019年Google Photos与Google Drive的集成变更后,其工作流受到破坏,促使其寻求替代方案。Synology Photos的表现未能达到预期,直到作者关注到Immich及其引入的“外部库”功能,该功能允许Immich挂载外部文件夹并以只读模式纳入照片库。
Immich的默认设计是将用户添加的元数据写入其Postgres数据库,并且支持读写XMP侧写文件,但作者坚持要求所有信息必须内嵌于照片文件本身,即直接修改EXIF数据。
为了实现这一目标,作者投入两周时间开发了一个解决方案,解决了Immich与Elodie在处理文件移动和元数据更新时的冲突。当Elodie更新EXIF并移动文件时,Immich会将其视为文件删除和新建,这需要一个最终一致性的方法来确保所有更改得以同步和体现。
作者通过Immich的API实现了这一目标,成功将Immich从一个只读查看器转变为一个能够完全遵从其EXIF优先原则的照片组织工具。他指出,Immich的API具有相当大的潜力,目前他正专注于享受照片带来的体验,而非深入技术细节。
该开发者已在GitHub上公开了其简化的插件版本immich-exif,供拥有相似工作流需求的用户参考和采用。他表示,如果社区对此技术细节有强烈兴趣,他将撰写更深入的技术说明。