Support for default media player volume

This commit is contained in:
Fabio Manganiello 2020-02-21 18:40:46 +01:00
parent 70fe2459de
commit a9dbda455f
7 changed files with 29 additions and 4 deletions

View file

@ -3,6 +3,8 @@ import functools
import os
import queue
import re
from typing import Optional, List, Dict, Union
import requests
import subprocess
import tempfile
@ -69,20 +71,23 @@ class MediaPlugin(Plugin):
_supported_media_types = ['file', 'torrent', 'youtube']
_default_search_timeout = 60 # 60 seconds
def __init__(self, media_dirs=None, download_dir=None, env=None,
def __init__(self,
media_dirs: Optional[List[str]] = None,
download_dir: Optional[str] = None,
env: Optional[Dict[str, str]] = None,
volume: Optional[Union[float, int]] = None,
*args, **kwargs):
"""
:param media_dirs: Directories that will be scanned for media files when
a search is performed (default: none)
:type media_dirs: list
:param download_dir: Directory where external resources/torrents will be
downloaded (default: ~/Downloads)
:type download_dir: str
:param env: Environment variables key-values to pass to the
player executable (e.g. DISPLAY, XDG_VTNR, PULSE_SINK etc.)
:type env: dict
:param volume: Default volume for the player (default: None, maximum volume).
"""
super().__init__(**kwargs)
@ -134,6 +139,7 @@ class MediaPlugin(Plugin):
os.makedirs(self.download_dir, exist_ok=True)
self.media_dirs.add(self.download_dir)
self.volume = volume
self._videos_queue = []
self._youtube_proc = None

View file

@ -318,6 +318,10 @@ class MediaChromecastPlugin(MediaPlugin):
mc.register_status_listener(self.SubtitlesAsyncHandler(mc, subtitle_id))
mc.block_until_active()
if self.volume:
self.set_volume(volume=self.volume, chromecast=chromecast)
return self.status(chromecast=chromecast)
@classmethod

View file

@ -173,6 +173,9 @@ class MediaKodiPlugin(MediaPlugin):
resource = resource[7:]
result = self._get_kodi().Player.Open(item={'file': resource})
if self.volume:
self.set_volume(volume=int(self.volume))
return self._build_result(result)
@action

View file

@ -268,6 +268,10 @@ class MediaMplayerPlugin(MediaPlugin):
self._exec('loadfile', resource, mplayer_args=mplayer_args)
self._post_event(MediaPlayEvent, resource=resource)
if self.volume:
self.set_volume(volume=self.volume)
return self.status()
@action

View file

@ -140,6 +140,9 @@ class MediaMpvPlugin(MediaPlugin):
resource = resource[7:]
self._player.play(resource)
if self.volume:
self.set_volume(volume=self.volume)
return self.status()
@action

View file

@ -82,6 +82,9 @@ class MediaOmxplayerPlugin(MediaPlugin):
self.logger.exception(e)
self._player.pause()
if self.volume:
self.set_volume(volume=self.volume)
self._player.play()
return self.status()

View file

@ -167,6 +167,8 @@ class MediaVlcPlugin(MediaPlugin):
self._player.video_set_subtitle_file(subtitles)
self._player.play()
if self.volume:
self.set_volume(volume=self.volume)
if fullscreen or self._default_fullscreen:
self.set_fullscreen(True)