mirror of
https://github.com/home-assistant/core.git
synced 2025-07-25 22:27:07 +00:00
Merge pull request #1 from balloob/pychromecast-fixing-fixing
Update cast integration
This commit is contained in:
commit
b011d14653
@ -15,11 +15,13 @@ except ImportError:
|
|||||||
# We will throw error later
|
# We will throw error later
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
# ATTR_MEDIA_ALBUM, ATTR_MEDIA_IMAGE_URL,
|
||||||
|
# ATTR_MEDIA_TITLE, ATTR_MEDIA_ARTIST,
|
||||||
from homeassistant.components.media_player import (
|
from homeassistant.components.media_player import (
|
||||||
MediaPlayerDevice, STATE_NO_APP, ATTR_MEDIA_STATE,
|
MediaPlayerDevice, STATE_NO_APP, ATTR_MEDIA_STATE,
|
||||||
ATTR_MEDIA_CONTENT_ID, ATTR_MEDIA_TITLE, ATTR_MEDIA_ARTIST,
|
ATTR_MEDIA_CONTENT_ID, ATTR_MEDIA_DURATION, ATTR_MEDIA_VOLUME,
|
||||||
ATTR_MEDIA_ALBUM, ATTR_MEDIA_IMAGE_URL, ATTR_MEDIA_DURATION,
|
MEDIA_STATE_PLAYING, MEDIA_STATE_PAUSED, MEDIA_STATE_STOPPED,
|
||||||
ATTR_MEDIA_VOLUME, MEDIA_STATE_PLAYING, MEDIA_STATE_PAUSED, MEDIA_STATE_STOPPED)
|
MEDIA_STATE_UNKNOWN)
|
||||||
|
|
||||||
|
|
||||||
# pylint: disable=unused-argument
|
# pylint: disable=unused-argument
|
||||||
@ -70,53 +72,46 @@ class CastDevice(MediaPlayerDevice):
|
|||||||
@property
|
@property
|
||||||
def state(self):
|
def state(self):
|
||||||
""" Returns the state of the device. """
|
""" Returns the state of the device. """
|
||||||
status = self.cast.status
|
if self.cast.is_idle:
|
||||||
|
|
||||||
if self.cast.app_display_name:
|
|
||||||
return self.cast.app_display_name
|
|
||||||
else:
|
|
||||||
return STATE_NO_APP
|
return STATE_NO_APP
|
||||||
|
else:
|
||||||
|
return self.cast.app_display_name
|
||||||
|
|
||||||
|
@property
|
||||||
|
def media_state(self):
|
||||||
|
""" Returns the media state. """
|
||||||
|
media_controller = self.cast.media_controller
|
||||||
|
|
||||||
|
if media_controller.is_playing:
|
||||||
|
return MEDIA_STATE_PLAYING
|
||||||
|
elif media_controller.is_paused:
|
||||||
|
return MEDIA_STATE_PAUSED
|
||||||
|
elif media_controller.is_idle:
|
||||||
|
return MEDIA_STATE_STOPPED
|
||||||
|
else:
|
||||||
|
return MEDIA_STATE_UNKNOWN
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def state_attributes(self):
|
def state_attributes(self):
|
||||||
""" Returns the state attributes. """
|
""" Returns the state attributes. """
|
||||||
mc = self.cast.media_controller;
|
cast_status = self.cast.status
|
||||||
|
media_status = self.cast.media_status
|
||||||
|
|
||||||
if mc:
|
state_attr = {
|
||||||
state_attr = {}
|
ATTR_MEDIA_STATE: self.media_state,
|
||||||
|
'application_id': self.cast.app_id,
|
||||||
|
}
|
||||||
|
|
||||||
if mc.is_playing:
|
if cast_status:
|
||||||
state_attr[ATTR_MEDIA_STATE] = MEDIA_STATE_PLAYING
|
state_attr[ATTR_MEDIA_VOLUME] = cast_status.volume_level,
|
||||||
elif mc.is_paused:
|
|
||||||
state_attr[ATTR_MEDIA_STATE] = MEDIA_STATE_PAUSED
|
|
||||||
elif mc.is_idle:
|
|
||||||
state_attr[ATTR_MEDIA_STATE] = MEDIA_STATE_STOPPED
|
|
||||||
|
|
||||||
media_status = self.cast.status
|
|
||||||
|
|
||||||
if media_status:
|
if media_status:
|
||||||
|
if media_status.content_id:
|
||||||
|
state_attr[ATTR_MEDIA_CONTENT_ID] = media_status.content_id
|
||||||
|
|
||||||
""" These status properties seem not to be present anymore in pychromecast """
|
if media_status.duration:
|
||||||
#if ramp.content_id:
|
|
||||||
# state_attr[ATTR_MEDIA_CONTENT_ID] = mc.ramp.content_id
|
|
||||||
|
|
||||||
#if ramp.title:
|
|
||||||
# state_attr[ATTR_MEDIA_TITLE] = ramp.title
|
|
||||||
|
|
||||||
#if ramp.artist:
|
|
||||||
# state_attr[ATTR_MEDIA_ARTIST] = ramp.artist
|
|
||||||
|
|
||||||
#if ramp.album:
|
|
||||||
# state_attr[ATTR_MEDIA_ALBUM] = ramp.album
|
|
||||||
|
|
||||||
#if ramp.image_url:
|
|
||||||
# state_attr[ATTR_MEDIA_IMAGE_URL] = ramp.image_url
|
|
||||||
|
|
||||||
if hasattr(media_status, 'duration'):
|
|
||||||
state_attr[ATTR_MEDIA_DURATION] = media_status.duration
|
state_attr[ATTR_MEDIA_DURATION] = media_status.duration
|
||||||
|
|
||||||
state_attr[ATTR_MEDIA_VOLUME] = media_status.volume_level
|
|
||||||
|
|
||||||
return state_attr
|
return state_attr
|
||||||
|
|
||||||
def turn_off(self):
|
def turn_off(self):
|
||||||
@ -135,29 +130,22 @@ class CastDevice(MediaPlayerDevice):
|
|||||||
|
|
||||||
def media_play_pause(self):
|
def media_play_pause(self):
|
||||||
""" Service to send the chromecast the command for play/pause. """
|
""" Service to send the chromecast the command for play/pause. """
|
||||||
media_state = self.state_attributes[ATTR_MEDIA_STATE]
|
media_state = self.media_state
|
||||||
if media_state == MEDIA_STATE_STOPPED or media_state == MEDIA_STATE_PAUSED:
|
|
||||||
|
if media_state in (MEDIA_STATE_STOPPED, MEDIA_STATE_PAUSED):
|
||||||
self.cast.media_controller.play()
|
self.cast.media_controller.play()
|
||||||
elif media_state == MEDIA_STATE_PLAYING:
|
elif media_state == MEDIA_STATE_PLAYING:
|
||||||
self.cast.media_controller.pause()
|
self.cast.media_controller.pause()
|
||||||
|
|
||||||
def media_play(self):
|
def media_play(self):
|
||||||
""" Service to send the chromecast the command for play/pause. """
|
""" Service to send the chromecast the command for play/pause. """
|
||||||
if self.state_attributes[ATTR_MEDIA_STATE] == MEDIA_STATE_STOPPED:
|
if self.media_state in (MEDIA_STATE_STOPPED, MEDIA_STATE_PAUSED):
|
||||||
self.media_play_pause()
|
self.cast.media_controller.play()
|
||||||
|
|
||||||
def media_pause(self):
|
def media_pause(self):
|
||||||
""" Service to send the chromecast the command for play/pause. """
|
""" Service to send the chromecast the command for play/pause. """
|
||||||
if self.state_attributes[ATTR_MEDIA_STATE] == MEDIA_STATE_PLAYING:
|
if self.media_state == MEDIA_STATE_PLAYING:
|
||||||
self.media_play_pause()
|
self.cast.media_controller.pause()
|
||||||
|
|
||||||
""" This one seems not to be present anymore in pychromecast, needs porting or cleanup """
|
|
||||||
#def media_next_track(self):
|
|
||||||
# """ Service to send the chromecast the command for next track. """
|
|
||||||
# ramp = self.cast.get_protocol(pychromecast.PROTOCOL_RAMP)
|
|
||||||
|
|
||||||
# if ramp:
|
|
||||||
# ramp.next()
|
|
||||||
|
|
||||||
def play_youtube_video(self, video_id):
|
def play_youtube_video(self, video_id):
|
||||||
""" Plays specified video_id on the Chromecast's YouTube channel. """
|
""" Plays specified video_id on the Chromecast's YouTube channel. """
|
||||||
|
Loading…
x
Reference in New Issue
Block a user