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);
プログラムをダイアリー上に表示するのは結構面倒だ。