SimulRadio – 音量設定(3) – (mpc volume)

CSRA関連にはmms://で配信しているラジオ局をリストに登録しています。これまでは見て聴かぬ振りをしていたのですがほぼ希望通りの動作をすることができたのでmms://も簡単に音量設定をしてみました。

mms://で登録しているラジオ局は10数局と数も少ないし決まったパターンも無いことから簡単なpythonファイル(mms.py)にして読み込んでいます。
simul-vol.pyとsimul.pyのplay_selectionを変更しています。

simul-vol.py

simul-vol.pyではJCBA – ListenRadio – NHKの順に検索しています。どれにも該当しないものをmms.pyで検索します。

        # other
        if not (proc):
            command = ("mpc playlist | grep -oP 'nhk.{0,5}' | grep -v {")
            proc = (subprocess.Popen(command, stdout=subprocess.PIPE, shell=True).communicate()[0]).decode('utf-8')
            proc = proc.strip()
            # NHK
            if proc == 'nhkradio':
                subprocess.run("mpc volume +4", shell=True)
            # mms
            else:
                subprocess.run("/home/pi/bin/mms.py", shell=True)

mms.pyでは直接urlを検索してmpc volumeの値を設定します。

command = ("mpc playlist")
proc = (subprocess.Popen(command, stdout=subprocess.PIPE, shell=True).communicate()[0]).decode('utf-8')
proc = proc.strip()
if proc == 'mms://hdv2.nkansai.tv/radiokaros':
    subprocess.run("mpc volume +5", shell=True)

simul.py

simul.pyのplay_selectionではsleepの値を調整するため検索順を少し変更して更に詰めてみました。
当サイトの環境では以下の設定値で問題なく設定した音量を変更することができました。
simul.pyを変更したらプログラムの再起動が必要です。
# ListenRadio time.sleep(0.2)
# JCBA time.sleep(4)
# NHK mms time.sleep(2.5)

# selection
def play_selection():
    for i in lb.curselection():
        a = (lb.get(i))
        subprocess.run("mpc add " + (a), shell=True)
        command = ("mpc playlist | grep -oP 'www.youtube.{0,4}' | grep -v {")
        proc = (subprocess.Popen(command, stdout=subprocess.PIPE, shell=True).communicate()[0]).decode('utf-8')
        proc = proc.strip()
        if proc == 'www.youtube.com':
            command = ((("mpv ") + (a)) + (" &"))
        else:
            command = ("mpc play")
        subprocess.run(command, shell=True)
        # simul-vol.py
        command = ("mpc playlist | grep -oP 'JCB.{0,3}' | grep -v {")
        proc = (subprocess.Popen(command, stdout=subprocess.PIPE, shell=True).communicate()[0]).decode('utf-8')
        if not (proc):
            command = ("mpc playlist | grep -oP 'smartstream.{0,6}'")
            proc = (subprocess.Popen(command, stdout=subprocess.PIPE, shell=True).communicate()[0]).decode('utf-8')
            proc = proc.strip()
            # ListenRadio
            if proc == 'smartstream.ne.jp':
                time.sleep(0.2)
            # NHK mms
            else:
                time.sleep(2.5)
        # JCBA
        else:
            time.sleep(4)
        subprocess.run(("~/bin/simul-vol.py"), shell=True)

ON AIR

NHK mms://については基本urlを表示しますが# ON AIRの項に直接urlを記述することで表示できます。

# ON AIR
def button7_click():
---
        # NHK mms
        if not (proc):
            command = ("mpc playlist")
            proc = (subprocess.Popen(command, stdout=subprocess.PIPE, shell=True).communicate()[0]).decode('utf-8')
            proc = proc.strip()
            if proc == 'https://nhkradiohkfm-i.akamaihd.net/hls/live/512076/1-fm/1-fm-01.m3u8':
                proc = 'NHK FM 仙台'
            if proc == 'mms://hdv2.nkansai.tv/radiokaros':
                proc = 'ラジオカロスサッポロ/札幌市'


ラジオカロスサッポロはListenRadioを休止してCSRAのサーバーに変更されています。

"ラジオカロスサッポロ/札幌市"     "mms://hdv2.nkansai.tv/radiokaros"

リストに登録したラジオ局は全て音量の設定ができるようになりました。ラジオ局側の対応が結構適当なのでほどほどがいいと思います。
接続、再生開始はネットワーク環境、回線状態、マシンパワーなどによると思います。

参考

当サイトの現在のpythonプログラムです。(無保証)
pythonプログラムは~/bin/以下に置いて$ chmod 755 xxx.pyしています。
mms.py ボリューム設定値は変更
simul.py
simul-vol.py

Raspberry Piでは Font “Helvetica” にすると見やすくなるかもしれません。