iTunesで管理している英語教材(CNNニュースダイジェスト)をCLIE TH55のAudio Playerで聞くために作成。プレイリストの作成方法は不明。作成されたmp3は\Palm\Programs\MSAUDIOに保存する必要がある。この中にサブディレクトリを作成しても認識されない。またmp3へのサンプリングレートは44.1Khzでないと、CLIEのAudio Playerでは再生できない。OLE経由ではiTunesのエンコードの設定はできないのであらかじめ設定しておく必要がある。iTunesがOLEに対応しているのはすばらしいのだが、エンコーダーの設定ができない(特にビットレートの変更をスクリプト経由で行えない)のが大変残念。今のところ唯一の欠点か。
use strict;
use Win32::OLE;
use File::Copy;
use File::Basename;
#以下に指定されたフォルダに保存する。
my $mp3_folder = 'C:/Data/CLIEMP3';
my $itunes = new Win32::OLE( "iTunes.Application") or die 'bye';
#サンプリングレートは44Khzでないと、CLIEのAudio Playerでは再生できない。
#現在のエンコーダーを取得しておく。スクリプトの最後で戻しておくため。
my $current_encoder = $itunes->CurrentEncoder;
my $mp3_encoder = $itunes->Encoders->ItemByName('MP3 Encoder');
$itunes->LetProperty('CurrentEncoder', $mp3_encoder);
my $playlist = $itunes->Sources->Item(1)->PlayLists->ItemByName('CNN');
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);