Added custom mpv options

This commit is contained in:
Christoph Stahl 2024-10-06 02:24:19 +02:00
parent 73ab2896f9
commit 9279a6a5a2
4 changed files with 13 additions and 4 deletions

View file

@ -66,6 +66,7 @@ def default_config() -> dict[str, Optional[int | str]]:
"last_song": None, "last_song": None,
"waiting_room_policy": None, "waiting_room_policy": None,
"key": None, "key": None,
"mpv_options": "",
} }
@ -254,6 +255,7 @@ async def preview(entry: Entry) -> None:
"--sub-pos=50", "--sub-pos=50",
"--sub-file=-", "--sub-file=-",
"--fullscreen", "--fullscreen",
state.config["mpv_options"],
stdin=asyncio.subprocess.PIPE, stdin=asyncio.subprocess.PIPE,
stdout=asyncio.subprocess.PIPE, stdout=asyncio.subprocess.PIPE,
stderr=asyncio.subprocess.PIPE, stderr=asyncio.subprocess.PIPE,
@ -290,7 +292,7 @@ async def handle_play(data: dict[str, Any]) -> None:
state.current_source = sources[entry.source] state.current_source = sources[entry.source]
if state.config["preview_duration"] > 0: if state.config["preview_duration"] > 0:
await preview(entry) await preview(entry)
await sources[entry.source].play(entry) await sources[entry.source].play(entry, state.config["mpv_options"])
except Exception: # pylint: disable=broad-except except Exception: # pylint: disable=broad-except
print_exc() print_exc()
state.current_source = None state.current_source = None

View file

@ -298,6 +298,7 @@ class GeneralConfig(OptionFrame):
self.add_string_option( self.add_string_option(
"key", "Key for server (if necessary)", config["key"], is_password=True "key", "Key for server (if necessary)", config["key"], is_password=True
) )
self.add_string_option("mpv_options", "Additional MPV Arguments", config["mpv_options"])
def get_config(self) -> dict[str, Any]: def get_config(self) -> dict[str, Any]:
config = super().get_config() config = super().get_config()

View file

@ -260,7 +260,7 @@ class Source(ABC):
self.downloaded_files[entry.ident].ready.set() self.downloaded_files[entry.ident].ready.set()
async def play(self, entry: Entry) -> None: async def play(self, entry: Entry, mpv_options: str) -> None:
""" """
Play the entry. Play the entry.
@ -269,6 +269,8 @@ class Source(ABC):
:param entry: The entry to play :param entry: The entry to play
:type entry: Entry :type entry: Entry
:param mpv_options: Extra options for the mpv player
:type mpv_options: str
:rtype: None :rtype: None
""" """
await self.ensure_playable(entry) await self.ensure_playable(entry)
@ -287,6 +289,7 @@ class Source(ABC):
self.downloaded_files[entry.ident].video, self.downloaded_files[entry.ident].video,
self.downloaded_files[entry.ident].audio, self.downloaded_files[entry.ident].audio,
*self.extra_mpv_arguments, *self.extra_mpv_arguments,
mpv_options,
) )
await self.player.wait() await self.player.wait()
self.player = None self.player = None

View file

@ -229,7 +229,7 @@ class YoutubeSource(Source):
""" """
return {"channels": self.channels} return {"channels": self.channels}
async def play(self, entry: Entry) -> None: async def play(self, entry: Entry, mpv_options: str) -> None:
""" """
Play the given entry. Play the given entry.
@ -240,6 +240,8 @@ class YoutubeSource(Source):
:param entry: The entry to play. :param entry: The entry to play.
:type entry: Entry :type entry: Entry
:param mpv_options: The options to pass to ``mpv``.
:type mpv_options: str
:rtype: None :rtype: None
""" """
if self.start_streaming and not self.downloaded_files[entry.ident].complete: if self.start_streaming and not self.downloaded_files[entry.ident].complete:
@ -249,10 +251,11 @@ class YoutubeSource(Source):
"--script-opts=ytdl_hook-ytdl_path=yt-dlp,ytdl_hook-exclude='%.pls$'", "--script-opts=ytdl_hook-ytdl_path=yt-dlp,ytdl_hook-exclude='%.pls$'",
f"--ytdl-format={self.formatstring}", f"--ytdl-format={self.formatstring}",
"--fullscreen", "--fullscreen",
mpv_options,
) )
await self.player.wait() await self.player.wait()
else: else:
await super().play(entry) await super().play(entry, mpv_options)
async def get_entry(self, performer: str, ident: str) -> Optional[Entry]: async def get_entry(self, performer: str, ident: str) -> Optional[Entry]:
""" """