最近用了immich来管理照片,感觉很好用。
由于刚上手不了解使用方法,遇到了在上传库(upload库)删除本地照片后前台页面仍显示照片的问题。看了官方文档后有了解决方法,遂进行记录。
事件背景:
immich有两个重要的照片库,一个是外部库(External库)一个是上传库(upload库)。手机、web等设备上传的照片都存到了上传库中。
在immich官方文档里只提到了如果删除外部库的磁盘本地原始照片后如何清除前台预览照片的方法(在web管理页面,外部库删除离线照片)。
但是对于删除上传库本地磁盘原始照片后如何清除前台预览照片的方法并没有介绍。
又但是在immich官方文档的社区项目中,有一个【删除脱机文件】的社区项目。
本文就是对这个社区项目的应用。
immich官方文档在这里:Community Projects | Immich
【删除脱机文件】社区项目的地址是:Thoroslives/immich_remove_offline_files:一种从 Immich 的数据库中删除孤立离线资产的简单方法。 (github.com)
步骤记录:
一、确保已经安装了python,该脚本需要 Python 3.x
在openwrt或者istoreos中可以通过opkg安装python
opkg update
安装python和pip
opkg install python3
opkg install python3-pip
二、安装本脚本需要的依赖
该脚本需要多个 Python 包才能正常运行。
requests
halo
tabulate
tqdm
可以使用以下命令安装这些命令:
pip install requests halo tabulate tqdm
三、下载脚本
导航到你要存放脚本的目录,然后下载脚本
curl -O https://raw.githubusercontent.com/Thoroslives/immich_remove_offline_files/main/immich_remove_offline_files.py
四、获取immich的管理API密钥
immich每个账号只需要一个API密钥,但是因为区分管理员账号和普通用户账号所以可以理解为有管理员API和用户API。管理api主要用于获取离线文件的报告(照片清单),用户api主要用户实际删除离线文件的操作。当你的账号就是管理员账号的时候,管理API和用户API是同一个值。
在immich的web页面中,点击头像,点击账号管理,可以在页面中看到api密钥管理,创建一个api密钥然后记录下来即可。
五、在immich中生成离线文件的报告(照片清单)
在immich的web页面中,点右上角管理,在左边点击修复,等待页面出现后点击检查全部。
等待后会出现离线文件的清单。
清单在页面中出现即可,不需要再操作。
六、脚本用法
这个脚本有如下几个参数:
--admin_apikey [ADMIN_API_KEY]
:用于获取报告的 Immich 管理 API 密钥。--user_apikey [USER_API_KEY]
:用于删除的用户特定 Immich API 密钥。--immichaddress [IMMICH_ADDRESS]
:Immich的完整网址,包括协议和端口。--no_prompt
:允许在不确认的情况下删除孤立的媒体资产。
使用代码示例如下:
替换下述代码中管理api值,用户api值,immich的访问地址。
python3 immich_remove_offline_files.py --admin_apikey "your_admin_api_key" --user_apikey "your_user_api_key" --immichaddress "http://IPADDRESS:port"
运行后会列出离线文件清单。并询问你是否删除。
输入yes回车后,离线文件的前台预览就删掉了。
刷新immich能看到效果。