プラグイン機能とは
v0.3.10で実装されたsymphonic-mpdの『プラグイン機能』とは、自分で書いたシェルを起動するボタンをメニューに追加できる機能です。
例えば、DACのデジタルフィルタを切り替えるシェルを用意すれば、Web UIのメニューから実行することができます。
参考サイト
ジャイアンさんが丁寧な解説を描いてくださいました。ご一読くださいませ。
symphonic-mpdユーザーのためのLinux初心者講座 たぶん其の一
オーバークロックプリセットの話題です
symphonic-mpdユーザーのためのLinux初心者講座 そして其の二
オーバークロックプリセットの後編です
symphonic-mpdユーザーのためのLinux初心者講座 やっと其の三
UPDATE THIS FOLDERプラグイン導入の話題です
symphonic-mpd & SabreBerry32ユーザーのためのLinux中級講座
デジタルボリュームON/OFFプラグインの話題です
プラグインの設定
設定ファイルは/home/pi/plugins/.plugin.jsonです。
同梱しているサンプルプラグイン「ボリューム設定プラグイン(75%固定)」を例に説明しますと、
/home/pi/plugins/.plugin.jsonには以下のように定義されています。
{
"menu" :"VOLUME(75%)",
"active" :"yes",
"icon" :"volume-up",
"form" :"",
"command":"mpc volume 75",
"output" :"",
"success":"success!",
"error" :"error!"
} ,
項目 | 説明 |
---|---|
menu | メニューに表示するボタン名。 |
active | yesで表示、noで非表示。 |
icon | ボタン横のアイコンを指定。 |
form | フォームのhtmlを指定。シェルにパラメータを渡す必要がなければフォームも不要ですので、設定は空にします。設定するパスは/var/lib/mpd/music/が起点となります。例えばフォームのhtmlが/var/lib/mpd/music/xx.htmlの場合、設定値は"/xx.html"となります。フォーム内のinputタグには必ずname="param"をつけてください。 |
command | 実行するシェルのパス。(シェルではなくコマンドを直接指定しても問題ありません) |
output | 実行結果画面のhtmlを指定。不要なら空にします。設定するパスは/var/lib/mpd/music/が起点となります。例えばcommandで指定したシェルで/var/lib/mpd/music/RAM/output.htmlを出力する場合、設定値は"/RAM/output.html"となります。 |
success | シェルの戻り値が0の場合に表示するメッセージ。outputが指定されている場合はそちらが優先され、successに指定したメッセージは使われません。 |
error | シェルの戻り値が0より大きい場合に表示するメッセージ。 |
フォームの作り方
シェルにパラメータを引き渡したい場合、htmlで作成したフォームを呼び出すことができます。
例として『ブラウズ中のフォルダに絞ってLIBRARY UPDATEを実行する』というプラグインを取り上げます。
初めに、/home/pi/plugins/update_folder.htmlを作成します。
<form>
<input id="library_update_target" class="form-control" type="text" name="param" value="" />
<script>
$(function(){
$("#library_update_target").val(browsepath);
});
</script>
</form>
sudo ln -s /home/pi/plugins/update_folder.html
※シンボリックリンクを貼らずに、/var/lib/mpd/music/以下に直接htmlを配置しても問題ありません。
最後に、/home/pi/plugins/.plugin.jsonにプラグイン定義を追加します。
```json
{
"menu" :"UPDATE THIS FOLDER",
"active" :"yes",
"icon" :"heart",
"form" :"/update_folder.html",
"command":"mpc update",
"output" :"",
"success":"Library updating",
"error" :"error!"
}
※直前のプラグイン定義とカンマ(,)で区切るのを忘れないでください。
アイコン
プラグイン定義の"icon"に指定するアイコン名です。