« [DNS]キャッシュリセット | トップページ | 4:URL »

[AVAsset]オーディオファイルのファイル名にサンプルレートとデータレートを追加する

#!/usr/bin/env osascript

----+----1----+----2----+-----3----+----4----+----5----+----6----+----7

#

#

#

#

#                       com.cocolog-nifty.quicktimer.icefloe

----+----1----+----2----+-----3----+----4----+----5----+----6----+----7


use AppleScript version "2.8"

use framework "Foundation"

use framework "AVFoundation"

use scripting additions


property refMe : a reference to current application

property refNSString : a reference to refMe's NSString

property refNSURL : a reference to refMe's NSURL



property refAVAsset : a reference to refMe's AVAsset



set objFileManager to refMe's NSFileManager's defaultManager()


###################################

#####入力フォルダ

###################################

###ダイアログのデフォルト

set ocidUserDesktopPath to (objFileManager's URLsForDirectory:(refMe's NSDesktopDirectory) inDomains:(refMe's NSUserDomainMask))

set aliasDefaultLocation to ocidUserDesktopPath as alias

tell application "Finder"

##set aliasDefaultLocation to container of (path to me) as alias

end tell

###ダイアログテキスト

set strPromptText to "入力フォルダを選んでください"

try

set listResponse to (choose folder strPromptText with prompt strPromptText default location aliasDefaultLocation without multiple selections allowed, invisibles and showing package contents) as list

on error

log "エラーしました"

return

end try

###エリアス

set aliasDirPath to (item 1 of listResponse) as alias

###UNIXパス

set strDirPath to POSIX path of aliasDirPath as text

###String

set ocidDirPath to refNSString's stringWithString:strDirPath

###NSURL

set ocidDirPathURL to refNSURL's alloc()'s initFileURLWithPath:ocidDirPath isDirectory:true

###########################

###ディレクトリ内のファイルをURLリストに(下位まで)

###########################

set listSubPathArray to objFileManager's subpathsOfDirectoryAtPath:ocidDirPathURL |error|:(reference)

set ocidSubPathArray to item 1 of listSubPathArray


###########################

###本処理

###########################

##ファイルリストの数だけ繰り返し

repeat with itemSubPathArray in ocidSubPathArray

####選択したフォルダURLに取得したリストを追加してURL

set ocidFilePathURL to (ocidDirPathURL's URLByAppendingPathComponent:itemSubPathArray)

####ファイル名取得

set ocidFileName to ocidFilePathURL's lastPathComponent

set strFileName to ocidFileName as text

####拡張子を取ったベースファイル名

set ocidBaseFileName to ocidFileName's stringByDeletingPathExtension

set strBaseFileName to ocidBaseFileName as text

####拡張子取得

set ocidFileExtension to ocidFilePathURL's pathExtension

set strFileExtension to ocidFileExtension as text

if strFileExtension is "mp3" then

####URLのファイル名を取ってコンテナディレクトリに

set ocidContainerDirPathURL to ocidFilePathURL's URLByDeletingLastPathComponent

#####サブを実行

set listRate to doGetDataAndSampleRate(ocidFilePathURL)

###置き換えファイル名の定義

set strAddFileName to ("." & (item 1 of listRate) & "x" & (item 2 of listRate) & ".") as text

####新しいファイル名

set strNewFileName to strBaseFileName & strAddFileName & strFileExtension as text

####コンテナディレクトリに新しいファイル名でリネーム用のURL

set ocidNewFilePathURL to (ocidContainerDirPathURL's URLByAppendingPathComponent:strNewFileName)

####リネームする

set listResult to (objFileManager's moveItemAtURL:ocidFilePathURL toURL:ocidNewFilePathURL |error|:(reference))

else if strFileExtension is "m4a" then

####URLのファイル名を取ってコンテナディレクトリに

set ocidContainerDirPathURL to ocidFilePathURL's URLByDeletingLastPathComponent

#####サブを実行

set listRate to doGetDataAndSampleRate(ocidFilePathURL)

###置き換えファイル名の定義

set strAddFileName to ("." & (item 1 of listRate) & "x" & (item 2 of listRate) & ".") as text

####新しいファイル名

set strNewFileName to strBaseFileName & strAddFileName & strFileExtension as text

####コンテナディレクトリに新しいファイル名でリネーム用のURL

set ocidNewFilePathURL to (ocidContainerDirPathURL's URLByAppendingPathComponent:strNewFileName)

####リネームする

set listResult to (objFileManager's moveItemAtURL:ocidFilePathURL toURL:ocidNewFilePathURL |error|:(reference))

end if

end repeat



###########################################

### データレート と サンプルレートを読み取るサブ

###########################################

to doGetDataAndSampleRate(argURL)

####URLAVAsset読み込み

set ocidReadAsset to (refAVAsset's assetWithURL:argURL)

###トラック読み込み

set ocidReadAssetTrackArray to ocidReadAsset's tracks()

###オーディオトラック読み込み

set ocidTrack to (ocidReadAssetTrackArray's objectAtIndex:0)

###サンプルレート

set numSampleRate to ocidTrack's naturalTimeScale() as integer

set strSampleRate to (round (numSampleRate / 100)) as text

###データレート

set ocidDataRate to ocidTrack's estimatedDataRate() as integer

set numDataRate to ocidDataRate as integer

set strDataRate to (round (numDataRate / 1000)) as text

####値を戻す

return {strDataRate, strSampleRate}

end doGetDataAndSampleRate

|

« [DNS]キャッシュリセット | トップページ | 4:URL »

AppleScript Music」カテゴリの記事