Volumio2のREST APIにgetqueueを追加する方法

 REST APIでは再生キューのリストが取れないため調査したところ、volumio2に数行のコード追加で取得できるように改造可能とわかったのでその方法をメモ。

 内部的には再生キューを生成するWeb Socket用のコードがすでに存在するため、REST APIのコードにgetqueueのハンドラを追加し、再生キューのリストをレスポンスとして返すようにしてあげるだけです。
 getstateの次あたりに追加すると良いんじゃないかと。v2.562で確認しました。

  • 修正するファイル
 /volumio/app/plugins/user_interface/rest_api/index.js
  • 追加するコード
    api.route('/getqueue')
        .get(function (req, res) {
            var response = self.commandRouter.volumioGetQueue();

            if (response != undefined)
                res.json(response);
            else
                res.json(notFound);
        });

 
 選曲はplayコマンドにリストの番号を追加するだけでOK。0オリジンなことに注意。
 3曲目を指定するならN=2を指定する。

/api/v1/commands/?cmd=play&N=2

 Web SocketとREST APIでは応答電文が共通のため頑張れば大部分をREST API化できるかもしれない。REST APIだとcurlコマンドとかで簡単に制御できるので、シェルスクリプトで色々やるのには便利です。