MacFeeling Blog

マックな感じ …

GoProのファイル名を撮影順にリネームする(ショートカット編)

公開 : | 0件のコメント

GoProで撮った動画ファイル、長時間だと分割されるのですが、ファイル名の付け方がちょっと独特なので、後で確認するときにすごく不便です。
前回、GoProのファイル名を撮影順にリネームする(クイックアクション編) | MacFeeling Blogにて Automatorを使ってクイックアクションを作ってみました。
今回はこれをショートカットを使ったものに変換してみました。

環境
macOS Monterey 12.2.1
Mac mini (M1, 2020)
GoPro HERO10 Blackで撮影した動画ファイル。拡張子はMP4

ショートカット.appを起動したら、右上の「+」ボタンをクリック、または「ファイル」メニューより「新規ショートカット」を選択

Appダブにて、「Finder」»「Finderで選択されたファイルを取得」を、左のウインドウにドラッグ&ドロップ

Appダブにて、「スクリプトエディタ」»「AppleScriptを実行」を、左のウインドウにドラッグ&ドロップ

以下のスクリプトをコピー&ペーストしてください。
正規表現の処理部分は、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動画ファイルリネーム」としました。)

右上の「ショートカットの詳細」ボタンをクリックして、「詳細」タブにで「クイックアクションとして使用」及び「Finder」にチェックを入れてください。
また、必要に応じて、サービスメニューからショートカットを実行する場合は、「サービスメニュー」にもチェックを入れてください。

念の為、「プライバシー」タブにて、全てにチェックが入っているのを確認してください。

クイックアクションの実行は、リネームするファイルを選択して、右クリック。「クイックアクション」»「GoPro動画ファイルリネーム」で実行されます。(画像では2つありますが、上のは前回Automatorで作成したものになります)

実行結果。撮影順に並びました。

コメントを残す

必須欄は * がついています




日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)