LoginSignup
6
2

More than 1 year has passed since last update.

テンキーで操作するラズパイラジオ

Last updated at Posted at 2022-06-06

はじめに

●テンキーで操作するラズパイラジオ
ラズパイで使用可能なテンキー(エレコムのTCM011BK)を使用してます。
スクリーンショット 2022-06-06 202155.jpg

環境

ラズパイ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 &
6
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
2