import sys import os from lib.mqtt import ( create_client, update_disc, control_player, create_config, check_current_disc, ) from lib.home_assistant import load_disc, pause_media, play_media_again from dotenv import load_dotenv load_dotenv() use_mqtt = os.environ["use_mqtt"].lower() == "true" if use_mqtt: client = create_client() create_config(client) # Debug: Print environment variable print(f"Using MQTT: {use_mqtt}") # Helper function to handle disc operations def handle_disc(disc_data): print(f"Handling disc: {disc_data}") disc_object = {"name": disc_data[1], "type": disc_data[2], "id": disc_data[3]} if use_mqtt: if disc_object == check_current_disc(client): print("Disc is the same as the last one, playing.") control_player(client, "PLAY") if use_mqtt: print("Updating disc via MQTT and playing.") control_player(client, "PLAY") update_disc(client, disc_data) else: print(f"Loading {disc_object['name']} via Home Assistant.") load_disc(disc_object) # Command handlers for media control def handle_play(): print("Handling PLAY command.") if use_mqtt: control_player(client, "PLAY") else: play_media_again() def handle_pause(): print("Handling PAUSE command.") if use_mqtt: control_player(client, "PAUSE") else: pause_media() # Dictionary for command dispatching command_handlers = {"EJECT": handle_pause, "PLAY": handle_play, "PAUSE": handle_pause} # Main function to process input def process_input(input_str): print(f"Processing input: {input_str}") if ":" in input_str: # Handle disc input disc_data = input_str.split(":") if disc_data[0] == "ytmusic": handle_disc(disc_data) else: print(f"Unknown disc type: {disc_data[0]}") else: # Handle control commands command_handler = command_handlers.get(input_str) if command_handler: command_handler() else: print(f"Can't process {input_str}") # Check if any arguments are passed if len(sys.argv) > 1: input_str = sys.argv[1] print(f"Received argument: {input_str}") process_input(input_str) else: print("No arguments passed.")