main.py 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. import sys
  2. import os
  3. from lib.mqtt import (
  4. create_client,
  5. update_disc,
  6. control_player,
  7. create_config,
  8. check_current_disc,
  9. )
  10. from lib.home_assistant import load_disc, pause_media, play_media_again
  11. from dotenv import load_dotenv
  12. load_dotenv()
  13. use_mqtt = os.environ["use_mqtt"].lower() == "true"
  14. if use_mqtt:
  15. client = create_client()
  16. create_config(client)
  17. # Debug: Print environment variable
  18. print(f"Using MQTT: {use_mqtt}")
  19. # Helper function to handle disc operations
  20. def handle_disc(disc_data):
  21. print(f"Handling disc: {disc_data}")
  22. disc_object = {"name": disc_data[1], "type": disc_data[2], "id": disc_data[3]}
  23. if use_mqtt:
  24. if disc_object == check_current_disc(client):
  25. print("Disc is the same as the last one, playing.")
  26. control_player(client, "PLAY")
  27. if use_mqtt:
  28. print("Updating disc via MQTT and playing.")
  29. control_player(client, "PLAY")
  30. update_disc(client, disc_data)
  31. else:
  32. print(f"Loading {disc_object['name']} via Home Assistant.")
  33. load_disc(disc_object)
  34. # Command handlers for media control
  35. def handle_play():
  36. print("Handling PLAY command.")
  37. if use_mqtt:
  38. control_player(client, "PLAY")
  39. else:
  40. play_media_again()
  41. def handle_pause():
  42. print("Handling PAUSE command.")
  43. if use_mqtt:
  44. control_player(client, "PAUSE")
  45. else:
  46. pause_media()
  47. # Dictionary for command dispatching
  48. command_handlers = {"EJECT": handle_pause, "PLAY": handle_play, "PAUSE": handle_pause}
  49. # Main function to process input
  50. def process_input(input_str):
  51. print(f"Processing input: {input_str}")
  52. if ":" in input_str:
  53. # Handle disc input
  54. disc_data = input_str.split(":")
  55. if disc_data[0] == "ytmusic":
  56. handle_disc(disc_data)
  57. else:
  58. print(f"Unknown disc type: {disc_data[0]}")
  59. else:
  60. # Handle control commands
  61. command_handler = command_handlers.get(input_str)
  62. if command_handler:
  63. command_handler()
  64. else:
  65. print(f"Can't process {input_str}")
  66. # Check if any arguments are passed
  67. if len(sys.argv) > 1:
  68. input_str = sys.argv[1]
  69. print(f"Received argument: {input_str}")
  70. process_input(input_str)
  71. else:
  72. print("No arguments passed.")