VBScriptを使ってiTunesでMP3エンコード
VBScriptを使ってMP3へエンコード出来ないかなぁ〜と思ってて、
結果iTunesのライブラリを使用することで出来ました。
本当はGUIではなく、裏側で動作するものが良かったんですが。。
まぁ、個人的にはDAWから直接MP3で書き出すことは少なく、
必要に応じてiTunesなどでMP3にエンコードすることが多いので、
そういう方には便利だと思います。
でも裏側処理出来るライブラリがあったら、教えて下さい(笑)
'MP3ConvOniTunes.vbs Option Explicit Const SCRIPT_NAME = "MP3コンバーター" Dim objArgs, objIT, cv, fs Dim snd_data_path(), def_enc_name, cvdFolder, it_fpath, it_fname Dim i, cnt Set fs = CreateObject("Scripting.FileSystemObject") Set objArgs = WScript.Arguments If objArgs.Count = 0 Then WScript.Quit 'もし選択ファイルに対象ファイルが無い場合iTunesが起動しても面倒(重い)なので、 '一旦ここでループ、パスを格納 ReDim snd_data_path(0) For i = 0 To objArgs.Count - 1 Select Case UCase(fs.GetExtensionName(objArgs(i))) Case "WAV", "AIFF" ReDim Preserve snd_data_path(cnt) snd_data_path(cnt) = objArgs(i) cnt = cnt + 1 End Select Next If cnt = 0 Then WScript.Quit cvdFolder = fs.GetParentFolderName(snd_data_path(0)) & "\Converted\" If fs.FolderExists(cvdFolder) = False Then fs.CreateFolder cvdFolder Set objIT = CreateObject("iTunes.Application") 'メインウィンドウはVisibleで隠せないっぽいので代わりに最小化 objIT.Windows.Item(1).Minimized = True '現在設定されてるエンコーダの名前を控えとく def_enc_name = objIT.CurrentEncoder.Name 'エンコーダをMP3に変更 '(1=AAC, 2=AIFF, 3=Apple ロスレス, 4=MP3, 5=WAV) objIT.CurrentEncoder = objIT.Encoders.Item(4) 'コンバートとファイル移動 For i = LBound(snd_data_path) To UBound(snd_data_path) Set cv = objIT.ConvertFile(snd_data_path(i)) Do While cv.InProgress: Loop it_fpath = cv.Tracks.Item(1).Location it_fname = fs.getFileName(it_fpath) If fs.FileExists(cvdFolder & it_fname) Then fs.CopyFile it_fpath, cvdFolder, True fs.DeleteFile it_fpath, True Else fs.MoveFile it_fpath, cvdFolder End If cv.Tracks.Item(1).Delete Set cv = Nothing Next 'エンコーダを元に戻す objIT.CurrentEncoder = objIT.Encoders.ItemByName(def_enc_name) objIT.Quit Set objIT = Nothing Set fs = Nothing MsgBox "完了しましたノ´Д`)ノ", , SCRIPT_NAME
使い方
WAVファイルをドラッグすることでコンバート出来ます。複数選択可。
例によって、右クリックの「送る」が便利かと思います。
WAVファイルが格納されてるフォルダに「Converted」フォルダが作成され、
そのフォルダ内にMP3ファイルが出来ます。
既にファイルがある場合は上書きします。
コンバート系関数
iTunesのライブラリはネットの情報もあまり多くないし、
少ない資料とオブジェクトブラウザで探りながら作成してみた訳ですが、、。
コンバートに関する似たような関数がいくつもあるようです。
ConvertFilesは見る感じ複数ファイルを指定出来るみたいですね。
今回はConvertFileを使いましたが、ConvertFilesの方が効率良いのかも。
ウィンドウの非表示
本当はGUIでなく完全に裏側で処理させたいので、
IEオブジェクトの「objIE.Visible = False」って感じで非表示に出来ないかなぁ〜と思ったのですが、
英文読む限りはメインウィンドウは非表示に出来ないっぽいことが書いてありますね。
しょうがないから「Minimized = True」として、最小化して誤魔化しました(笑)
これだと起動時は見えちゃいますし、タスクバーにも表示されちゃいますが…。
- 作者: 五十嵐貴之
- 出版社/メーカー: ソシム
- 発売日: 2009/06/01
- メディア: 単行本
- 購入: 1人 クリック: 65回
- この商品を含むブログ (27件) を見る