Как объединить фотографии на вынос в формате JSON и Google, чтобы вернуть правильные даты?

#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 и применять их к фотографиям и видео:

Однако эти сценарии имеют ограничения в отношении часовых поясов и некоторых изображений с именем, которое немного отличается от имени файла 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 /

Эта программа будет

  1. Извлеките и объедините свой экспорт фотографий Google из Google Takeout.
  2. Организуйте свои фотографии в папки по годам и месяцам.
  3. При необходимости переименуйте свои фотографии в год, месяц, день, час: минута: второе число. соглашение об именовании расширений
  4. Исправьте все даты создания и изменения файлов по мере их упорядочивания.
  5. При необходимости скопируйте все доступные метаданные, предоставленные Google Takeout в файлах .json, обратно в файлы изображений / видео.
  6. Напоминаю вам о необходимости очистки после обработки.