MPDで再生中のアーティストと曲名を表示する


Raspberryを使ってMPDで再生中のアーティスト名と曲名を表示させたいと思っていました。
このページでLCDのケースを紹介しましたが、そこで使っているソフトを紹介します。
まずはpython mpdライブラリをインストールします。
python mpdライブラリはこちらで 紹介 されています。

$ sudo apt-get install python-mpd

python mpdライブラリを使ったコードは以下の通りです。

client.connect()でMPDサーバに接続し、
client.idle()で状態変化を捉えて、client.status()で演奏中かどうか を判定 し、
client.currentsong()でアーティスト名と曲名を取り出しています。
外部コマンドとしてここで紹介しているソフトを使っています。

#!/usr/bin/python
#-*- encoding: utf-8 -*-
import sys
import subprocess
from mpd import MPDClient

if __name__ == '__main__':
    argv = sys.argv  # コマンドライン引数を格納したリストの取得
    argc = len(argv) # 引数の個数
    lcd_command="/home/pi/lcd/lcd"

    client = MPDClient()
    client.timeout = 10
    client.idletimeout = None
    client.connect("192.168.111.40", 6600)  # connect to MPD Server

    while True:
        client.idle()
#        print(client.status()["state"])
        if client.status()["state"] == "play":
#            print(client.currentsong())
            artist="artist" in client.currentsong()
            title="title" in client.currentsong()
            if artist and title:
#               print(client.currentsong()["artist"])
#               print(client.currentsong()["title"])
                string=client.currentsong()["artist"]+"-"+client.currentsong()["title"]
            else:
                string=client.currentsong()["file"]
#            print string
            args=[lcd_command,string]
            subprocess.call(args)
        if client.status()["state"] == "stop":
            args=[lcd_command]
            subprocess.call(args)


    client.close()
    client.disconnect()

表示はこんな感じです。

LCDケース

LCDが日本語表示できないので、残念ながら日本語には対応していません。

続く...