From b3a6f857a218004641c94bed4d233f11fa5f07c7 Mon Sep 17 00:00:00 2001 From: Eddy Pedroni Date: Tue, 25 Feb 2025 17:49:15 +0100 Subject: Change backend to mpv --- solo-tool-project/src/solo_tool/player_mpv.py | 51 +++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 solo-tool-project/src/solo_tool/player_mpv.py (limited to 'solo-tool-project/src/solo_tool/player_mpv.py') diff --git a/solo-tool-project/src/solo_tool/player_mpv.py b/solo-tool-project/src/solo_tool/player_mpv.py new file mode 100644 index 0000000..28b78f3 --- /dev/null +++ b/solo-tool-project/src/solo_tool/player_mpv.py @@ -0,0 +1,51 @@ +import mpv + +class Player: + def __init__(self): + self._player = mpv.MPV() + self._player.loop = "inf" + self._player.observe_property("pause", lambda name, value: self._playingStateCallback()) + self._player.observe_property("volume", lambda name, value: self._volumeCallback()) + + self._playingStateCallback = self._dummyCallback + self._volumeCallback = self._dummyCallback + + def _dummyCallback(): + pass + + def play(self): + self._player.pause = False + + def pause(self): + self._player.pause = True + + def isPlaying(self): + return not self._player.pause + + def setPlaybackRate(self, rate): + self._player.speed = rate + + def getPlaybackRate(self): + return self._player.speed + + def setPlaybackPosition(self, position): + self._player.percent_pos = int(position * 100) + + def getPlaybackPosition(self): + return float(self._player.percent_pos or 0.0) / 100.0 + + def setPlaybackVolume(self, volume): + self._player.volume = int(volume * 100) + + def getPlaybackVolume(self): + return float(self._player.volume) / 100.0 + + def setCurrentSong(self, path): + self.pause() + self._player.play(path) + + def setPlayingStateChangedCallback(self, callback): + self._playingStateCallback = callback + + def setPlaybackVolumeChangedCallback(self, callback): + self._volumeCallback = callback -- cgit v1.2.3