aboutsummaryrefslogtreecommitdiffstats
path: root/solo-tool-project/src/solo_tool/player_mpv.py
diff options
context:
space:
mode:
authorEddy Pedroni <epedroni@pm.me>2025-02-25 17:49:15 +0100
committerEddy Pedroni <epedroni@pm.me>2025-02-25 17:49:15 +0100
commitb3a6f857a218004641c94bed4d233f11fa5f07c7 (patch)
tree75171ddd3db3d4b0e24750f736396320d1b3fd57 /solo-tool-project/src/solo_tool/player_mpv.py
parentb93717904ce75c6fc202528d9cf87eaaf3e449e6 (diff)
Change backend to mpv
Diffstat (limited to 'solo-tool-project/src/solo_tool/player_mpv.py')
-rw-r--r--solo-tool-project/src/solo_tool/player_mpv.py51
1 files changed, 51 insertions, 0 deletions
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