add direct HA logic
This commit is contained in:
		
							parent
							
								
									9379df14f3
								
							
						
					
					
						commit
						7634331bc1
					
				
							
								
								
									
										117
									
								
								lib/home_assistant.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										117
									
								
								lib/home_assistant.py
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,117 @@ | ||||
| from homeassistant_api import Client | ||||
| from dotenv import load_dotenv | ||||
| import os | ||||
| 
 | ||||
| load_dotenv() | ||||
| # # play track | ||||
| # client.get_domain("media_player").play_media(entity_id="media_player.ytube_music_player", media_content_id="LM", media_content_type="playlist") | ||||
| # # pause | ||||
| # client.get_domain("media_player").media_pause(entity_id="media_player.ytube_music_player") | ||||
| # # sleep(5) | ||||
| # # # play | ||||
| # client.get_domain("media_player").media_play(entity_id="media_player.ytube_music_player") | ||||
| # # # stop | ||||
| # client.get_domain("media_player").media_stop(entity_id="media_player.ytube_music_player") | ||||
| # # skip | ||||
| # client.get_domain("media_player").media_next_track(entity_id="media_player.ytube_music_player") | ||||
| # # radio | ||||
| # 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") | ||||
| # # shuffle | ||||
| 
 | ||||
| 
 | ||||
| # {'name': 'Daft Punk Random Access Memories', 'type': 'album', 'id': 'MPREb_K8qWMWVqXGi'} | ||||
| 
 | ||||
| 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") | ||||
|     # Use toggle_set instead of just set, because get_shuffle returns None if no current setting | ||||
|     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", | ||||
|     ) | ||||
| 
 | ||||
| 
 | ||||
| # load_disc("MPREb_GkjTjE1eOn4", "album") | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Karl Hudgell
						Karl Hudgell