先日ハマったDLNAの10000ファイル問題。どうやら、音楽再生については、DLNA公開フォルダにプレイリストのみを置く事で回避するというテクニックがあるようだ。
とりあえず、フォルダ毎に自動的にm3uファイルを生成するperlスクリプトを書いてみた。
#!/usr/bin/perl sub func() { my ($top, $dir) = @_; my ($fname, $pname, @files, @list); opendir DIR, $top . $dir; @files = grep { !m/^(\.|\.\.)$/g } readdir DIR; close DIR; @list = (); foreach (@files) { $fname = $dir . $_; if (-d $top . $fname) { &func($top, $fname . "/", $rel); } elsif ($fname =~ /\.mp3$/) { push(@list, $fname); } } if ($dir ne "" && @list) { $pname = $dir; chop($pname); $pname =~ s/\//_/g; $pname = $tgtdir . $pname . ".m3u"; if (!(-f $pname)) { open(OUT, ">$pname"); foreach (@list) { print OUT $relpath . $_ . "\n"; } } } } $tgtdir = "/mnt/hda6/dlna/Music/"; $relpath = "../../disk/Music/mp3/"; &func("/mnt/hda6/disk/Music/mp3/"); exit;
プライベートでコードを書くのは本当に久しぶり。とりあえず実行してみたのだが、その結果、PS3からNASの中身を覗いても、読み込み中みたいな感じで中身が全く見えなくなってしまった。う〜ん、どうしてだ? とりあえず、今日は時間切れ。
リンク:http://www.yanaso.haru.gs/SOFT/archive/q_cd2mp3/help/m3u_conv.html