|
@@ -0,0 +1,117 @@
|
|
|
+from homeassistant_api import Client
|
|
|
+from dotenv import load_dotenv
|
|
|
+import os
|
|
|
+
|
|
|
+load_dotenv()
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+def create_client() -> Client:
|
|
|
+ url = os.environ["ha_url"] + "/api"
|
|
|
+ token = os.environ["ha_token"]
|
|
|
+
|
|
|
+ return Client(url, token)
|
|
|
+
|
|
|
+
|
|
|
+def load_disc(disc_object):
|
|
|
+ """
|
|
|
+ Play media on a media player.
|
|
|
+
|
|
|
+ Args:
|
|
|
+ client (homeassistant_api.Client): Home Assistant API client.
|
|
|
+ """
|
|
|
+ media_player = create_client().get_domain("media_player")
|
|
|
+ media_player.play_media(
|
|
|
+ entity_id="media_player.ytube_music_player",
|
|
|
+ media_content_id=disc_object['id'],
|
|
|
+ media_content_type=disc_object['type'],
|
|
|
+ )
|
|
|
+
|
|
|
+
|
|
|
+def pause_media():
|
|
|
+ """
|
|
|
+ Pause media on a media player.
|
|
|
+
|
|
|
+ Args:
|
|
|
+ client (homeassistant_api.Client): Home Assistant API client.
|
|
|
+ """
|
|
|
+ media_player = create_client().get_domain("media_player")
|
|
|
+ media_player.media_pause(entity_id="media_player.ytube_music_player")
|
|
|
+
|
|
|
+
|
|
|
+def play_media_again():
|
|
|
+ """
|
|
|
+ Play paused or stopped media on a media player.
|
|
|
+
|
|
|
+ Args:
|
|
|
+ client (homeassistant_api.Client): Home Assistant API client.
|
|
|
+ """
|
|
|
+ media_player = create_client().get_domain("media_player")
|
|
|
+ media_player.media_play(entity_id="media_player.ytube_music_player")
|
|
|
+
|
|
|
+
|
|
|
+def stop_media():
|
|
|
+ """
|
|
|
+ Stop media on a media player.
|
|
|
+
|
|
|
+ Args:
|
|
|
+ client (homeassistant_api.Client): Home Assistant API client.
|
|
|
+ """
|
|
|
+ media_player = create_client().get_domain("media_player")
|
|
|
+ media_player.media_stop(entity_id="media_player.ytube_music_player")
|
|
|
+
|
|
|
+
|
|
|
+def next_track():
|
|
|
+ """
|
|
|
+ Skip to the next track on a media player.
|
|
|
+
|
|
|
+ Args:
|
|
|
+ client (homeassistant_api.Client): Home Assistant API client.
|
|
|
+ """
|
|
|
+ media_player = create_client().get_domain("media_player")
|
|
|
+ media_player.media_next_track(entity_id="media_player.ytube_music_player")
|
|
|
+
|
|
|
+
|
|
|
+def set_shuffle():
|
|
|
+ """
|
|
|
+ Enable or disable shuffle on a media player.
|
|
|
+
|
|
|
+ Args:
|
|
|
+ client (homeassistant_api.Client): Home Assistant API client.
|
|
|
+ """
|
|
|
+ media_player = create_client().get_domain("media_player")
|
|
|
+
|
|
|
+ media_player.toggle_set(entity_id="media_player.ytube_music_player", attribute="shuffle", value=True)
|
|
|
+
|
|
|
+
|
|
|
+def play_radio():
|
|
|
+ """
|
|
|
+ Play radio or vid channel on a media player.
|
|
|
+
|
|
|
+ Args:
|
|
|
+ client (homeassistant_api.Client): Home Assistant API client.
|
|
|
+ """
|
|
|
+ media_player = create_client().get_domain("media_player")
|
|
|
+ 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",
|
|
|
+ )
|
|
|
+
|
|
|
+
|
|
|
+
|