Записать IPTC «byline» для всех изображений в папке с помощью Exiftool - Фотопедия
0 голосов
/ 23 апреля 2016

Я новичок в Exiftool и имею некоторый опыт работы с Mac Terminal. Я пытаюсь добавить метаданные IPTC «BY-line» ко всем изображениям в папке. Это то, что я до сих пор: exiftool -iptc:By-line='mybyline' /Users/username/Desktop/foldername. Однако это оставляет переименованный исходный файл изображения. Как удалить исходный файл во время этого процесса?

Я также подумал, что было бы здорово, если бы я смог зафиксировать имя папки, в которой находятся изображения, и добавить это имя в «подпись» IPTC. Пример: imagesfolder / {images}, затем заставьте exiftool прочитать имя папки с изображением (в данном случае 'imagesfolder') и добавить это в 'byline' IPTC exiftool -iptc: By-line = 'imagesfolder' / Пользователи / имя пользователя / Рабочий стол / imagesfolder

Как мне это сделать?

И, наконец, я не уверен, может ли Exiftool сделать это или нет, но я бы хотел, чтобы все это выполнялось для всех новых изображений, добавляемых в папку. Другими словами, когда я добавляю изображение в эту папку, Exiftool найдет имя папки и автоматически добавит IPTC 'By-line'.

Спасибо за любую помощь, которую вы можете предоставить.

Ответы [ 2 ]

3 голосов
/ 23 апреля 2016

Повторение моего ответа на форумах Exiftool для пользователей StackExchange.

Добавьте -overwrite_original , чтобы избежать создания резервных копий, или используйте -delete_original , чтобы удалить их, если вы уверены, что они вам больше не нужны

Чтобы добавить имя папки, вы можете использовать расширенное форматирование в этом сообщении на форуме Exiftool

Собрав все вместе, ваша команда может выглядеть примерно так:
exiftool -overwrite_original -iptc:By-line='mybyline ${directory;my @a=split m(/);$_=$a[-1]}' DIR

И у @scottbb есть ответ относительно автоматизации.

2 голосов
/ 23 апреля 2016

это оставляет переименованный исходный файл изображения. Как удалить исходный файл во время этого процесса?

Используйте либо -overwrite_original, либо overwrite_original_in_place, чтобы exiftool. Опция на месте сохраняет информацию о файловой системе, такую ​​как время создания файла, время доступа, теги Finder, значок и т. Д., Но занимает немного больше времени, чем другая опция.

Я бы хотел, чтобы все это выполнялось для всех новых изображений, добавляемых в папку.

Для этого вам необходимо использовать функцию Mac OS, которая называется «Действия с папкой». Действие папки запускается, когда происходят изменения в папке, к которой прикреплено действие. Действия папки могут быть написаны в AppleScript, но ваш случай достаточно прост, чтобы Automator подходил для создания действия. Чтобы получить подробное описание, прочитайте статью блога Ask Different Учебное пособие по действиям с папками: автоматизация, знакомство с файловой системой .

  1. Запуск Automator. Выберите тип Folder Action для своего документа.

  2. Вам будет предоставлен пустой рабочий процесс с возможностью в верхней панели выбрать папку, к которой должно быть привязано это действие. Нажмите на это всплывающее меню и выберите Other..., чтобы выбрать папку, в которой будут находиться изображения, к которым вы хотите применить свой тег IPTC.

  3. Сохраните действие Automator, назвав его чем-нибудь полезным (например, Apply IPTC By-line).

  4. Следующие шаги рабочего процесса гораздо менее сложны, чем шаги статьи AskDifferent. Вам нужно всего 2 шага рабочего процесса: один для фильтрации рабочего процесса, чтобы только файлы изображений передавались в exiftool; и шаг сценария оболочки, который запускается exiftool, как если бы вы запускали его в командной строке.

    Элементы фильтра поиска : В Библиотека действий> Файлы и папки перетащите действие Элементы поиска фильтра в рабочий процесс.

    Выполнить сценарий оболочки : в разделе Библиотека действий> Утилиты перетащите действие Выполнить сценарий оболочки в рабочий процесс под действием «Фильтровать элементы поиска».

  5. Вставьте следующее в текстовый блок Run Shell Script:

    export EXIFTOOL=/usr/local/bin/exiftool
    for f in "$@"
    do
        $EXIFTOOL -iptc:By-line="mybyline" -overwrite_original_in_place "$f"
    done
    

    Рабочий процесс должен выглядеть следующим образом:

    exiftool Automator Folder Action

    Примечание , особенно это Пропуск ввода: - as arguments (очень важно).

  6. Обратите внимание на первую строку (export EXIFTOOL=...). Хотя местоположение exiftool, скорее всего, находится в $PATH вашего пользователя (например, возможно, вы использовали Homebrew для установки Exiftool), системная переменная $PATH, используемая Automator, скорее всего, не будет знать, где найти exiftool исполняемый файл. Чтобы убедиться, что рабочий процесс Automator работает правильно, откройте Terminal , как обычно, и введите команду: which exiftool. Возвращаемый путь должен быть вставлен справа от export EXIFTOOL= в первой строке текстового блока Run Shell Script. ** Важно *: убедитесь, что между символом = и указанным вами путем нет пробела. Пробел сломает скрипт.

  7. Сохраните действие папки Automator.

Проверьте это, скопировав файл изображения в папку с прикрепленным действием. Я подчеркнул «копирование», потому что это действие изменит то, что вы размещаете там. Если что-то сломано, вы не хотите повредить единственную копию файла, который вы используете.

Я также подумал, что было бы здорово, если бы я смог зафиксировать имя папки, в которой находятся изображения, и добавить это имя в «подпись» IPTC.

Это самая легкая часть. Просто измените текст Run Shell Script на следующий:

export EXIFTOOL=/usr/local/bin/exiftool
for f in "$@"
do
    dir="$(basename "$(dirname ${f})")"
    $EXIFTOOL -iptc:By-line="${dir}" -overwrite_original_in_place "$f"
done

Так же, как и оригинальный сценарий оболочки, он запускает exiftool для каждого файла, на котором выполняется действие папки. Однако в этом случае перед запуском exiftool для каждого файла мы сохраняем имя каталога файла в переменной dir:

  • $(dirname "${f}") получает путь к имени файла без самого имени файла (то есть dirname из /Users/me/Pictures/TagIPTC/img_2112.jpg будет /Users/me/Pictures/TagIPTC.
  • dir="$(basename "...")" получает последнюю часть пути, пройденного к нему. Таким образом, basename /Users/me/Pictures/TagIPTC просто даст TagIPTC.

Затем, когда мы запускаем exiftool, мы заменяем dir именем папки, содержащим каждый файл изображения; то есть папка с прикрепленным к ней действием папки.

Примечание

Если вы перетащите папку, содержащую файлы изображений, это действие не будет работать.

Добро пожаловать на сайт Фотопедия, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...