Замена дат набора на самый ранний день с помощью exiftool - Фотопедия
1 голос
/ 04 декабря 2017

Я ищу способ использовать exiftool для извлечения даты создания из картинок в каталоге и на случай, если они различаются, использовать самую раннюю дату. Заявка на участие - концерт, который продлится с 04.12.2017: 20: 00 до 05.12.2017: 00: 20. Мое агентство хочет, чтобы на всех фотографиях из набора была печать одного дня. Так и надо сказать 04.12.2017 на всех картинках. Я полагаю, что для этого есть специальная строчка. Есть ли?

Редактировать: Как предлагается в комментариях, это должно быть сделано с помощью сценария. Это сценарий оболочки, который у меня есть.

#!/bin/tcsh -f


# remove Umlaute

exiftool -L -api "Filter=s/ä/ae/g" -TagsFromFile @ -all:all .
exiftool -L -api "Filter=s/ö/oe/g" -TagsFromFile @ -all:all .
exiftool -L -api "Filter=s/ü/ue/g" -TagsFromFile @ -all:all .


exiftool -L -api "Filter=s/Ä/Ae/g" -TagsFromFile @ -all:all .
exiftool -L -api "Filter=s/Ö/Oe/g" -TagsFromFile @ -all:all .
exiftool -L -api "Filter=s/Ü/Ue/g" -TagsFromFile @ -all:all .
exiftool -L -api "Filter=s/ß/ss/g" -TagsFromFile @ -all:all .

# extend caption by ", ":

exiftool '-caption-abstract<${caption-abstract}, ' .


#set date to earliest date in the set
exiftool -T -DateCreated .


# clean up
rm *.jpg_original

Редактировать 2:

Это решение:

#!/bin/tcsh -f


# remove all Umlaute
exiftool -L -overwrite_original -api "Filter=s/ä/ae/g;s/ö/oe/g;s/ü/ue/g;s/Ä/Ae/g;s/Ö/Oe/g;s/Ü/Ue/g;s/ß/ss/g" -TagsFromFile @ -all:all .


# add ", " to the caption:

exiftool '-caption-abstract<${caption-abstract}, ' .

# set all dates to the earliest date
set earliest_date="`exiftool -DateCreated -fileorder DateCreated -q -s3 . | head -1`"
set latest_date="`exiftool -DateCreated -fileorder DateCreated -q -s3 . | tail -1`"

if ( "$earliest_date" == "$latest_date" ) then
   echo "checked date"
else
   echo "earliest date is $earliest_date and latest date is $latest_date"
   echo "setting DateCreated to $earliest_date and TimeCreated to unknown"
   exiftool -DateCreated=$earliest_date .
   exiftool -TimeCreated="00:00:00" .
endif

1 Ответ

1 голос
/ 08 декабря 2017

Это решение. Он также содержит улучшения оригинального сценария.

#!/bin/tcsh -f


# remove all Umlaute
exiftool -L -overwrite_original -api "Filter=s/ä/ae/g;s/ö/oe/g;s/ü/ue/g;s/Ä/Ae/g;s/Ö/Oe/g;s/Ü/Ue/g;s/ß/ss/g" -TagsFromFile @ -all:all .


# add ", " to the caption:

exiftool '-caption-abstract<${caption-abstract}, ' .

# set all dates to the earliest date
set earliest_date="`exiftool -DateCreated -fileorder DateCreated -q -s3 . | head -1`"
set latest_date="`exiftool -DateCreated -fileorder DateCreated -q -s3 . | tail -1`"

if ( "$earliest_date" == "$latest_date" ) then
   echo "checked date"
else
   echo "earliest date is $earliest_date and latest date is $latest_date"
   echo "setting DateCreated to $earliest_date and TimeCreated to unknown"
   exiftool -DateCreated=$earliest_date .
   exiftool -TimeCreated="00:00:00" .
endif
...