1 """Google Cast support for the Plex component."""
3 from __future__
import annotations
5 from pychromecast
import Chromecast
6 from pychromecast.controllers.plex
import PlexController
12 from .
import async_browse_media
as async_browse_plex_media, is_plex_media_id
13 from .services
import process_plex_payload
17 hass: HomeAssistant, cast_type: str
18 ) -> list[BrowseMedia]:
19 """Create a root object for media browsing."""
23 media_class=MediaClass.APP,
25 media_content_type=
"plex",
26 thumbnail=
"https://brands.home-assistant.io/_/plex/logo.png",
35 media_content_type: MediaType | str,
36 media_content_id: str,
38 ) -> BrowseMedia |
None:
41 return await async_browse_plex_media(
42 hass, media_content_type, media_content_id, platform=CAST_DOMAIN
44 if media_content_type ==
"plex":
45 return await async_browse_plex_media(hass,
None,
None, platform=CAST_DOMAIN)
50 hass: HomeAssistant, chromecast: Chromecast, media_type: str, media_id: str
54 controller = PlexController()
55 chromecast.register_handler(controller)
56 offset_in_s = result.offset / 1000
57 controller.play_media(result.media, offset=offset_in_s)
63 chromecast: Chromecast,
64 media_type: MediaType | str,
69 await hass.async_add_executor_job(
70 _play_media, hass, chromecast, media_type, media_id
bool async_play_media(HomeAssistant hass, str cast_entity_id, Chromecast chromecast, MediaType|str media_type, str media_id)
BrowseMedia|None async_browse_media(HomeAssistant hass, MediaType|str media_content_type, str media_content_id, str cast_type)
list[BrowseMedia] async_get_media_browser_root_object(HomeAssistant hass, str cast_type)
None _play_media(HomeAssistant hass, Chromecast chromecast, str media_type, str media_id)
PlexMediaSearchResult process_plex_payload(HomeAssistant hass, str content_type, str content_id, PlexServer|None default_plex_server=None, bool supports_playqueues=True)
def is_plex_media_id(media_content_id)