その買うを、もっとハッピーに。|ハピタス

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で初めに設定しておかないといけません。

ウィンドウの非表示


本当はGUIでなく完全に裏側で処理させたいので、
IEオブジェクトの「objIE.Visible = False」って感じで非表示に出来ないかなぁ〜と思ったのですが、
英文読む限りはメインウィンドウは非表示に出来ないっぽいことが書いてありますね。


ウィンドウの表示・非表示


しょうがないから「Minimized = True」として、最小化して誤魔化しました(笑)
これだと起動時は見えちゃいますし、タスクバーにも表示されちゃいますが…。



Windows自動処理のためのWSHプログラミングガイド

Windows自動処理のためのWSHプログラミングガイド