#!/usr/bin/env python import json, random, os, subprocess from pprint import pprint from time import sleep from LEDfunctions import * # this script plays the content of the announcer (from json file) import subprocess # is the guru running? try: pirate_pid = subprocess.check_output( ["pgrep", "-f", "guru-pirate.py"] ) print("guru pirate running:",pirate_pid) subprocess.call(["kill", pirate_pid.replace("\n","")]) except: print("guru-pirate is not running") sleep(4) # when characters speak the LEDs light up and perform effects def vu_2_leds(color): while True: data = play_process.stdout.readline() if not data: pixels.clear() # make LEDs dark pixels.show() break data = data.rstrip() if data.endswith("%"): vu = float(data[:-1][-3:])/100 # 0-100 leds_color_intensity(color, vu) # open announcer.json files pwd = os.path.dirname( os.path.realpath(__file__) ) + "/" announcer_f = open(pwd + "announcer.json", "r").read() announcer = json.loads(announcer_f) # print(announcer) position_file = open(pwd + "announcements_position.txt", "r") #choosing next message in sequence msg_sf_len=len( announcer['messages'] ) position= (int( position_file.read() ) ) + 1 if position == msg_sf_len: position = 0 print(position) position_file = open(pwd + "announcements_position.txt", "w") position_file.write(str(position)) position_file.close() print ("position", position) sound_dir = pwd + "Audio_recordings/Announcements/" intro_sf = sound_dir + random.choice( announcer['introductions'] ) msg_sf = sound_dir + announcer['messages'][position] print(intro_sf, msg_sf) #play audio print(intro_sf) os.system('play -q "{}" gain 5'.format(intro_sf) ) play_process = subprocess.Popen(["aplay", msg_sf, "-f", "cd", "--vumeter=mono"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT, universal_newlines=True) vu_2_leds(color_announcer)