hack のためのネタ帳, etc,,,

経緯

スキャナでスキャンしたプリント類を Google Photos に放り込んで共有してるんだが、
タイムスタンプの情報がないせいか、ファイル名には連番が振ってあるにも関わらず、登録後の並びが順番に並んでくれない。

秒未満を EXIF に埋め込めないかと、exif (1) コマンドでタグ一覧を調べてみるとこんな感じだった。
$ LANG=C exif -cl|grep -iE "^EXIF Tag|date|time|offset|zone"
EXIF tags in '(EXIF)':                         0      1    EXIF    GPS  Interop
0x0007 GPS Time (Atomic Clock)                 -      -      -      -      -   
0x001d GPS Date                                -      -      -      -      -   
0x0111 Strip Offsets                           -      -      -      -      -   
0x0132 Date and Time                           *      -      -      -      -   
0x014a SubIFD Offsets                          -      -      -      -      -   
0x829a Exposure Time                           -      -      -      -      -   
0x882a Time Zone Offset                        -      -      -      -      -   
0x9003 Date and Time (Original)                -      -      -      -      -   
0x9004 Date and Time (Digitized)               -      -      -      -      -   
0x9290 Sub-second Time                         -      -      -      -      -   
0x9291 Sub-second Time (Original)              -      -      -      -      -   
0x9292 Sub-second Time (Digitized)             -      -      -      -      -   
以下のページによると "Sub-Second Time" に秒未満を小数点以下2桁ほど保持してるっぽい。
うちの手持ちのカメラの EXIF を exiftool で確認してみたが、残念ながらこのタグは見当たらない。

Canon PowerShot SX130IS
$ exiftool /tmp/DCIM/IMG_5400.JPG |grep -iE "date|time|zone|offset"
File Modification Date/Time     : 2015:12:16 16:00:28+09:00
File Access Date/Time           : 2019:06:25 15:09:31+09:00
File Inode Change Date/Time     : 2019:06:25 15:09:21+09:00
Modify Date                     : 2015:12:16 16:00:29
Exposure Time                   : 1/30
Date/Time Original              : 2015:12:16 16:00:29
Create Date                     : 2015:12:16 16:00:29
Self Timer                      : Off
Target Exposure Time            : 1/30
Self Timer 2                    : 0
Date Stamp Mode                 : Off
VRD Offset                      : 0
Thumbnail Offset                : 5120
Fujifilm XQ1
$ exiftool /tmp/DCIM/DSCF3940.JPG |grep -iE "date|time|zone|offset"
File Modification Date/Time     : 2019:05:05 08:48:26+09:00
File Access Date/Time           : 2019:06:25 15:05:31+09:00
File Inode Change Date/Time     : 2019:06:25 15:05:21+09:00
Modify Date                     : 2019:05:05 08:48:26
Exposure Time                   : 1/160
Date/Time Original              : 2019:05:05 08:48:26
Create Date                     : 2019:05:05 08:48:26
Thumbnail Offset                : 1872
秒未満が付いてないのも問題だが、
"Time Zone Offset" タグも付いておらず、タイムゾーン情報のないローカルタイムが直に埋め込まれている模様。 辺りを見ると、"Time Zone Offset" はほとんど使われてないみたいな雰囲気。

本題から外れてしまったが、とりあえず、
for i in *.jpg; do
  t="$(date -r "$i" "+%Y-%m-%d %H:%M:%S.%N%z")"
  z="$(date -r "$i" "+%z")"
  exiftool -P "-datetimeoriginal=$t" "-subsectimeoriginal=$t" "-timezoneoffset=$z" "$i"
  touch -d "$t" "$i"
done
みたいな感じで mtime から DateTimeOrigial と SubSecTimeOriginal と TimeZoneOffset に値を設定してみた。
結果は以下のような感じ。
$ # Before
$ exiftool *-01.jpg|grep -iE "date|time|zone|offset"
File Modification Date/Time     : 2019:06:25 14:27:39+09:00
File Access Date/Time           : 2019:06:25 14:27:39+09:00
File Inode Change Date/Time     : 2019:06:25 14:27:39+09:00
$ # After
$ exiftool *-01.jpg|grep -iE "date|time|zone|offset"
File Modification Date/Time     : 2019:06:25 14:27:39+09:00
File Access Date/Time           : 2019:06:25 14:27:39+09:00
File Inode Change Date/Time     : 2019:06:27 01:30:49+09:00
Time Zone Offset                : 900
Date/Time Original              : 2019:06:25 14:27:39
Sub Sec Time Original           : 689882895
Date/Time Original              : 2019:06:25 14:27:39.689882895
しかし、目的であった Google Photos は相変わらず並び順が揃わない。
SebSecTimeOriginal を2桁にもしてみたが、やはり揃わない。
$ exiftool *-01.jpg|grep -iE "date|time|zone|offset"
File Modification Date/Time     : 2019:06:25 14:27:39+09:00
File Access Date/Time           : 2019:06:25 14:27:39+09:00
File Inode Change Date/Time     : 2019:06:27 01:50:47+09:00
Time Zone Offset                : 900
Date/Time Original              : 2019:06:25 14:27:39
Sub Sec Time Original           : 68
Date/Time Original              : 2019:06:25 14:27:39.68
これは手詰まりかな?

あと、exifool は -P (-preserve) オプション付けると "FileModifyDate" と言うか、mtime 維持するみたいなこと書いてあるけど、秒以下が 0 になってしまうので、あらかじめ保存しておいたタイムスタンプを touch などで書き戻さないときちんと preserve 出来なかった。
意外とダメな子だなぁ。

関連

タグ

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

Wiki内検索

フリーエリア

管理人/副管理人のみ編集できます