forked from platypush/platypush
Enhanced get_default_media_plugin
to filter by video/audio plugins.
This commit is contained in:
parent
03c167d6b7
commit
e6e4396e49
2 changed files with 26 additions and 5 deletions
|
@ -28,6 +28,7 @@ if not is_defined('alarm'):
|
||||||
snooze_interval = Column(Integer, nullable=True)
|
snooze_interval = Column(Integer, nullable=True)
|
||||||
actions = Column(JSON, nullable=True)
|
actions = Column(JSON, nullable=True)
|
||||||
static = Column(Boolean, nullable=False, default=False)
|
static = Column(Boolean, nullable=False, default=False)
|
||||||
|
condition_type = Column(String, nullable=False)
|
||||||
|
|
||||||
__table_args__ = {'extend_existing': True}
|
__table_args__ = {'extend_existing': True}
|
||||||
__mapper_args__ = {
|
__mapper_args__ = {
|
||||||
|
|
|
@ -5,9 +5,17 @@ from platypush.context import get_plugin
|
||||||
from platypush.plugins.media import MediaPlugin
|
from platypush.plugins.media import MediaPlugin
|
||||||
|
|
||||||
|
|
||||||
def get_default_media_plugin() -> MediaPlugin:
|
audio_plugins = [
|
||||||
|
'sound',
|
||||||
|
'music.mpd',
|
||||||
|
]
|
||||||
|
|
||||||
|
|
||||||
|
def get_default_media_plugin(video: bool = False) -> MediaPlugin:
|
||||||
"""
|
"""
|
||||||
Get the default media plugin based on the current configuration.
|
Get the default media plugin based on the current configuration.
|
||||||
|
|
||||||
|
:param video: If True then the plugin must support video playback.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
enabled_plugins: List[MediaPlugin] = []
|
enabled_plugins: List[MediaPlugin] = []
|
||||||
|
@ -26,8 +34,20 @@ def get_default_media_plugin() -> MediaPlugin:
|
||||||
if local_plugins:
|
if local_plugins:
|
||||||
return local_plugins[0]
|
return local_plugins[0]
|
||||||
|
|
||||||
assert (
|
if enabled_plugins:
|
||||||
enabled_plugins
|
|
||||||
), f'No media plugin is enabled. Supported plugins: {MediaPlugin.supported_media_plugins}'
|
|
||||||
|
|
||||||
return enabled_plugins[0]
|
return enabled_plugins[0]
|
||||||
|
|
||||||
|
assert not video, (
|
||||||
|
'No media plugin with video support is enabled. '
|
||||||
|
f'Supported plugins: {MediaPlugin.supported_media_plugins}'
|
||||||
|
)
|
||||||
|
|
||||||
|
for plugin_name in audio_plugins:
|
||||||
|
try:
|
||||||
|
plugin = get_plugin(plugin_name)
|
||||||
|
if plugin and plugin_name in cfg and not cfg[plugin_name].get('disabled'):
|
||||||
|
return plugin
|
||||||
|
except Exception:
|
||||||
|
pass
|
||||||
|
|
||||||
|
raise AssertionError('No media plugin is enabled')
|
||||||
|
|
Loading…
Reference in a new issue