# Program vlc_radio.py with button control, AHG (2024) import sys, vlc from subprocess import run from time import sleep from gpiozero import Button # ttg = Button(pin=27, pull_up=None,\ active_state=True,bounce_time=0.01) # green push button ttr = Button(pin=22, pull_up=None,\ active_state=True,bounce_time=0.01) # red push button tts = Button(pin=25, pull_up=None,\ active_state=True,bounce_time=0.01) # black push button # if len(sys.argv) == 1: med="http://1940sradio1.co.uk:8100/1" elif len(sys.argv) == 2: med=sys.argv[1] else: sys.exit("\nError: too many arguments") # # volume of operating system's audio driver: # ( amixer scontrols shows names of control elements ) run(["amixer","-q", "sset","PCM","100%"]) # or "HDMI" # vi = vlc.Instance("--aout alsa --quiet") # vlc instance # --aout (audio output module) adummy, alsa, pulse mp = vi.media_player_new() # new media player instance volume = 50 # initial value for volume mp.audio_set_volume(volume) # set VLC volume # m = vi.media_new(med) # media name -> instance mp.set_media(m) # media instance -> player mp.play() # start media player # print(sys.argv[0], med, "quit: Ctrl-C or black button") print("Volume: green/red button,",mp.audio_get_volume()) # try: while True: sleep(0.4) if ttg.is_pressed: volume=volume+10 mp.audio_set_volume(volume) # increase vol. sleep(0.2) print("+ vol., now" ,mp.audio_get_volume()) if ttr.is_pressed: volume=volume-10 mp.audio_set_volume(volume) # decrease vol. sleep(0.1) print("- vol., now",mp.audio_get_volume()) if tts.is_pressed: mp.stop() # stop media player sleep(0.1) sys.exit("\nBlack button pressed."+"\n") sta = str(m.get_state()) if \ (sta != "State.Opening") and (sta != "State.Playing"): sys.exit("\nMedium not playing."+"\n") except KeyboardInterrupt: mp.stop() # stop media player sys.exit("\nInterrupted by Ctrl-C"+"\n")