2018年6月18日月曜日

USB メモリに保存された楽曲を全て網羅するプレイリスト(m3u8)を作成する

MINI (F56) には CD プレーヤーが無いため、USB メモリに保存した音楽を聞くのが一般的ですが、標準状態では特定の曲を検索するか、アルバム、またはアーティストを選んで再生する必要があります。

自分の場合は、保存された楽曲をアーティストごとにまとめて、ずっと順番に再生するという聞き方をしているので、一つのアルバムをリピートされてしまうとちょっと困ってしまいます。

どうやら、全ての曲を順番に再生するためには、プレイリストを作成する必要があるらしいのですが、プレイリストを作成するフリーソフトでしっくり来るものが見つからなかったので、ささっと Perl スクリプトを作成することにしました。

#!/usr/bin/perl
open( INFILE, "F:/dir.txt" );
while( <INFILE> ) {
if( $_ =~ /F:\\(.*)\\(.*) のディレクトリ/ ) {
$_ =~ /F:\\(.*)\\(.*) のディレクトリ/;
$Artist = $1;
$Album = $2;
$key = "$Artist\/$Album";
push ( @Album, $key );
undef $Index;
}
if( $_ =~ /.*\.m4[ab]{1}/ ) {
$_ = /[0-9]{4}\/[0-9]{2}\/[0-9]{2}  [0-9]{2}:[0-9]{2}[ ]{1,}[0-9\,]{1,} (.*\.m4[ab]{1})$/;
$Song = $1;
$Index++;
$Song{$key}{$Index} = $Song;
$NumOfIndex{$key} = $Index;
}
}
close( INFILE );
my @order = sort { $a cmp $b } @Album;
foreach my $i ( $[ .. $#order ) {
$Album = $order[$i];
foreach my $j ( 1 .. $NumOfIndex{$Album} ) {
print "$Album\/$Song{$Album}{$j}\n";
}
}

使い方は次の通りです。

  1. USB メモリを PC に接続する
  2. コマンド プロンプトを起動し、USB メモリのドライブ(F: を想定)に移動する
  3. dir /s > F:\dir.txt [Enter]
  4. 上記の Perl スクリプトを保存したディレクトリに移動し、スクリプトを実行する。例)mkplaylist.pl > F:\playlist.m3u8 [Enter]
  5. USB メモリに作成された playlist.m3u8 をメモ帳で開き、UTF-8 で上書き保存する(だっさ……)



Blogger の小枝