Sirius -旧ブログ、更新されません-

2010年12月18日(土) 00:20

udev のルールその2

MP3 の入っている USB メモリを刺したときに自動で MP3 を再生するルールを追加してみました。

全ての USB メモリをチェックするためには中身を全部見なければいけないので、"JUKEBOX" のラベルがついた USB が刺された時だけ再生するような条件にしてみました。



マウントやアンマウントするルールの前に次のルールを書きます。



---------------------------ここから---------------------------

# USB Jukebox

KERNEL=="sd?1", ENV{ID_FS_LABEL}=="JUKEBOX", ENV{mount_point}="play_music"

KERNEL=="sd?1", ENV{ID_FS_LABEL}=="JUKEBOX", ACTION=="add", \

SYMLINK+="$env{mount_point}%n", ENV{mount_options}="$env{mount_options},ro"

KERNEL=="sd?1", ENV{ID_FS_LABEL}=="JUKEBOX", ACTION=="remove", \

RUN+="/root/bin/stopplay.sh"

---------------------------ここまで---------------------------



マウントする場所を決めて、追加の場合には、念のため、読み込み専用とします。

アンマウントするときには、はじめに再生を止めて alsaplayer も終了させるシェルスクリプトを実行します。

シェルスクリプトの内容は、次のようにしました。



---------------------------ここから---------------------------

#!/bin/bash

PATH=/usr/local/bin:/bin:/usr/bin:/root/bin

MNTDIR=/media/play_music



if [ -d $MNTDIR ]; then

    alsaplayer --stop

    alsaplayer --quit

fi

---------------------------ここまで---------------------------



次にマウントするルールの次に以下のルールを追加します。



---------------------------ここから---------------------------

# USB Jukebox post

KERNEL=="sd?1"ACTION=="add", ENV{mount_point}!="", \

ENV{ID_FS_LABEL}=="JUKEBOX", RUN+="/root/bin/autoplay.sh"

---------------------------ここまで---------------------------



マウントした後で再生を開始するシェルスクリプトです。

内容は次のようにしました。



---------------------------ここから---------------------------

#!/bin/bash

PATH=/usr/local/bin:/bin:/usr/bin:/root/bin

MNTDIR=/media/play_music



if [ -d $MNTDIR ]; then

    alsaplayer --quit

    sleep 5

    alsaplayer -i daemon -q > /dev/null 2>&1 &

    sleep 5



    getmp3dir $MNTDIR | while read dir

    do

        alsaplayer -e "$MNTDIR/$dir/"*.mp3

    done

fi

---------------------------ここまで---------------------------



alsaplayer はディレクトリを指定するとその下を再帰的に検索してくれますが、そうすると再生順がディレクトリのエントリ順となってしまうので、このようになりました。私は、ファイル名の前にトラック番号を付けているのでこれで必ずトラック順になります。getmp3dir コマンドは自作のコマンドです。ソースはここに、実行形式はここに置いておきます。



ボリュームラベルを "JUKEBOX" にして MP3 を置いた USB を刺すと再生が始まります。再生中に抜いてみましたが問題ないようです。

written by sirius [玄箱] [この記事のURL] [コメントを書く] [コメント(0)] [TB(0)]

この記事へのトラックバックPingURL

Comments

TrackBacks

Sirius -旧ブログ、更新されません-

MySketch 2.7.2 written by 夕雨