はじめに
●テンキーで操作するラズパイラジオ
ラズパイで使用可能なテンキー(エレコムのTCM011BK)を使用してます。
環境
ラズパイZEROで構築しています。
radiko.shはhttps://github.com/jg1uaa/radish-play と同じものです。
//2022-6-14追加
60分タイマー(60分後に停止)を追加する場合はtimer.shを下記の行に追加してください。
if event.code !=69:
print(f"{event.code} - DOWN")
subprocess.run("killall ffplay mpv >> /dev/null &", shell=True)
subprocess.run("/home/pi/timer.sh >> /dev/null &", shell=True) #タイマー追加
//2022-8-28
プログラムで放送大学以降がずれていたので修正しました。
■timer.sh
killall sleep
sleep 3600
killall ffplay mpv
テンキーで操作するラズパイラジオプログラム(read_kbd.py)
# Enterキーで再生停止です
# NumLock ONでもOFFでも同じラジオ局を割り当てています
# NumLock ON時のコードです。()内はOFF時のコードです。
# Tab コード:15(15)
# / コード:98(98)
# * コード:55(55)
# BS コード:14(14)
# 7 コード:71(102)
# 8 コード:72(103)
# 9 コード:73(104)
# - コード:74(74)
# 4 コード:75(105)
# 5 コード:76(なし)
# 6 コード:77(106)
# + コード:78(78)
# 1 コード:79(107)
# 2 コード:80(108)
# 3 コード:81(109)
# 0 コード:82(110)
# 00 コード:82(なし)
# . コード:83(111)
# Enter コード:96(96)
import evdev
import subprocess
DEVICE_PATH = "/dev/input/event0" #接続デバイスは確認してください
def main():
device = evdev.InputDevice(DEVICE_PATH)
for event in device.read_loop():
if event.type == evdev.ecodes.EV_KEY:
if event.value == 1:
if event.code !=69: # 再生停止
print(f"{event.code} - DOWN")
subprocess.run("killall ffplay mpv >> /dev/null &", shell=True)
if event.code == 15: # TBSラジオ
subprocess.run("/home/pi/radiko.sh -t radiko -s TBS >> /dev/null &", shell=True)
elif event.code == 98: # 文化放送
subprocess.run("/home/pi/radiko.sh -t radiko -s QRR >> /dev/null &", shell=True)
elif event.code == 55: # ニッポン放送
subprocess.run("/home/pi/radiko.sh -t radiko -s LFR >> /dev/null &", shell=True)
elif event.code == 14: # ラジオ日本
subprocess.run("/home/pi/radiko.sh -t radiko -s JORF >> /dev/null &", shell=True)
elif event.code == 71 or event.code == 102: # BAYFM78
subprocess.run("/home/pi/radiko.sh -t radiko -s BAYFM78 >> /dev/null &", shell=True)
elif event.code == 72 or event.code == 103: # NACK5
subprocess.run("/home/pi/radiko.sh -t radiko -s NACK5 >> /dev/null &", shell=True)
elif event.code == 73 or event.code == 104: # TOKYO FM
subprocess.run("/home/pi/radiko.sh -t radiko -s FMT >> /dev/null &", shell=True)
elif event.code == 74: # J-WAVE
subprocess.run("/home/pi/radiko.sh -t radiko -s FMJ>> /dev/null &", shell=True)
elif event.code == 75 or event.code == 105: # FMヨコハマ
subprocess.run("/home/pi/radiko.sh -t radiko -s YFM >> /dev/null &", shell=True)
elif event.code == 76: # 放送大学
subprocess.run("/home/pi/radiko.sh -t radiko -s HOUSOU-DAIGAKU >> /dev/null &", shell=True)
elif event.code == 77 or event.code == 106: # InterFM897
subprocess.run("/home/pi/radiko.sh -t radiko -s INT >> /dev/null &", shell=True)
elif event.code == 78: # 茨城放送
subprocess.run("/home/pi/radiko.sh -t radiko -s IBS >> /dev/null &", shell=True)
elif event.code == 79 or event.code == 107: # NHK第一
subprocess.run("/home/pi/radiko.sh -t radiko -s JOAK >> /dev/null &", shell=True)
elif event.code == 80 or event.code == 108: # NHK第二
subprocess.run("/home/pi/nhk_2.sh", shell=True)
elif event.code == 81 or event.code == 109: # NHK FM
subprocess.run("/home/pi/radiko.sh -t radiko -s JOAK-FM >> /dev/null &", shell=True)
elif event.code == 82 or event.code == 110: # NIKKEI1
subprocess.run("/home/pi/radiko.sh -t radiko -s RN1 >> /dev/null &", shell=True)
elif event.code == 83 or event.code == 111: # NIKKEI2
subprocess.run("/home/pi/radiko.sh -t radiko -s RN2 >> /dev/null &", shell=True)
return
if __name__ == "__main__":
main()
nhk_2.sh
#!/bin/sh
#
mpv https://radio-stream.nhk.jp/hls/live/2023501/nhkradiruakr2/master.m3u8 >> /dev/null &