mplayer用のPlayListを生成する
2025/09/05 14:23
「ディレクトリを再帰的にたどりファイル一覧を取得したい その1 - Perl - とあるエンジニアの闇歴史帳」(http://tech.katsubemakito.net/perl/dir_recursion1) を参考にさせていただきました。
音楽ファイルは文字コード順で並び替えられるのが前提(例: 00_zzz.mp3 , 01_yyy.mp4 , ...)です。
ソースはこちら。
#!/usr/bin/perl
use strict;
#-- 再帰実行 --#
reflexiveFile('.');
exit;
sub reflexiveFile{
my $dir = shift;
my @list = ();
#-- カレントの一覧を取得 --#
opendir(DIR, $dir) or die("Can not open directory:$dir ($!)");
@list = readdir(DIR);
closedir(DIR);
my $count_file = 0;
my @music_files = ();
foreach my $file (sort @list){
next if $file =~ /^\.{1,2}$/;
if( -d "$dir/$file" ){
#ディレクトリ
reflexiveFile("$dir/$file");
}else{
#ファイル
$count_file++;
#音楽ファイル
push(@music_files, $file) if $file =~ /\.(mp3|wma)$/i;
}
}
#print "$dir : $count_file @music_files\n";
#音楽ファイルのみがあるディレクトリならば
if(@music_files > 0 && @music_files == $count_file){
my $c_dir = ( split(m|/|, $dir) )[-1];
print "$dir $c_dir.playlist.txt\n";
open(PL, ">$dir/$c_dir.playlist.txt");
print PL join("\n", @music_files). "\n";
close(PL);
}
}