perl mpg123 再生メモ
muili.
mpg123を使用して、@lに登録したディレクトリ下を再生させる。
※$l[0]は停止コマンド
ただこれだと、実行直後にmpg123にプロセスを奪われ(?)、C-Cしないと…正しく動作しない。
#!/usr/bin/perl ## local-cgi: w3m /cgi-bin/jukebox $d='~/music'; @l=qw(-stop tw-bgm tv ux50/cbr128f); $p=0; $q=$ENV{'QUERY_STRING'}; if($q=~/^play=(\d+)/){ $p=$1; } if($p>0){ &start; }else{ &stop; } &html; ## sub html{ my $s=''; my $i=0; foreach(@l){ $r=$p==$i?'*':''; $s.=sprintf('<li><input type="radio" name="play" value="%d">%s</li>',$i,$_.$r); $s.="\n"; $i++; } if($s){$s="<ul>\n$s</ul>\n";} print<<END content-type:text/html;charset=euc-jp\n\n <html> <head> <meta http-equiv="Content-Type" content="text/html;charset=euc-jp"> <title>jukebox - $p - $q</title> </head> <body> <form method="get" action="/cgi-bin/jukebox"> $s <input type="submit" value="OK"> </form> </body> </html> END ; } sub start{ &stop; my $f="$d/".$l[$p]; `mpg123 -q $f/*.{mp,MP}3 &`; } sub stop{ my $pid=`ps -el |grep mpg123`; if($pid){ $pid=~s/^\S+\s+(\S+)\s+.*/$1/; `kill $pid`; } }