分享一下Google相簿takeout之後利用json檔修正檔案時間的方法
摸索了一整天總算是把照片日期排序的問題搞定了
google相簿的Exif基本上都是正確的
主要是他takeout後給的檔案系統時間不對
造成沒有Exif的檔案在NAS的相簿日期排序錯誤
這邊我不打算寫回Exif,因為那必需修改檔案內容
而且有些影片格式可能也不會有exif資訊
所以直接處理檔案系統的日期就好
使用的工具為ExifTool,他可以正確讀取google json檔資料
另外還有許多操作指令
只靠這一隻程式就能把全部搞定
另外還有許多操作指令
只靠這一隻程式就能把全部搞定
處理分為三個步驟:
1. 修正json檔名
google的json檔案命名規則不一致
有的是DSC00041.JPG(2).json,而有的是DSC00041(2).JPG.json
先把他統一為DSC00041(2).JPG.json的格式
指令:
exiftool -r -ext json -if “$Filename=~/(\.[^.]+)(\(\d+\)).json$$/i” “-Filename<${Filename;s/(\.[^.]+)(\(\d+\)).json$/$2$1.json/}” [相簿目錄]
2. 修改json檔案時間
Google json裏的時間戳記其中一個用了中文,exiftool無法辨認
而另一個是timestamp,exiftool沒法對他進行加減計算
所以我們先這個戳記寫入到json檔本身的系統時間
指令:
exiftool -progress -d %s “-FileCreateDate<PhotoTakenTimeTimestamp” “-FileModifyDate<PhotoTakenTimeTimestamp” -overwrite_original -r -ext json [相簿路徑]
3. 修改照片/影片時間 + 修正時區問題
接下來讀取剛寫好的json檔系統時間,把他+8(台灣時區)寫入檔名相對應的照片
這樣做可確保缺json的照片不會每執行一次就一直被+8
指令:
exiftool -progress -tagsfromfile “%d/%F.json” “-FileCreateDate<FileCreateDate” “-FileModifyDate<FileModifyDate” -globaltimeshift 8 -r -overwrite_original -ext “*” –ext json [相簿路徑]
這樣大概99%的檔案就都能修好了
剩下1%又是Google搞怪,有些比較長的檔名會被他截掉導致和json名稱對應不上
通常是手機的螢幕截圖才會有這麼長的檔名,一般照片不會
這數量不多可以手動處理就好
注意1:Linux/Mac使用者請把以上指令裏面的雙引號全部換成單引號,Windows環境則必需使用雙引號才能正常執行
注意2:若照片已上傳NAS,建議先把照片移動到別的目錄,改好再擺回去,NAS就會重新索引。直接修改雖然NAS也會自動重建索引,但比較容易出現問題。
--
現在還在寫blog分享資訊的人越來越少,如果覺得文章對您有幫助,歡迎在底下留言,這樣我也比較有動力繼續寫下去,謝啦!