如何根据照片的 Shotwell 标题重命名照片?

Jon*_*han 4 python shotwell photo-management

我最近在 Shotwell 中给了大约 200 张照片的数字标题,描述了它们的序列 - 001、002 等。但我希望这个序列的文件名也相同,这样当我在 Nautilus 中打开文件夹时照片按顺序列出。我认为 Shotwell 将标题保存在 exif 数据中的某个位置。事实上,我最终使用 Gnome 图像查看器在 XMP Other 和 Photoshop:Headline 下找到了它。我想要的是一种阅读这些 Shotwell 标题并将其用作文件名的方法。如果我知道如何访问该元数据,我可能可以使用 Python 来完成此操作。

小智 5

由于没有其他答案显示如何实际重命名带有添加的标题的照片Shotwell,因此这里有一种使用 bash 编写脚本的快速方法,正如您在评论中所说,您已经有了 python 替代方案。很可能还有其他方法可以做到这一点,但这个方法可能对某人有用。

由于您已经为图片指定了标题Shotwell并将其导出,并找出了Shotwell添加的元数据的存储位置,因此将脚本放在一起相对简单。

请安装libimage-exiftool-perl,因为该脚本是必需的。

  1. 如果使用exiftool -a G1 -s pic.jpg,您可以看到图片中嵌入的所有元数据类型和标签,以及Shotwell元数据的放置位置:
[XMP-photoshop] Headline                        : 002
[XMP-dc]        Title                           : 002
[IPTC]          Caption-Abstract                : 002
[IPTC]          Headline                        : 002
[IPTC]          OriginatingProgram              : Shotwell
[IPTC]          ProgramVersion                  : 0.13.1+trunk
Run Code Online (Sandbox Code Playgroud)
  1. 现在,XMP-photoshop可以在我们的脚本中使用 或 IPTC 标签exiftool来显示元数据(然后使用结果值来重命名文件)。

输入exiftool -IPTC:headline pic.jpg结果于

Headline                        : 002
Run Code Online (Sandbox Code Playgroud)

这可以被解析并awk作为变量反馈来重命名文件:

mv -i "$i" "$(exiftool -IPTC:headline -s3 "$i").jpg"
Run Code Online (Sandbox Code Playgroud)
  1. 最终的脚本将是这样的:
#!/bin/bash

for i in *.jpg; do
  mv -i "$i" "$(exiftool -IPTC:headline -s3 "$i").jpg"
done
Run Code Online (Sandbox Code Playgroud)

因此,现在您的所有文件都已用其Shotwell标题重命名,正如我们在检查文件时所看到的那样exiftool -a -G1 -s pic.jpg

ExifTool Version Number         : 9.12
File Name                       : 002.jpg
Run Code Online (Sandbox Code Playgroud)

笔记:

  • exiftool 的存储库版本很好,但相当旧,因此如果您需要各种新功能和错误修复的支持,请参阅官方网站以了解如何构建和安装更新的版本。

  • 脚本保留所有元数据不变,因为只有实际文件本身被重命名。

  • 显然,只有当您的图片具有嵌入 Shotwell 创建的标题时,该脚本才有效,但它可以用于其他目的。

有关更多一般信息,请参阅man exiftoolUbuntu 在线联机帮助页