#!/usr/bin/env python3 from json.decoder import JSONDecodeError import random, glob, os, json if __name__ == "__main__": songs_folder = "/songs" jingles_folder = "/jingles" air_support_folder = "/air-support" def get_air_support(): return random.choice(glob.glob(f"{air_support_folder}/*.ogg")) def create_state_from_scratch() -> dict: state = {"current_song_type": "jingle"} with open(f"{songs_folder}/state.json", "w") as f: json.dump(state, f, indent=4) return state # state loading if not os.path.isfile(f"{songs_folder}/state.json"): # create state file if it doesnt exist with open(f"{songs_folder}/state.json", "w") as f: state = create_state_from_scratch() else: try: with open(f"{songs_folder}/state.json") as f: state = json.load(f) except JSONDecodeError: # if file doesnt exist, we recreate a state on the disk state = create_state_from_scratch() # song choice if state["current_song_type"] == "song": state["current_song_type"] = "jingle" try: print(random.choice(glob.glob(f"{jingles_folder}/*.ogg"))) except IndexError: print(get_air_support()) elif state["current_song_type"] == "jingle": state["current_song_type"] = "song" try: print(random.choice(glob.glob(f"{songs_folder}/*.ogg"))) except IndexError: print(get_air_support()) else: # should not happen # resiliency mode print(get_air_support()) state = {"current_song_type": "jingle"} # state saving with open(f"{songs_folder}/state.json", "w") as f: json.dump(state, f, indent=4)