#synology #command-line-application #web-interface #synology-nas #synology-photos

bin+lib syno-photos-util

Synology Photos 网页界面中不可用的多项任务的辅助工具

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 2024 年 4 月 29 日

#141图像

GPL-3.0-or-later

66KB
1.5K SLoC

syno-photos-util

Crates.io Version build and release

用于 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文件即可达到相同的效果。

从源码构建

  1. 如果您还没有安装,请安装Rust

  2. crates.io安装应用(当发布新版本时,您可以使用相同的命令更新应用)

    cargo install syno-photos-util
    

构建完成后,二进制文件位于$HOME/.cargo/bin/syno-photos-util,并且应该可用在您的$PATH中。

或者,克隆此git仓库,然后在克隆的目录中用以下方式构建项目

cargo build --release

二进制文件位于target/release/syno-photos-util

待办事项

  • 添加对“位置”相册的支持

致谢

依赖关系

~10–24MB
~372K SLoC