home_assistant.py 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. from homeassistant_api import Client
  2. from dotenv import load_dotenv
  3. import os
  4. load_dotenv()
  5. # # play track
  6. # client.get_domain("media_player").play_media(entity_id="media_player.ytube_music_player", media_content_id="LM", media_content_type="playlist")
  7. # # pause
  8. # client.get_domain("media_player").media_pause(entity_id="media_player.ytube_music_player")
  9. # # sleep(5)
  10. # # # play
  11. # client.get_domain("media_player").media_play(entity_id="media_player.ytube_music_player")
  12. # # # stop
  13. # client.get_domain("media_player").media_stop(entity_id="media_player.ytube_music_player")
  14. # # skip
  15. # client.get_domain("media_player").media_next_track(entity_id="media_player.ytube_music_player")
  16. # # radio
  17. # client.get_domain("media_player").play_media(entity_id="media_player.ytube_music_player", media_content_id="{{state_attr("media_player.ytube_music_player","videoId") }}", media_content_type="vid_channel")
  18. # # shuffle
  19. # {'name': 'Daft Punk Random Access Memories', 'type': 'album', 'id': 'MPREb_K8qWMWVqXGi'}
  20. def create_client() -> Client:
  21. url = os.environ["ha_url"] + "/api"
  22. token = os.environ["ha_token"]
  23. return Client(url, token)
  24. def load_disc(disc_object):
  25. """
  26. Play media on a media player.
  27. Args:
  28. client (homeassistant_api.Client): Home Assistant API client.
  29. """
  30. media_player = create_client().get_domain("media_player")
  31. media_player.play_media(
  32. entity_id="media_player.ytube_music_player",
  33. media_content_id=disc_object['id'],
  34. media_content_type=disc_object['type'],
  35. )
  36. def pause_media():
  37. """
  38. Pause media on a media player.
  39. Args:
  40. client (homeassistant_api.Client): Home Assistant API client.
  41. """
  42. media_player = create_client().get_domain("media_player")
  43. media_player.media_pause(entity_id="media_player.ytube_music_player")
  44. def play_media_again():
  45. """
  46. Play paused or stopped media on a media player.
  47. Args:
  48. client (homeassistant_api.Client): Home Assistant API client.
  49. """
  50. media_player = create_client().get_domain("media_player")
  51. media_player.media_play(entity_id="media_player.ytube_music_player")
  52. def stop_media():
  53. """
  54. Stop media on a media player.
  55. Args:
  56. client (homeassistant_api.Client): Home Assistant API client.
  57. """
  58. media_player = create_client().get_domain("media_player")
  59. media_player.media_stop(entity_id="media_player.ytube_music_player")
  60. def next_track():
  61. """
  62. Skip to the next track on a media player.
  63. Args:
  64. client (homeassistant_api.Client): Home Assistant API client.
  65. """
  66. media_player = create_client().get_domain("media_player")
  67. media_player.media_next_track(entity_id="media_player.ytube_music_player")
  68. def set_shuffle():
  69. """
  70. Enable or disable shuffle on a media player.
  71. Args:
  72. client (homeassistant_api.Client): Home Assistant API client.
  73. """
  74. media_player = create_client().get_domain("media_player")
  75. # Use toggle_set instead of just set, because get_shuffle returns None if no current setting
  76. media_player.toggle_set(entity_id="media_player.ytube_music_player", attribute="shuffle", value=True)
  77. def play_radio():
  78. """
  79. Play radio or vid channel on a media player.
  80. Args:
  81. client (homeassistant_api.Client): Home Assistant API client.
  82. """
  83. media_player = create_client().get_domain("media_player")
  84. media_player.play_media(
  85. entity_id="media_player.ytube_music_player",
  86. media_content_id='\{\{state_attr("media_player.ytube_music_player","videoId") \}\}',
  87. media_content_type="vid_channel",
  88. )
  89. # load_disc("MPREb_GkjTjE1eOn4", "album")