Secure your code as it's written. Use Snyk Code to scan source code in minutes - no build needed - and fix issues immediately.
def test_state_detection(self):
"""Check that the state detection works as expected.
"""
self.assertUpdate([False, None, -1, None, None, None],
(constants.STATE_OFF, None, None))
self.assertUpdate([True, False, -1, None, None, None],
(constants.STATE_STANDBY, None, None))
self.assertUpdate([True, True, 1, "com.amazon.tv.launcher", None, None],
(constants.STATE_IDLE, "com.amazon.tv.launcher", ["com.amazon.tv.launcher"]))
# Amazon Video
self.assertUpdate([True, True, 1, constants.APP_AMAZON_VIDEO, 3, [constants.APP_AMAZON_VIDEO]],
(constants.STATE_PLAYING, constants.APP_AMAZON_VIDEO, [constants.APP_AMAZON_VIDEO]))
self.assertUpdate([True, True, 1, constants.APP_AMAZON_VIDEO, 2, [constants.APP_AMAZON_VIDEO]],
(constants.STATE_PAUSED, constants.APP_AMAZON_VIDEO, [constants.APP_AMAZON_VIDEO]))
self.assertUpdate([True, True, 1, constants.APP_AMAZON_VIDEO, 1, [constants.APP_AMAZON_VIDEO]],
(constants.STATE_IDLE, constants.APP_AMAZON_VIDEO, [constants.APP_AMAZON_VIDEO]))
# Amazon Video with custom state detection rules
self.ftv._state_detection_rules = {constants.APP_AMAZON_VIDEO: ['media_session_state']}
self.assertUpdate([True, True, 2, constants.APP_AMAZON_VIDEO, 2, [constants.APP_AMAZON_VIDEO]],
(constants.STATE_PAUSED, constants.APP_AMAZON_VIDEO, [constants.APP_AMAZON_VIDEO]))
'wake_lock_size': -1,
'media_session_state': None,
'current_app': None,
'audio_output_device': None,
'is_volume_muted': None,
'volume': None,
'running_apps': None}
STATE2 = (constants.STATE_STANDBY, None, None, None, None, None)
GET_PROPERTIES_OUTPUT3 = """110Wake Locks: size=2
com.amazon.tv.launcher
""" + STREAM_MUSIC_ON
GET_PROPERTIES_DICT3 = {'screen_on': True,
'awake': True,
'audio_state': constants.STATE_IDLE,
'wake_lock_size': 2,
'current_app': 'com.amazon.tv.launcher',
'media_session_state': None,
'audio_output_device': 'hmdi_arc',
'is_volume_muted': False,
'volume': 22,
'running_apps': None}
STATE3 = (constants.STATE_PLAYING, 'com.amazon.tv.launcher', ['com.amazon.tv.launcher'], 'hmdi_arc', False, (22 / 60.))
GET_PROPERTIES_OUTPUT3A = GET_PROPERTIES_OUTPUT3[:1]
GET_PROPERTIES_OUTPUT3B = GET_PROPERTIES_OUTPUT3[:2]
GET_PROPERTIES_OUTPUT3C = GET_PROPERTIES_OUTPUT3[:3]
GET_PROPERTIES_OUTPUT3D = GET_PROPERTIES_OUTPUT3.splitlines()[0]
GET_PROPERTIES_OUTPUT3E = '\n'.join(GET_PROPERTIES_OUTPUT3.splitlines()[:2])
GET_PROPERTIES_OUTPUT3F = '\n'.join(GET_PROPERTIES_OUTPUT3.splitlines()[:3])
GET_PROPERTIES_OUTPUT3G = '\n'.join(GET_PROPERTIES_OUTPUT3.splitlines()[:4])
self.assertUpdate([True, True, constants.STATE_IDLE, 6, constants.APP_VLC, 4, 'hmdi_arc', False, 30, None],
(constants.STATE_IDLE, constants.APP_VLC, [constants.APP_VLC], 'hmdi_arc', False, 0.5))
# VRV
self.assertUpdate([True, True, constants.STATE_IDLE, 2, constants.APP_VRV, 3, 'hmdi_arc', False, 30, None],
(constants.STATE_IDLE, constants.APP_VRV, [constants.APP_VRV], 'hmdi_arc', False, 0.5))
# YouTube
self.assertUpdate([True, True, constants.STATE_IDLE, 2, constants.APP_YOUTUBE, 2, 'hmdi_arc', False, 30, None],
(constants.STATE_PAUSED, constants.APP_YOUTUBE, [constants.APP_YOUTUBE], 'hmdi_arc', False, 0.5))
self.assertUpdate([True, True, constants.STATE_IDLE, 2, constants.APP_YOUTUBE, 3, 'hmdi_arc', False, 30, None],
(constants.STATE_PLAYING, constants.APP_YOUTUBE, [constants.APP_YOUTUBE], 'hmdi_arc', False, 0.5))
self.assertUpdate([True, True, constants.STATE_IDLE, 2, constants.APP_YOUTUBE, 4, 'hmdi_arc', False, 30, None],
(constants.STATE_IDLE, constants.APP_YOUTUBE, [constants.APP_YOUTUBE], 'hmdi_arc', False, 0.5))
# Unknown app
self.assertUpdate([True, True, constants.STATE_IDLE, 2, 'unknown', 2, 'hmdi_arc', False, 30, None],
(constants.STATE_PAUSED, 'unknown', ['unknown'], 'hmdi_arc', False, 0.5))
self.assertUpdate([True, True, constants.STATE_IDLE, 2, 'unknown', 3, 'hmdi_arc', False, 30, None],
(constants.STATE_PLAYING, 'unknown', ['unknown'], 'hmdi_arc', False, 0.5))
self.assertUpdate([True, True, constants.STATE_IDLE, 2, 'unknown', 4, 'hmdi_arc', False, 30, None],
(constants.STATE_IDLE, 'unknown', ['unknown'], 'hmdi_arc', False, 0.5))
self.assertUpdate([True, True, constants.STATE_PLAYING, 2, 'unknown', None, 'hmdi_arc', False, 30, None],
(constants.STATE_PLAYING, 'unknown', ['unknown'], 'hmdi_arc', False, 0.5))
self.assertUpdate([True, True, constants.STATE_IDLE, 1, 'unknown', None, 'hmdi_arc', False, 30, None],
@staticmethod
def schedule_update_ha_state():
pass
# =========================================================================== #
# #
# media_player.py #
# #
# =========================================================================== #
# Translate from `AndroidTV` / `FireTV` reported state to HA state.
ANDROIDTV_STATES = {
"off": STATE_OFF,
"idle": STATE_IDLE,
"standby": STATE_STANDBY,
"playing": STATE_PLAYING,
"paused": STATE_PAUSED,
}
def adb_decorator(override_available=False):
"""Wrap ADB methods and catch exceptions.
Allows for overriding the available status of the ADB connection via the
`override_available` parameter.
"""
def _adb_decorator(func):
"""Wrap the provided ADB method and catch exceptions."""
@functools.wraps(func)
'media_session_state': None,
'running_apps': None}
STATE2 = (constants.STATE_STANDBY, None, None)
GET_PROPERTIES_OUTPUT3 = """11Wake Locks: size=2
com.amazon.tv.launcher
u0_a2 17243 197 998628 24932 ffffffff 00000000 S com.amazon.device.controllermanager
u0_a2 17374 197 995368 20764 ffffffff 00000000 S com.amazon.device.controllermanager:BluetoothReceiver"""
GET_PROPERTIES_DICT3 = {'screen_on': True,
'awake': True,
'wake_lock_size': 2,
'current_app': 'com.amazon.tv.launcher',
'media_session_state': None,
'running_apps': ['com.amazon.device.controllermanager', 'com.amazon.device.controllermanager:BluetoothReceiver']}
STATE3 = (constants.STATE_IDLE, 'com.amazon.tv.launcher', ['com.amazon.device.controllermanager', 'com.amazon.device.controllermanager:BluetoothReceiver'])
GET_PROPERTIES_OUTPUT3A = GET_PROPERTIES_OUTPUT3[0]
GET_PROPERTIES_OUTPUT3B = GET_PROPERTIES_OUTPUT3[:2]
GET_PROPERTIES_OUTPUT3C = GET_PROPERTIES_OUTPUT3.splitlines()[0]
GET_PROPERTIES_OUTPUT3D = '\n'.join(GET_PROPERTIES_OUTPUT3.splitlines()[:2])
GET_PROPERTIES_OUTPUT3E = '\n'.join(GET_PROPERTIES_OUTPUT3.splitlines()[:3])
GET_PROPERTIES_DICT3A = {'screen_on': True,
'awake': False,
'wake_lock_size': -1,
'current_app': None,
'media_session_state': None,
'running_apps': None}
GET_PROPERTIES_DICT3B = {'screen_on': True,
'awake': True,
'wake_lock_size': -1,
elif current_app == constants.APP_WAIPU_TV:
if wake_lock_size == 2:
state = constants.STATE_PAUSED
elif wake_lock_size == 3:
state = constants.STATE_PLAYING
else:
state = constants.STATE_IDLE
# Get the state from `media_session_state`
elif media_session_state:
if media_session_state == 2:
state = constants.STATE_PAUSED
elif media_session_state == 3:
state = constants.STATE_PLAYING
else:
state = constants.STATE_IDLE
# Get the state from `wake_lock_size`
else:
if wake_lock_size == 1:
state = constants.STATE_PLAYING
else:
state = constants.STATE_PAUSED
return state, current_app, running_apps
elif media_session_state == 3:
state = constants.STATE_PLAYING
else:
state = constants.STATE_IDLE
# Get the state from `media_session_state`
elif media_session_state:
if media_session_state == 2:
state = constants.STATE_PAUSED
elif media_session_state == 3:
state = constants.STATE_PLAYING
else:
state = constants.STATE_IDLE
# Get the state from `audio_state`
elif audio_state != constants.STATE_IDLE:
state = audio_state
# Get the state from `wake_lock_size`
else:
if wake_lock_size == 1:
state = constants.STATE_PAUSED
elif wake_lock_size == 2:
state = constants.STATE_PLAYING
else:
state = constants.STATE_IDLE
return state, current_app, running_apps, audio_output_device, is_volume_muted, volume_level
if media_session_state == 3:
if wake_lock_size == 1:
state = constants.STATE_PAUSED
else:
state = constants.STATE_PLAYING
else:
state = constants.STATE_IDLE
# TVheadend
elif current_app == constants.APP_TVHEADEND:
if wake_lock_size == 5:
state = constants.STATE_PAUSED
elif wake_lock_size == 6:
state = constants.STATE_PLAYING
else:
state = constants.STATE_IDLE
# VLC
elif current_app == constants.APP_VLC:
if media_session_state == 2:
state = constants.STATE_PAUSED
elif media_session_state == 3:
state = constants.STATE_PLAYING
else:
state = constants.STATE_IDLE
# VRV
elif current_app == constants.APP_VRV:
state = audio_state
# YouTube
elif current_app == constants.APP_YOUTUBE: