GoProで撮った動画ファイル、長時間だと分割されるのですが、ファイル名の付け方がちょっと独特なので、後で確認するときにすごく不便です。
具体的には、【GoPro】わかりづらい動画ファイル名問題をスッキリ解決してくれる神スクリプト! – たかねこのひとり放浪記 のページに分かりやすくまとめられているので、ご覧になってください。
で、これを解決してくれるスクリプトが最後に紹介されていたので、GoPro動画の連番をリネームするVBScript | 神山オンラインのページ行ってみたところ、残念ながらWindowsのものでした。
そこで、これを参考にしてMacで使うために、Automatorでクイックアクションを作ってみました。
環境
macOS Monterey 12.2.1
Mac mini (M1, 2020)
GoPro HERO10 Blackで撮影した動画ファイル。拡張子はMP4
Automator.appを起動したら、クイックアクションを選んで、「選択」ボタンをクリック
ワークフローが受け取る現在の項目:ファイルまたはフォルダ
検索対象:Finder.app
イメージ:アクション
左のライブラリから、「ファイルとフォルダ」»「選択されたFinder項目を取得」を右ウインドウにドラッグ&ドロップ。オプションの「このアクションの入力を無視」にチェックを入れる。
左のライブラリから、「ユーティリティ」»「Apple Scriptを実行」を右ウインドウにドラッグ&ドロップ。
以下のスクリプトをコピー&ペーストしてください。
正規表現の処理部分は、Cocoaの機能を使って正規表現で文字列を抽出するAppleScriptハンドラ – Qiitaのページのものを使わせていただきました。大変助かりました。ありがとうございます。
なお、GoProの動画ファイルは「.MP4」で作成しているので、判定で決め打ちしています。
他の拡張子の場合は、(item 5 of matchResultList = “.MP4“)の部分を変更してください。
use scripting additions
use framework "Foundation"
on run {input, parameters}
repeat with fileItem in input
--ファイル名を取得
tell application "Finder"
set oldFileName to name of fileItem as string
end tell
--正規表現を使って分割
set matchResultList to regexMatches(oldFileName, "(G.)(\\d{2})(\\d{4})(.+)")
if (length of matchResultList = 5) and (item 5 of matchResultList = ".MP4") then
--正規表現の結果が5で、拡張子部分が.MP4の時のみ処理を続ける
set newFileName to item 2 of matchResultList & item 4 of matchResultList & "-" & item 3 of matchResultList & item 5 of matchResultList
--リネームする
tell application "Finder"
try
set (name of fileItem) to (newFileName as string)
on error
display dialog "error"
end try
end tell
end if
end repeat
return input
end run
to regexMatches(aText as text, pattern as text)
set regularExpression to current application's NSRegularExpression's regularExpressionWithPattern:pattern options:0 |error|:(missing value)
set aString to current application's NSString's stringWithString:aText
set matches to regularExpression's matchesInString:aString options:0 range:{location:0, |length|:aString's |length|()}
repeat with match in matches
set matchResult to {}
repeat with i from 0 to (match's numberOfRanges as integer) - 1
set end of matchResult to (aString's substringWithRange:(match's rangeAtIndex:i)) as text
end repeat
end repeat
return matchResult
end regexMatches
ペーストしたら、コンパイルボタンをクリックして、コンパイルしてください。
問題なくコンパイルが完了したら、「ファイル」メニューより「保存…」を選択して、「クイックアクションの名前」を入力して保存してください。(例では「GoPro動画ファイルリネーム」としました。)
クイックアクションの実行は、リネームするファイルを選択して、右クリック。「クイックアクション」»「GoPro動画ファイルリネーム」で実行されます。
実行結果。撮影順に並びました。
なお、作成したクイックアクションファイルの格納場所は「~/ライブラリ/Services」内になります。
コメント