指定フォルダ内のすべてのJPEGファイルのEXIF情報から撮影日付を取得し、画像ファイルの作成日付に反映させるAppleScriptです。
写真.app(Photos.app)内で管理している大量の写真ファイルをいったんファイルに書き出して、DVD-Rにコピーして人に渡すときに、写真の作成日付が撮影日になっておらず、Finderなどのファイラー上で整理するのが大変でした。
ファイル書き出しなので仕方のないことですが、この仕様はいただけません。
かようにファイル作成日付が正しくない写真でも、EXIFに正しい撮影日付が保存されているケースが多い(ただし、完全にすべてではない)ため、EXIFの日付をAppleScriptで読み取ってファイル作成日付に反映させてみました。
写真.appなどのアプリケーションにインポートしてしまえばEXIF日付でソートされるので、あまり意味があるとも思えませんが、Finder上での写真整理のために実行してとりあえず走らせてみました。
AppleScript名:EXIFから撮影日付を取得してファイルの作成日付に反映させる v2 |
— Created 2018-05-30 by Takaaki Naganoya — 2018 Piyomaru Software use AppleScript version "2.5" use scripting additions use framework "Foundation" use framework "AppKit" script spd property fList : {} end script set renCount to 0 set (fList of spd) to {} set aFolder to (choose folder) set aDate to current date set (fList of spd) to getFilePathList(aFolder, "JPG") of me repeat with i in (fList of spd) set j to contents of i chkCreationDateAsExif(j) of me set renCount to renCount + 1 end repeat set bDate to current date return {bDate – aDate, renCount} on chkCreationDateAsExif(aFile) tell application "Image Events" launch set this_image to open (aFile as alias) try tell this_image set aVal to (value of metadata tag "creation") end tell on error return end try close this_image end tell set a to current application’s NSString’s stringWithString:aVal set {aDateStr, aTimeStr} to (a’s componentsSeparatedByString:" ") as list set bDateStr to repChar(aDateStr, ":", "/") of me set fullDate to date (bDateStr & " " & aTimeStr) set aDic to current application’s NSMutableDictionary’s dictionaryWithObject:fullDate forKey:(current application’s NSFileModificationDate) set aFM to current application’s NSFileManager’s defaultManager()’s setAttributes:aDic ofItemAtPath:(POSIX path of aFile) |error|:(missing value) end chkCreationDateAsExif –文字置換 on repChar(origText as string, targChar as string, repChar as string) set curDelim to AppleScript’s text item delimiters set AppleScript’s text item delimiters to targChar set tmpList to text items of origText set AppleScript’s text item delimiters to repChar set retText to tmpList as string set AppleScript’s text item delimiters to curDelim return retText end repChar on getFilePathList(aFol, aExt) set aFol to current application’s |NSURL|’s fileURLWithPath:(POSIX path of aFol) set aFM to current application’s NSFileManager’s defaultManager() set urlArray to aFM’s contentsOfDirectoryAtURL:aFol includingPropertiesForKeys:{} options:(current application’s NSDirectoryEnumerationSkipsHiddenFiles) |error|:(missing value) set thePred to current application’s NSPredicate’s predicateWithFormat:"pathExtension == [c]%@" argumentArray:{aExt} set anArray to urlArray’s filteredArrayUsingPredicate:thePred return anArray as list — URLs pre-10.11, files under 10.11 end getFilePathList |
More from my site
(Visited 60 times, 1 visits today)