mirror of
https://github.com/home-assistant/core.git
synced 2025-07-18 02:37:08 +00:00
Handle Plex Live TV sessions (#36919)
This commit is contained in:
parent
e4df0481da
commit
d445c16697
@ -36,6 +36,8 @@ from .const import (
|
|||||||
SERVERS,
|
SERVERS,
|
||||||
)
|
)
|
||||||
|
|
||||||
|
LIVE_TV_SECTION = "-4"
|
||||||
|
|
||||||
_LOGGER = logging.getLogger(__name__)
|
_LOGGER = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
@ -246,17 +248,23 @@ class PlexMediaPlayer(MediaPlayerEntity):
|
|||||||
|
|
||||||
if self._is_player_active and self.session is not None:
|
if self._is_player_active and self.session is not None:
|
||||||
self._session_type = self.session.type
|
self._session_type = self.session.type
|
||||||
self._media_duration = int(self.session.duration / 1000)
|
if self.session.duration:
|
||||||
|
self._media_duration = int(self.session.duration / 1000)
|
||||||
|
else:
|
||||||
|
self._media_duration = None
|
||||||
# title (movie name, tv episode name, music song name)
|
# title (movie name, tv episode name, music song name)
|
||||||
self._media_summary = self.session.summary
|
self._media_summary = self.session.summary
|
||||||
self._media_title = self.session.title
|
self._media_title = self.session.title
|
||||||
# media type
|
# media type
|
||||||
self._set_media_type()
|
self._set_media_type()
|
||||||
self._app_name = (
|
if self.session.librarySectionID == LIVE_TV_SECTION:
|
||||||
self.session.section().title
|
self._app_name = "Live TV"
|
||||||
if self.session.section() is not None
|
else:
|
||||||
else ""
|
self._app_name = (
|
||||||
)
|
self.session.section().title
|
||||||
|
if self.session.section() is not None
|
||||||
|
else ""
|
||||||
|
)
|
||||||
self._set_media_image()
|
self._set_media_image()
|
||||||
else:
|
else:
|
||||||
self._session_type = None
|
self._session_type = None
|
||||||
@ -267,7 +275,10 @@ class PlexMediaPlayer(MediaPlayerEntity):
|
|||||||
self.media_content_type is MEDIA_TYPE_TVSHOW
|
self.media_content_type is MEDIA_TYPE_TVSHOW
|
||||||
and not self.plex_server.option_use_episode_art
|
and not self.plex_server.option_use_episode_art
|
||||||
):
|
):
|
||||||
thumb_url = self.session.url(self.session.grandparentThumb)
|
if self.session.librarySectionID == LIVE_TV_SECTION:
|
||||||
|
thumb_url = self.session.grandparentThumb
|
||||||
|
else:
|
||||||
|
thumb_url = self.session.url(self.session.grandparentThumb)
|
||||||
|
|
||||||
if thumb_url is None:
|
if thumb_url is None:
|
||||||
_LOGGER.debug(
|
_LOGGER.debug(
|
||||||
@ -301,7 +312,7 @@ class PlexMediaPlayer(MediaPlayerEntity):
|
|||||||
self._media_series_title = self.session.grandparentTitle
|
self._media_series_title = self.session.grandparentTitle
|
||||||
# episode number (00)
|
# episode number (00)
|
||||||
if self.session.index is not None:
|
if self.session.index is not None:
|
||||||
self._media_episode = str(self.session.index).zfill(2)
|
self._media_episode = self.session.index
|
||||||
|
|
||||||
elif self._session_type == "movie":
|
elif self._session_type == "movie":
|
||||||
self._media_content_type = MEDIA_TYPE_MOVIE
|
self._media_content_type = MEDIA_TYPE_MOVIE
|
||||||
|
@ -87,14 +87,19 @@ class PlexSensor(Entity):
|
|||||||
# "Supernatural (2005) - s01e13 - Route 666"
|
# "Supernatural (2005) - s01e13 - Route 666"
|
||||||
|
|
||||||
def sync_io_attributes(session):
|
def sync_io_attributes(session):
|
||||||
return (session.show(), session.seasonEpisode)
|
year = None
|
||||||
|
try:
|
||||||
|
year = session.show().year
|
||||||
|
except TypeError:
|
||||||
|
pass
|
||||||
|
return (year, session.seasonEpisode)
|
||||||
|
|
||||||
show, season_episode = await self.hass.async_add_executor_job(
|
year, season_episode = await self.hass.async_add_executor_job(
|
||||||
sync_io_attributes, sess
|
sync_io_attributes, sess
|
||||||
)
|
)
|
||||||
season_title = sess.grandparentTitle
|
season_title = sess.grandparentTitle
|
||||||
if show.year is not None:
|
if year is not None:
|
||||||
season_title += f" ({show.year!s})"
|
season_title += f" ({year!s})"
|
||||||
episode_title = sess.title
|
episode_title = sess.title
|
||||||
now_playing_title = (
|
now_playing_title = (
|
||||||
f"{season_title} - {season_episode} - {episode_title}"
|
f"{season_title} - {season_episode} - {episode_title}"
|
||||||
|
@ -249,6 +249,11 @@ class MockPlexSession:
|
|||||||
"""Mock the duration attribute."""
|
"""Mock the duration attribute."""
|
||||||
return 10000000
|
return 10000000
|
||||||
|
|
||||||
|
@property
|
||||||
|
def librarySectionID(self):
|
||||||
|
"""Mock the librarySectionID attribute."""
|
||||||
|
return 1
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def ratingKey(self):
|
def ratingKey(self):
|
||||||
"""Mock the ratingKey attribute."""
|
"""Mock the ratingKey attribute."""
|
||||||
|
Loading…
x
Reference in New Issue
Block a user