Skip to content

Commit d42f0a3

Browse files
committed
simple vlc timer
1 parent bda0b6a commit d42f0a3

File tree

2 files changed

+49
-1
lines changed

2 files changed

+49
-1
lines changed

demosys/timers/music.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
try:
66
from pygame import mixer
77
except ImportError:
8-
print("pygame is needed for audio playback")
8+
print("pygame is needed for timer: MusicTimer")
99

1010

1111
class MusicTimer(BaseTimer):

demosys/timers/vlc.py

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
from demosys.conf import settings
2+
from .base import BaseTimer
3+
4+
try:
5+
import vlc
6+
except ImportError:
7+
print("python-vlc is needed for timer: VLCTimer")
8+
9+
10+
class VLCTimer(BaseTimer):
11+
"""Timer based on music"""
12+
def __init__(self, **kwargs):
13+
self.player = vlc.MediaPlayer(settings.MUSIC)
14+
self.paused = True
15+
self.pause_time = 0
16+
self.initialized = False
17+
super().__init__(**kwargs)
18+
19+
def start(self):
20+
"""Start the timer and music"""
21+
self.player.play()
22+
self.paused = False
23+
24+
def pause(self):
25+
self.pause_time = self.get_time()
26+
self.paused = True
27+
self.player.pause()
28+
29+
def toggle_pause(self):
30+
"""Toggle pause mode"""
31+
if self.paused:
32+
self.start()
33+
else:
34+
self.pause()
35+
36+
def stop(self):
37+
"""Stop the music and the timer"""
38+
self.player.stop()
39+
return self.get_time()
40+
41+
def get_time(self):
42+
"""Get the current time in seconds"""
43+
# Hack around inaccuracy in mixer
44+
if self.paused:
45+
return self.pause_time
46+
47+
time = self.player.get_time() / 1000.0
48+
return time

0 commit comments

Comments
 (0)