4 个版本
0.2.2 | 2024 年 6 月 14 日 |
---|---|
0.2.1 | 2024 年 6 月 14 日 |
0.2.0 | 2024 年 5 月 4 日 |
0.1.2 | 2024 年 5 月 3 日 |
0.1.1 |
|
#141 在 图像
66KB
1.5K SLoC
syno-photos-util
用于 Synology Photos 维护的辅助工具。
- 列出 Synology Photos 相册中包含照片的文件夹
- 将相册内容复制到 Synology Photos 文件夹
为什么?
这是一个控制台应用程序,它查询 Synology Photos API 以推断 Synology Photos 相册 中添加的图片的位置(文件夹路径),或从相册中复制图片到 文件夹。
我在对我 Synology NAS 上的图片进行春季清理时使用了它(以及作为 Rust 编程练习)。也许有人会发现它也很方便。
使用方法
从 发布 下载您平台上的二进制文件。
以下命令示例省略了二进制文件名中的版本和平台后缀。
显示帮助信息
./syno-photos-util --help
Usage: syno-photos-util [OPTIONS] <COMMAND>
Commands:
login Sign in to Synology DSM
list List file locations (folders) of photos in an album
export Export (accessible) album photos to a folder in the user's personal space
logout Sign out of DSM
status Check DSM sign-in status
check-update Check if new version is available
help Print this message or the help of the given subcommand(s)
Options:
--timeout <TIMEOUT_SECONDS>
HTTP request timeout in seconds
Must be greater or equal to 5. When Synology Photos does not respond within the timeout, an
error is displayed. Try to increase the value for slow connections
[default: 30]
-h, --help
Print help (see a summary with '-h')
-V, --version
Print version
每个命令都支持 --help
选项,以获取详细描述。
登录到 Synology DSM
在使用其他任何命令之前,您需要登录到 DSM
./syno-photos-util login https://your.nas.address/
您可以将您的 DSM 用户凭据作为参数提供(参见 login --help
),或者您将被要求输入它们。如果启用了多因素身份验证(MFA),您可以使用 --remember
选项,以便在下次使用 login
命令时不再要求输入 OTP 码。
地址值应与您在浏览器中打开 DSM 所使用的地址相同。除非您使用非标准端口(HTTP 为 5000,HTTPS 为 5001),否则可以省略端口号 - 否则需要指定,例如
https://your.nas.address:5042
。
在成功登录后,会话ID将被保存到
$HOME/.syno-photos-util
文件中(在Windows的用户配置文件目录中,例如C:\Users\Alice\.syno-photos-util
),类似于网页浏览器保存cookie。不要与任何人共享此文件,因为它可以访问您的DSM。
列出相册中的文件
成功登录后,您可以列出相册的内容,并在您的NAS上打印它们的文件系统路径
./syno-photos-util list "My Album"
相册可以是普通相册,也可以是“人物”相册中的人名。
输出可能如下所示
'/var/services/homes/alice/Photos/PhotoLibrary/2022/11/mountain.jpg'
'/var/services/photo/beach.jpeg'
Error: no access (owned by bob) 'forest.jpg'
在此示例中,我的相册包含3张照片
- 这张
mountain.jpg
照片在登录用户(本例中的alice
)的个人空间文件夹中(位于用户的家目录中)。 - 这张
beach.jpeg
照片在共享空间中(位于photo
共享文件夹中)。 - 对于
forest.jpg
,文件的实际位置对alice
不可访问。这种情况可能发生在有其他NAS用户(本例中的bob
)拥有“提供者”访问权限到我的相册,并且他们从个人空间添加了照片时。另一种可能是我的相册属于bob
,并与alice
共享 - 根据权限,一些或所有照片位置可能不可访问。
将相册导出为文件夹
./syno-photos-util export "My Album" "/my folder/my album dump"
请注意,当前目标文件夹需要在用户的个人空间中已经存在。
该命令安排了一个在个人空间中从相册复制照片到文件夹的后台任务。由于权限问题而无法访问的照片将不会被复制。如果目标文件夹中已经存在同名照片,则不会进行覆盖。您也可以在Synology Photos Web UI中检查任务状态。
由于登录会话被保存,因此可以安排此命令,例如使用CRON,定期导出添加到相册的文件。
登出
完成任务后,您可能想从DSM注销
./syno-photos-util logout
这将从$HOME/.syno-photos-util
中删除会话信息。您还可以选择添加--forget
选项,以在下次登录时强制执行OTP代码验证(仅在启用MFA时可用)。或者,只需删除$HOME/.syno-photos-util
文件即可达到相同的效果。
从源码构建
构建完成后,二进制文件位于$HOME/.cargo/bin/syno-photos-util
,并且应该可用在您的$PATH
中。
或者,克隆此git仓库,然后在克隆的目录中用以下方式构建项目
cargo build --release
二进制文件位于target/release/syno-photos-util
。
待办事项
- 添加对“位置”相册的支持
致谢
- zeichensatz/SynologyPhotosAPI包含了一个描述Synology Photos API的说明,它让我开始了这个过程
依赖关系
~10–24MB
~372K SLoC