exiftool 在使用 add += 时防止重复 iptc:keywords/xmp-dc:subject
exiftool prevent duplicate iptc:keywords/xmp-dc:subject when using add +=
问题:
当我有一个带有 iptc:keywords=holliday 的 jpg 并且我执行
- exiftool myImage.jpg -IPTC:Keywords+=holliday -IPTC:Keywords+=ocean
图像有两个 "holliday" 标签
为了避免重复,我目前使用
- exiftool myImage.jpg -IPTC:Keywords-=holliday -IPTC:Keywords+=holliday -IPTC:Keywords-=ocean -IPTC:Keywords+=ocean
所以如果关键字不存在于jpg中,“-=”无效。
但是这种方法的缺点是 jpg 总是被修改,即使不需要修改,因为关键字已经存在。
是否有更有效的 axiftool-api 调用方式来添加一个 keyword/subject 仅在需要时才更改?
背景:
目前我正在 android 和 pc 之间实现 keywords/subjects 的元数据同步。
android 为所做的每个更改生成一个 msdos 批处理脚本条目,我使用基于 exiftool 的 bat
在 pc 端应用元数据更改的脚本
因为 pc 关键字更改可能来自不同的 android 设备关键字必须 added/removed 并且不能完全设置。
exiftool.exe myImage.jpg -if "not $keywords =~ \"holliday\"" -IPTC:Keywords+=holliday
如果关键字不存在,请添加。
已编辑以适应评论
exiftool.exe ^
-if "not $keywords =~ \"holliday\"" -IPTC:Keywords+=holliday ^
-execute ^
-if "not $keywords =~ \"ocean\"" -IPTC:Keywords+=ocean ^
-common_args myImage.jpg
关于Linux的一些研究bash:
exiftool -if 'not $keywords =~ /holiday/' -Keywords+=holiday myImage.jpg ;
exiftool -if 'not $keywords =~ /ocean/' -Keywords+=ocean myImage.jpg ;
双引号在这里不起作用,所以这是一种处理单引号的方法:
exiftool -if 'not $Keywords =~ /harry'\''s/' -Keywords+='harry'\''s' myImage.jpg ;
如果您的正则表达式必须不区分大小写:
exiftool -if 'not $Keywords =~ /joe/i' -Keywords+='Joe' myImage.jpg ;
问题:
当我有一个带有 iptc:keywords=holliday 的 jpg 并且我执行
- exiftool myImage.jpg -IPTC:Keywords+=holliday -IPTC:Keywords+=ocean
图像有两个 "holliday" 标签
为了避免重复,我目前使用
- exiftool myImage.jpg -IPTC:Keywords-=holliday -IPTC:Keywords+=holliday -IPTC:Keywords-=ocean -IPTC:Keywords+=ocean
所以如果关键字不存在于jpg中,“-=”无效。
但是这种方法的缺点是 jpg 总是被修改,即使不需要修改,因为关键字已经存在。
是否有更有效的 axiftool-api 调用方式来添加一个 keyword/subject 仅在需要时才更改?
背景:
目前我正在 android 和 pc 之间实现 keywords/subjects 的元数据同步。
android 为所做的每个更改生成一个 msdos 批处理脚本条目,我使用基于 exiftool 的 bat 在 pc 端应用元数据更改的脚本
因为 pc 关键字更改可能来自不同的 android 设备关键字必须 added/removed 并且不能完全设置。
exiftool.exe myImage.jpg -if "not $keywords =~ \"holliday\"" -IPTC:Keywords+=holliday
如果关键字不存在,请添加。
已编辑以适应评论
exiftool.exe ^
-if "not $keywords =~ \"holliday\"" -IPTC:Keywords+=holliday ^
-execute ^
-if "not $keywords =~ \"ocean\"" -IPTC:Keywords+=ocean ^
-common_args myImage.jpg
关于Linux的一些研究bash:
exiftool -if 'not $keywords =~ /holiday/' -Keywords+=holiday myImage.jpg ;
exiftool -if 'not $keywords =~ /ocean/' -Keywords+=ocean myImage.jpg ;
双引号在这里不起作用,所以这是一种处理单引号的方法:
exiftool -if 'not $Keywords =~ /harry'\''s/' -Keywords+='harry'\''s' myImage.jpg ;
如果您的正则表达式必须不区分大小写:
exiftool -if 'not $Keywords =~ /joe/i' -Keywords+='Joe' myImage.jpg ;