Open5
Google Photo TakeoutのEXIFデータ復旧

Google Takeoutで取り出したGoogle PhotosのデータにEXIFデータを書き戻したい。
- 元のデータで保存されているものは当然EXIFが残っているのでこれは触りたくない。
- 最近? TakeoutされたメタデータJSONには、
.supplemental-metadata
という文字列が付与されている。これに対応していないツールや手順が結構ある。 - 一部のSamsungデバイスは記録するEXIFが壊れているらしく、単純にメタデータつけようとするとexiftoolがエラーを出して処理してくれない。
- もともと位置情報がない場合? はJSONの中のgeoDataが全部0になっていて、これはEXIFに書き出したくない。

EXIFが壊れていてexiftoolがエラーになるときがある。以下のコマンドで壊れたEXIFを消すことができる。
exiftool -exif:all= "-all:all<exif:all" FILE

ファイルの種類
- 「元の画質のまま保存」されているもの : これはValidなEXIFを含む場合が多く、何もせず取り込んでいい
- EXIFが一部失われているもの : EXIFの日付データを戻したうえで取り込みたい

JPEGファイルにDateTimeOriginalがセットされているファイル名一覧。
exiftool --ext json -if '$Filetype eq "JPEG" and $exif:DateTimeOriginal and $exif:DateTimeOriginal ne "0000:00:00 00:00:00"' -json -r Takeout | jq -r '.[].SourceFile' > files.txt
それらを別のところに移動
rsync -a --files-from=files.txt --remove-source-files . Takeout2