aboutsummaryrefslogtreecommitdiffstats
path: root/solo-tool-project/src/solo_tool/player_vlc.py
diff options
context:
space:
mode:
Diffstat (limited to 'solo-tool-project/src/solo_tool/player_vlc.py')
-rw-r--r--solo-tool-project/src/solo_tool/player_vlc.py55
1 files changed, 55 insertions, 0 deletions
diff --git a/solo-tool-project/src/solo_tool/player_vlc.py b/solo-tool-project/src/solo_tool/player_vlc.py
new file mode 100644
index 0000000..283102e
--- /dev/null
+++ b/solo-tool-project/src/solo_tool/player_vlc.py
@@ -0,0 +1,55 @@
+import vlc
+
+class Player:
+ def __init__(self):
+ self._player = vlc.MediaPlayer()
+
+ def play(self):
+ self._player.play()
+
+ def stop(self):
+ self._player.stop()
+
+ def pause(self):
+ self._player.pause()
+
+ def isPlaying(self):
+ playing = self._player.is_playing() == 1
+ return playing
+
+ def setPlaybackRate(self, rate):
+ self._player.set_rate(rate)
+
+ def getPlaybackRate(self):
+ return self._player.get_rate()
+
+ def setPlaybackPosition(self, position):
+ self._player.set_position(position)
+
+ def getPlaybackPosition(self):
+ return self._player.get_position()
+
+ def setPlaybackVolume(self, volume):
+ self._player.audio_set_volume(int(volume * 100))
+
+ def getPlaybackVolume(self):
+ return self._player.audio_get_volume() / 100.0
+
+ def setCurrentSong(self, path):
+ self._player.stop()
+ media = vlc.Media(path)
+ self._player.set_media(media)
+
+ def setPlayingStateChangedCallback(self, callback):
+ events = [
+ vlc.EventType.MediaPlayerStopped,
+ vlc.EventType.MediaPlayerPlaying,
+ vlc.EventType.MediaPlayerPaused
+ ]
+ manager = self._player.event_manager()
+ for e in events:
+ manager.event_attach(e, callback)
+
+ def setPlaybackVolumeChangedCallback(self, callback):
+ manager = self._player.event_manager()
+ manager.event_attach(vlc.EventType.MediaPlayerAudioVolume, callback)