自宅のLinuxサーバーでmp3を再生してLast.fmにもscrobbleするのをwebから操作
というのを作った。
■経緯
- 自宅のスピーカーで音楽聴きたい
- デスクトップマシン(普段スピーカーに繋がっている)を起動させるの面倒
- こたつから出て操作とか面倒
- Last.fmにscrobbleしたい
- SSHつないで操作も面倒 というようなことを前々から思っていたため、やってみた。
■実装
レイアウトとか全然凝ってないけどこんな感じ。HTML5で音量コントロールがそれっぽくできるようになったのがいいですね。あと、それっぽい気がしたので再生中にはmarqueeしてみている。
フロントエンドは、適宜XMLHttpRequestでAPIへリクエストして、返ってきたJSONに曲情報とか再生情報が入ってるので適宜反映といった感じ。バックエンドでは、RubyでMPlayerを動かしてるデーモンがあってそれをAPI経由でソケットでコマンド送って操作する。mplayer-rubyを使ってはいるのだけど、結構バグがあったり機能が足りなかったりと色々とひどい感じだったので改造しまくったたこともあり、公開しても動かないのでコードは公開しません。通信部分については、わざわざWeb APIを作らずにWebSocket使ったほうがシンプルにできそうではあったけれど、WebSocketは終わコン説があるのでスルーした。また、Cometはよくわからないのでスルーした。
あと、mplayer-rubyでコマンドごとに同じプロセスの標準出力を読み取っているせいなのか、全然スケールしない様子(秒間1リクエストくらいならいけるか?)なので、Webの操作ページは公開しません。まあ家にいないと音楽も聞こえないし。
■その他
Webでの操作はスケールしないけど、Twitter botでも作って、replyで曲のリクエストを受け付けるとかならありかも。データベースはmt-daapd用のを使いまわせるので、検索も難しくはない。
■参考
http://blog.meganelab.net/archives/2006/11/21/043150
結構前に見てやろうと思ったけどサウンドカードがなくて諦めた
Comments