#exiftool
#exiftool
Вопрос:
Я только что получил тысячи фотографий из Google takeout, но, похоже, я не могу импортировать их в другое место в правильном хронологическом порядке. Я также нашел несколько руководств по использованию exiftool, но я не могу правильно определить разные часовые пояса? Есть идеи, как получить время с правильным часовым поясом? Часовой пояс также отсутствует в JSON.
Ответ №1:
Я сделал что-то подобное для своего NAS-устройства QNAP. Использует простое извлечение текста и затрагивает файлы с самой старой датой, найденной в файле .json.
РЕДАКТИРОВАТЬ: просто настройте заклинание касания, чтобы оно соответствовало вашему формату времени.
find . -name '*.json' | while read filename; do
imgfile="$(echo "${filename}" | sed 's/.json$//')" ;
ts="$(cat "${filename}" | grep timestamp | awk -F'"' '{ print $4}' | sort | head -n 1)" ;
ts="$(date -d "@${ts}" "%Y-%m-%d %T")" ;
if [ -f "${imgfile}" ];then
echo Touching ${imgfile} ${ts}
touch -t "${ts}" "${imgfile}"
fi
done
Как указано в комментариях, в некоторых версиях Linux touch ожидает формат [[CC] YY] MMDDhhmm [.ss], поэтому замените строку даты на:
ts="$(date -d "@${ts}" "%Y%m%d%H%M.%S")"
Комментарии:
1. проверьте свой формат даты. Я использую языковой стандарт PL, вам может потребоваться исправить строку с датой.
2. В моей системе Fedora 34 touch требуется формат [[CC] YY] MMDDhhmm [.ss], поэтому я заменил строку даты на: ts=»$ (date -d «@$ {ts}» «% Y% m% d% H% M»)»; (Меня не волнуют секунды). И тогда это сработало отлично. Большое спасибо!!
Ответ №2:
В настоящее время доступно множество сценариев и инструментов, которые могут извлекать метаданные из файлов JSON и применять их к фотографиям и видео:
- https://github.com/mattwilson1024/google-photos-exif
- ExifTool (здесь есть руководство)
Однако эти сценарии имеют ограничения в отношении часовых поясов и некоторых изображений с именем, которое немного отличается от имени файла JSON, например PHOTO_NAME(1).jpg
, их путают с PHOTO_NAME.jpg(1).json
. Теги QuickTime и PNG также не обновляются.
Если вас устраивают эти ограничения,
- Установите ExifTool
- Замените каталог на process и запустите команду
exiftool -r -d %s -tagsfromfile "%d/%F.json" "-GPSAltitude<GeoDataAltitude" "-GPSLatitude<GeoDataLatitude" "-GPSLatitudeRef<GeoDataLatitude" "-GPSLongitude<GeoDataLongitude" "-GPSLongitudeRef<GeoDataLongitude" "-Keywords<Tags" "-Subject<Tags" "-Caption-Abstract<Description" "-ImageDescription<Description" "-DateTimeOriginal<PhotoTakenTimeTimestamp" -ext "*" -overwrite_original -progress --ext json <DirToProcess>
В противном случае рассмотрите возможность использования платного автоматического инструмента, такого как https://metadatafixer.com /
Комментарии:
1. Это потрясающе! Автоматизированный инструмент отлично справился с задачей, поскольку я не мог определить часовые пояса с помощью Exiftool. Спасибо!
Ответ №3:
Вот проверенный и очень полезный бесплатный инструмент для объединения метаданных (.JSON) и фотографий. https://alamantus.github.io/GooglePhotosExportOrganizer /
Эта программа будет
- Извлеките и объедините свой экспорт фотографий Google из Google Takeout.
- Организуйте свои фотографии в папки по годам и месяцам.
- При необходимости переименуйте свои фотографии в год, месяц, день, час: минута: второе число. соглашение об именовании расширений
- Исправьте все даты создания и изменения файлов по мере их упорядочивания.
- При необходимости скопируйте все доступные метаданные, предоставленные Google Takeout в файлах .json, обратно в файлы изображений / видео.
- Напоминаю вам о необходимости очистки после обработки.