mirror of
https://github.com/home-assistant/core.git
synced 2025-07-16 09:47:13 +00:00
Add demo TV show player
This commit is contained in:
parent
5eaf3d40ad
commit
bacff3de8d
@ -59,7 +59,7 @@ SUPPORT_YOUTUBE = 64
|
|||||||
SUPPORT_TURN_ON = 128
|
SUPPORT_TURN_ON = 128
|
||||||
SUPPORT_TURN_OFF = 256
|
SUPPORT_TURN_OFF = 256
|
||||||
|
|
||||||
YOUTUBE_COVER_URL_FORMAT = 'http://img.youtube.com/vi/{}/1.jpg'
|
YOUTUBE_COVER_URL_FORMAT = 'https://img.youtube.com/vi/{}/1.jpg'
|
||||||
|
|
||||||
SERVICE_TO_METHOD = {
|
SERVICE_TO_METHOD = {
|
||||||
SERVICE_TURN_ON: 'turn_on',
|
SERVICE_TURN_ON: 'turn_on',
|
||||||
|
@ -10,7 +10,7 @@ from homeassistant.const import (
|
|||||||
|
|
||||||
from homeassistant.components.media_player import (
|
from homeassistant.components.media_player import (
|
||||||
MediaPlayerDevice, YOUTUBE_COVER_URL_FORMAT,
|
MediaPlayerDevice, YOUTUBE_COVER_URL_FORMAT,
|
||||||
MEDIA_TYPE_VIDEO, MEDIA_TYPE_MUSIC,
|
MEDIA_TYPE_VIDEO, MEDIA_TYPE_MUSIC, MEDIA_TYPE_TVSHOW,
|
||||||
SUPPORT_PAUSE, SUPPORT_VOLUME_SET, SUPPORT_VOLUME_MUTE, SUPPORT_YOUTUBE,
|
SUPPORT_PAUSE, SUPPORT_VOLUME_SET, SUPPORT_VOLUME_MUTE, SUPPORT_YOUTUBE,
|
||||||
SUPPORT_TURN_ON, SUPPORT_TURN_OFF, SUPPORT_PREVIOUS_TRACK,
|
SUPPORT_TURN_ON, SUPPORT_TURN_OFF, SUPPORT_PREVIOUS_TRACK,
|
||||||
SUPPORT_NEXT_TRACK)
|
SUPPORT_NEXT_TRACK)
|
||||||
@ -24,7 +24,7 @@ def setup_platform(hass, config, add_devices, discovery_info=None):
|
|||||||
'Living Room', 'eyU3bRy2x44',
|
'Living Room', 'eyU3bRy2x44',
|
||||||
'♥♥ The Best Fireplace Video (3 hours)'),
|
'♥♥ The Best Fireplace Video (3 hours)'),
|
||||||
DemoYoutubePlayer('Bedroom', 'kxopViU98Xo', 'Epic sax guy 10 hours'),
|
DemoYoutubePlayer('Bedroom', 'kxopViU98Xo', 'Epic sax guy 10 hours'),
|
||||||
DemoMusicPlayer(),
|
DemoMusicPlayer(), DemoTVShowPlayer(),
|
||||||
])
|
])
|
||||||
|
|
||||||
|
|
||||||
@ -37,6 +37,11 @@ MUSIC_PLAYER_SUPPORT = \
|
|||||||
SUPPORT_TURN_ON | SUPPORT_TURN_OFF | SUPPORT_PREVIOUS_TRACK | \
|
SUPPORT_TURN_ON | SUPPORT_TURN_OFF | SUPPORT_PREVIOUS_TRACK | \
|
||||||
SUPPORT_NEXT_TRACK
|
SUPPORT_NEXT_TRACK
|
||||||
|
|
||||||
|
NETFLIX_PLAYER_SUPPORT = \
|
||||||
|
SUPPORT_PAUSE | SUPPORT_VOLUME_SET | SUPPORT_VOLUME_MUTE | \
|
||||||
|
SUPPORT_TURN_ON | SUPPORT_TURN_OFF | SUPPORT_PREVIOUS_TRACK | \
|
||||||
|
SUPPORT_NEXT_TRACK
|
||||||
|
|
||||||
|
|
||||||
class AbstractDemoPlayer(MediaPlayerDevice):
|
class AbstractDemoPlayer(MediaPlayerDevice):
|
||||||
""" Base class for demo media players. """
|
""" Base class for demo media players. """
|
||||||
@ -202,7 +207,7 @@ class DemoMusicPlayer(AbstractDemoPlayer):
|
|||||||
@property
|
@property
|
||||||
def media_image_url(self):
|
def media_image_url(self):
|
||||||
""" Image url of current playing media. """
|
""" Image url of current playing media. """
|
||||||
return 'http://graph.facebook.com/107771475912710/picture'
|
return 'https://graph.facebook.com/107771475912710/picture'
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def media_title(self):
|
def media_title(self):
|
||||||
@ -240,3 +245,76 @@ class DemoMusicPlayer(AbstractDemoPlayer):
|
|||||||
if self._cur_track < len(self.tracks)-1:
|
if self._cur_track < len(self.tracks)-1:
|
||||||
self._cur_track += 1
|
self._cur_track += 1
|
||||||
self.update_ha_state()
|
self.update_ha_state()
|
||||||
|
|
||||||
|
|
||||||
|
class DemoTVShowPlayer(AbstractDemoPlayer):
|
||||||
|
""" A Demo media player that only supports YouTube. """
|
||||||
|
# We only implement the methods that we support
|
||||||
|
# pylint: disable=abstract-method
|
||||||
|
|
||||||
|
def __init__(self):
|
||||||
|
super().__init__('Lounge room')
|
||||||
|
self._cur_episode = 1
|
||||||
|
self._episode_count = 13
|
||||||
|
|
||||||
|
@property
|
||||||
|
def media_content_id(self):
|
||||||
|
""" Content ID of current playing media. """
|
||||||
|
return 'house-of-cards-1'
|
||||||
|
|
||||||
|
@property
|
||||||
|
def media_content_type(self):
|
||||||
|
""" Content type of current playing media. """
|
||||||
|
return MEDIA_TYPE_TVSHOW
|
||||||
|
|
||||||
|
@property
|
||||||
|
def media_duration(self):
|
||||||
|
""" Duration of current playing media in seconds. """
|
||||||
|
return 3600
|
||||||
|
|
||||||
|
@property
|
||||||
|
def media_image_url(self):
|
||||||
|
""" Image url of current playing media. """
|
||||||
|
return 'https://graph.facebook.com/HouseofCards/picture'
|
||||||
|
|
||||||
|
@property
|
||||||
|
def media_title(self):
|
||||||
|
""" Title of current playing media. """
|
||||||
|
return 'Chapter {}'.format(self._cur_episode)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def media_series_title(self):
|
||||||
|
""" Series title of current playing media. (TV Show only)"""
|
||||||
|
return 'House of Cards'
|
||||||
|
|
||||||
|
@property
|
||||||
|
def media_season(self):
|
||||||
|
""" Season of current playing media. (TV Show only) """
|
||||||
|
return 1
|
||||||
|
|
||||||
|
@property
|
||||||
|
def media_episode(self):
|
||||||
|
""" Episode of current playing media. (TV Show only) """
|
||||||
|
return self._cur_episode
|
||||||
|
|
||||||
|
@property
|
||||||
|
def app_name(self):
|
||||||
|
""" Current running app. """
|
||||||
|
return "Netflix"
|
||||||
|
|
||||||
|
@property
|
||||||
|
def supported_media_commands(self):
|
||||||
|
""" Flags of media commands that are supported. """
|
||||||
|
return NETFLIX_PLAYER_SUPPORT
|
||||||
|
|
||||||
|
def media_previous_track(self):
|
||||||
|
""" Send previous track command. """
|
||||||
|
if self._cur_episode > 1:
|
||||||
|
self._cur_episode -= 1
|
||||||
|
self.update_ha_state()
|
||||||
|
|
||||||
|
def media_next_track(self):
|
||||||
|
""" Send next track command. """
|
||||||
|
if self._cur_episode < self._episode_count:
|
||||||
|
self._cur_episode += 1
|
||||||
|
self.update_ha_state()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user