iTunesを利用して、aacをmp3に変換するスクリプト。

aacからmp3に変換する方法を求めて当サイトにアクセスするユーザーが多いようなので、スクリプトを掲載してみる。
前提条件:
Perlがインストールされていること。
Windows環境であること。
iTunesが動作していること。
iTunesで管理しているaacファイルをmp3形式でエクスポートするような感じです。

use strict;
use Win32::OLE;
use File::Copy;
use File::Basename;

#mp3ファイルは以下に指定されたフォルダに保存される。
my $mp3_folder = 'C:/Data/CLIEMP3';



#以下で指定したプレイリストに含まれるファイルを変換する。

my $target_playlist = 'CNN';



my $itunes = new Win32::OLE( "iTunes.Application") or die 'bye';


#現在のエンコーダーを取得しておく。スクリプトの最後で戻しておくため。

my $current_encoder = $itunes->CurrentEncoder;
#mp3のビットレートなどはあらかじめiTunesの「編集」-「設定」-「インポート」におけるインポート方法でmp3を選択して、設定で任意の数値に変更しておく。

my $mp3_encoder = $itunes->Encoders->ItemByName('MP3 Encoder');
$itunes->LetProperty('CurrentEncoder', $mp3_encoder);


my $playlist = $itunes->Sources->Item(1)->PlayLists->ItemByName($target_playlist);

my $c = $playlist->Tracks->Count;

for(my $n = 1; $n <= $c; $n++){

    my $t = $playlist->Tracks->Item($n);



    my $operational_status = $itunes->ConvertTrack2($t);

    sleep 1 while $operational_status->InProgress;

    $t = $operational_status->Tracks->Item(1);



    my ($name, $path, $suffix) = fileparse($t->Location, qr{\.mp3});
    #指定されたフォルダにコピーする。

    copy($t->Location, "$mp3_folder/$name$suffix") or die "Copy failed: $!";
    #コピーされた後のmp3は不要なので削除する。
    $t->Delete;

}

$itunes->LetProperty('CurrentEncoder', $current_encoder);

プログラムをダイアリー上に表示するのは結構面倒だ。