Zoph/使用命令行工具
许多用户几乎完全使用Zoph Web界面来操作Zoph。但是,更高级的用户可能更喜欢使用命令行界面(CLI)来执行某些任务。Zoph有一个名为zoph的CLI客户端,可用于导入照片并对数据库中已有的照片进行(批量)更改。
可以在此处找到所有选项的详细概述。
首先,您需要一个有效的zoph.ini文件才能使用CLI客户端。如果您在系统上安装了多个Zoph实例,与Web界面相比,一个重要的区别在于CLI无法自动确定您尝试将照片导入到哪个Zoph安装(实例)。默认情况下,它将采用第一个实例,否则您需要指定--instance CLI选项。请参阅zoph.ini以获取一些示例。
配置页面(在管理员下)中有一些与导入相关的选项。有关概述,请参见右侧的屏幕截图。这些选项应该不言自明。
当然,您希望告诉Zoph它应该导入哪些照片。照片列表始终最后指定。您可以简单地指定文件名,但也可以使用Shell的“通配符”功能一次指定多张照片。
假设您在一个目录中有一堆照片加上一个文本文件
zoph@zoph $ ls IMG_1203.JPG IMG_1207.JPG IMG_1211.JPG IMG_1215.JPG IMG_1219.JPG IMG_1204.JPG IMG_1208.JPG IMG_1212.JPG IMG_1216.JPG IMG_1220.JPG IMG_1205.JPG IMG_1209.JPG IMG_1213.JPG IMG_1217.JPG IMG_1221.JPG IMG_1206.JPG IMG_1210.JPG IMG_1214.JPG IMG_1218.JPG photos.txt
如果要导入所有照片,可以执行以下操作
zoph@zoph $ zoph *
但是,当zoph尝试导入文本文件时,这将导致错误,因此最好执行以下操作
zoph@zoph $ zoph *.JPG
甚至
zoph@zoph $ zoph IMG_12*.JPG
但是,如果您只想导入其中的一些照片,例如1203到1205、1210到1219(1213除外)、1220和1221。当然,您可以分别指定每个文件
zoph@zoph $ zoph IMG_1203.JPG IMG_1204.JPG IMG_1205.JPG IMG_1210.JPG IMG_1211.JPG IMG_1212.JPG IMG_1214.JPG IMG_1215.JPG IMG_1216.JPG IMG_1217.JPG IMG_1218.JPG IMG_1219.JPG IMG_1220.JPG IMG_1221.JPG
好吧,我不知道你怎么样,但我肯定没有买电脑来自己做事情,所以为什么不让电脑来处理呢?
zoph@zoph $ zoph IMG_120[3-5].JPG IMG_121[^3]*.JPG IMG_122*.JPG
这样节省了很多打字时间,不是吗?顺便说一下,这不是zoph的功能,而是您Shell的功能(可能是Bash)。
您可以像上面描述的那样导入照片,然后使用Zoph Web界面来组织它们,但为什么不立即组织它们呢?
您可以将照片放入一个或多个相册和一个或多个类别中(实际上是零个或多个,因为您不必将它们放入相册或类别中)。为此,请使用--album和--category命令行选项。如果照片上有任何人物,则可以使用--person选项将人物添加到照片中。请记住,照片列表始终位于其他选项之后。重要的是要意识到相册、类别或人物必须已存在于数据库中。
导入IMG_1300.JPG并将其放置在Summer相册和Landscapes类别中
zoph@zoph $ zoph --album "Summer" --category "Landscapes" IMG_1300.JPG
导入john.jpg并将其放置在Family相册、Portraits类别中,并指定John Doe在该图片中
zoph@zoph $ zoph --album "Family" --category "Portraits" --person "John Doe" john.jpg
导入family.jpg并将其放置在Family和Summer相册中,并指定John Doe、Johnny Doe和Jane Doe在该图片中
zoph@zoph $ zoph --album "Family" --album "Summer" --category "Portraits" --person "John Doe, Johnny Doe, Jane Doe" family.jpg
导入guitarists.jpg并将其放置在Music和Musicians类别中,并指定Hank Williams、Jimi Hendrix和Brian May在该图片中
zoph@zoph $ zoph --category "Music, Musicians" --person "Hank Williams" --person "Jimi Hendrix" --person "Brian May" guitarists.jpg
如您所见,您可以通过多次重复--album、--category或--person选项,或仅指定一次并为其提供一个用逗号分隔的相册、类别或人物列表来添加多个相册、类别或人物。
当然,您还希望记录照片是在哪里以及由谁拍摄的。这与相册、类别和人物的工作方式几乎相同,除了您只能存储每个的一个。同样,在通过CLI使用人物和地点之前,它们必须存在于数据库中。使用--photographer选项指定摄影师,使用--location选项指定地点。
导入IMG_1400.JPG并设置John Doe为摄影师
zoph@zoph $ zoph --photographer "John Doe" IMG_1400.JPG
导入IMG_1401.JPG并设置“Berlin”为拍摄照片的地点
zoph@zoph $ zoph --location "Berlin" IMG_1401.JPG
Zoph 可以存储关于您的照片的更多属性。其中许多属性将自动从照片的 EXIF 信息中读取。您也可以使用--field 选项手动设置这些字段。有关字段的完整列表,请参阅 --field。
导入IMG_1416.JPG并设置标题
zoph@zoph $ zoph --field "Title=A nice photo" IMG_1416.JPG
在导入过程中,Zoph 会将您的照片移动(或复制)到您设置为“image_dir”的目录。您可以在 zoph.ini 中设置此目录。在此目录下,Zoph 可以创建子目录。这由 --path、--dateddirs 和 --hierarchical 选项控制。使用 --path,您可以手动设置将在“image_dir”和文件名之间插入的路径。使用 --dateddirs 和 --hierarchical,Zoph 将根据照片的(EXIF-)日期创建目录。如果您同时指定了路径名和 --dateddirs 或 --hierarchical,则该位置将首先包含路径,然后包含日期目录。
假设 IMG_1480.JPG 拍摄于 2010 年 5 月 5 日,IMG_1481.JPG 拍摄于 2010 年 5 月 13 日,并且 image_dir 设置为/data/photos.
zoph@zoph $ zoph IMG_1480.JPG IMG_1481.JPG zoph@zoph $ ls /data/photos mid thumb IMG_1480.JPG IMG_1481.JPG
好的,现在让我们添加一个 --path
zoph@zoph $ zoph --path "family" IMG_1480.JPG IMG_1481.JPG zoph@zoph $ ls /data/photos family zoph@zoph $ ls /data/photos/family mid thumb IMG_1480.JPG IMG_1481.JPG
和 --dateddirs
zoph@zoph $ zoph --dateddirs IMG_1480.JPG IMG_1481.JPG zoph@zoph $ ls /data/photos 2010.05.05 2010.05.13 zoph@zoph $ ls /data/photos/2010.05.05 mid thumb IMG_1480.JPG
如果您只有少量照片,这当然很好,但是当您的收藏集增长并且您拍摄的照片跨越数百天时,您最终将拥有数百个日期目录。出于这个原因,存在分层日期目录
zoph@zoph $ zoph --hierarchical IMG_1480.JPG IMG_1481.JPG zoph@zoph $ ls /data/photos 2010 zoph@zoph $ ls /data/photos/2010 05 zoph@zoph $ ls /data/photos/2010/05 05 13 zoph@zoph $ ls /data/photos/2010/05/05 mid thumb IMG_1480.JPG
当然,您也可以同时使用路径和日期目录
zoph@zoph $ zoph --path "family" --hierarchical IMG_1480.JPG zoph@zoph $ zoph --path "family" --dateddirs IMG_1481.JPG zoph@zoph $ ls /data/photos family zoph@zoph $ ls /data/photos/family 2010 2010.05.13
(顺便说一句,当同时指定 --dateddirs 和 --hierarchical 时,分层将优先)。
使用 --dirpattern CLI 选项,您可以根据照片所在的目录自动分配相册、类别、人物、摄影师、位置或路径。您可以通过指定一个模式来做到这一点,Zoph 将根据该模式使用目录名称分配给正确的组织者。此模式由字母列表组成,其中每个字母代表一个目录。您可以使用的字母为:a(相册)、c(类别)、l(位置)、p(人物)、P(摄影师)和D(路径)。
假设您有以下目录结构
|- John Doe | |- Walk in the park | | |- Trees | | | |- IMG_2001.JPG | | | |- IMG_2002.JPG | | | |- Flowers | | | |- IMG_2003.JPG | | |- Flowers | | |- IMG_2004.JPG | |- A day in the forest | | |- Trees | | | |- IMG_2005.JPG | | | |- IMG_2006.JPG | | | |- Birds | | | |- IMG_2007.JPG | | |- Animals | | |- IMG_2008.JPG | |- Summer Holiday | |- IMG_2009.JPG | |- IMG_2010.JPG |- Jane Doe |- A day in the forest | |- Trees | | |- DSC_1000.JPG | | |- DSC_1001.JPG | | |- Birds | | |- DSC_1002.JPG | |- Animals | |- DSC_1003.JPG |- Summer Holiday |- DSC_1004.JPG |- DSC_1005.JPG
现在,您可以进入顶层目录并使用--dirpattern选项运行 Zoph 导入,以自动为每张照片分配摄影师、相册和一些类别
zoph --import -r --dirpattern "Pacc" *
Zoph 现在将导入整个目录结构,使用第一级目录名称分配摄影师(dirpattern 中的P),第二级分配相册(a),第三级和第四级分配类别(cc)。在此示例中,IMG_2001.JPG到IMG_2010将存储为摄影师“John Doe”,照片DSC_1000.JPG到DSC_1005.JPG将存储为摄影师“Jane Doe”。IMG_2001.JPG到IMG_2004.JPG将具有相册“A walk in the park”。
IMG_2005.JPG到IMG_2008.JPG以及DSC_1000.JPG到IMG_1003.JPG将位于相册“A day in the forest”中。
IMG_2009.JPG, IMG_2010.JPG, DSC_1004.JPG和DSC_1005.JPG将位于相册“Summer Holiday”中。
IMG_2001.JPG, IMG_2002.JPG, IMG_2003.JPG, IMG_2005.JPG到IMG_2007.JPG和DSC_1000.JPG到IMG_1002.JPG将位于类别 Trees 中。
IMG_2003.JPG和IMG_2004.JPG将位于类别 Flowers 中。这意味着IMG_2003.JPG将同时分配给 Trees 和 Flowers。同样,DSC_1002.JPG将同时分配给 Trees 和 Birds。
IMG_2008.JPG和DSC_1003.JPG将位于类别 Animals 中。
最后,“Summer Holiday”相册中的照片将不会分配任何类别。
Zoph CLI 客户端有几个选项可以控制其工作方式,上面已经给出了 --dateddirs 和 --hierarchical 的示例。更多设置可以在 选项 中找到。