rind: Make a function for converting seconds into a time string
We need to do this in a couple of different places, so let's make it easier to do the conversion manually. Additionally, the datetime module was having some trouble handling times over one hour. The new code should handle it just fine, though. Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
parent
d025727f1f
commit
01c4988cce
12
rind/gst.py
12
rind/gst.py
|
@ -1,7 +1,6 @@
|
|||
# Copyright 2019 (c) Anna Schumaker.
|
||||
from . import gtk
|
||||
import curds
|
||||
import datetime
|
||||
import gi
|
||||
import re
|
||||
import sys
|
||||
|
@ -213,12 +212,13 @@ class EmmentalAudio:
|
|||
self.pause_changed(state)
|
||||
curds.notify.notify("state-changed", state)
|
||||
|
||||
def update_progress(self):
|
||||
(p_m, p_s) = divmod(int(self.position()), 60)
|
||||
(d_m, d_s) = divmod(int(self.duration()) - int(self.position()), 60)
|
||||
def timestr(self, sec):
|
||||
(m, s) = divmod(round(sec), 60)
|
||||
return f"{m:02}:{s:02}"
|
||||
|
||||
Position.set_text(datetime.time(0, p_m, p_s).strftime("%M:%S"))
|
||||
Duration.set_text(datetime.time(0, d_m, d_s).strftime("-%M:%S"))
|
||||
def update_progress(self):
|
||||
Position.set_text(self.timestr(self.position()))
|
||||
Duration.set_text(self.timestr(self.duration() - self.position()))
|
||||
Adjustment.set_value(self.progress() * 100)
|
||||
return GLib.SOURCE_CONTINUE
|
||||
|
||||
|
|
|
@ -91,7 +91,7 @@ class TestGst(unittest.TestCase):
|
|||
self.assertTrue( gst.PlayButton.is_visible())
|
||||
self.assertEqual(gst.Adjustment.get_value(), 0.0)
|
||||
self.assertEqual(gst.Position.get_text(), "00:00")
|
||||
self.assertEqual(gst.Duration.get_text(), "-00:00")
|
||||
self.assertEqual(gst.Duration.get_text(), "00:00")
|
||||
self.assertFalse(gst.ProgScale.get_show_fill_level())
|
||||
self.assertEqual(gst.ProgScale.get_fill_level(), 100.0)
|
||||
self.assertEqual(gst.Volume.get_value(), 100)
|
||||
|
@ -111,12 +111,18 @@ class TestGst(unittest.TestCase):
|
|||
self.audio.seek(value=20)
|
||||
self.assertEqual(gst.Adjustment.get_value(), 0.0)
|
||||
self.assertEqual(gst.Position.get_text(), "00:00")
|
||||
self.assertEqual(gst.Duration.get_text(), "-00:00")
|
||||
self.assertEqual(gst.Duration.get_text(), "00:00")
|
||||
|
||||
self.assertEqual(self.audio.position(), 0)
|
||||
self.assertEqual(self.audio.duration(), 0)
|
||||
self.assertEqual(self.audio.progress(), 0)
|
||||
|
||||
def test_gst_timestr(self):
|
||||
self.assertEqual(self.audio.timestr( 2), "00:02")
|
||||
self.assertEqual(self.audio.timestr( 42), "00:42")
|
||||
self.assertEqual(self.audio.timestr( 162), "02:42")
|
||||
self.assertEqual(self.audio.timestr(2562), "42:42")
|
||||
|
||||
def test_gst_load(self):
|
||||
track = curds.Track.lookup(os.path.join(test_album, "10 - Test Track 10.ogg"))
|
||||
|
||||
|
@ -130,7 +136,7 @@ class TestGst(unittest.TestCase):
|
|||
self.assertEqual( self.audio.duration(), 10.0)
|
||||
|
||||
self.assertEqual(gst.Position.get_text(), "00:00")
|
||||
self.assertEqual(gst.Duration.get_text(), "-00:10")
|
||||
self.assertEqual(gst.Duration.get_text(), "00:10")
|
||||
|
||||
self.assertEqual(gst.Title.get_text(), track['title'])
|
||||
self.assertEqual(gst.Artist.get_text(), "by " + track["artist"])
|
||||
|
@ -322,32 +328,32 @@ class TestGst(unittest.TestCase):
|
|||
gtk.main_loop(delay=0.1)
|
||||
self.assertEqual(self.audio.duration(), 10.0)
|
||||
self.assertEqual(self.audio.position(), 5.0)
|
||||
self.assertEqual(gst.Position.get_text(), "00:05")
|
||||
self.assertEqual(gst.Duration.get_text(), "-00:05")
|
||||
self.assertEqual(gst.Position.get_text(), "00:05")
|
||||
self.assertEqual(gst.Duration.get_text(), "00:05")
|
||||
|
||||
self.audio.seek_step(step=2 * Gst.SECOND)
|
||||
gtk.main_loop(delay=0.1)
|
||||
self.assertEqual(self.audio.position(), 7.0)
|
||||
self.assertEqual(gst.Position.get_text(), "00:07")
|
||||
self.assertEqual(gst.Duration.get_text(), "-00:03")
|
||||
self.assertEqual(gst.Position.get_text(), "00:07")
|
||||
self.assertEqual(gst.Duration.get_text(), "00:03")
|
||||
|
||||
self.audio.seek_step(step=-4*Gst.SECOND)
|
||||
gtk.main_loop(delay=0.1)
|
||||
self.assertEqual(self.audio.position(), 3.0)
|
||||
self.assertEqual(gst.Position.get_text(), "00:03")
|
||||
self.assertEqual(gst.Duration.get_text(), "-00:07")
|
||||
self.assertEqual(gst.Position.get_text(), "00:03")
|
||||
self.assertEqual(gst.Duration.get_text(), "00:07")
|
||||
|
||||
self.audio.seek_step(step=-4*Gst.SECOND)
|
||||
gtk.main_loop(delay=0.1)
|
||||
self.assertEqual(self.audio.position(), 0.0)
|
||||
self.assertEqual(gst.Position.get_text(), "00:00")
|
||||
self.assertEqual(gst.Duration.get_text(), "-00:10")
|
||||
self.assertEqual(gst.Position.get_text(), "00:00")
|
||||
self.assertEqual(gst.Duration.get_text(), "00:10")
|
||||
|
||||
self.audio.seek_step(step=11*Gst.SECOND)
|
||||
gtk.main_loop(delay=0.1)
|
||||
self.assertEqual(self.audio.position(), 10.0)
|
||||
self.assertEqual(gst.Position.get_text(), "00:10")
|
||||
self.assertEqual(gst.Duration.get_text(), "-00:00")
|
||||
self.assertEqual(gst.Position.get_text(), "00:10")
|
||||
self.assertEqual(gst.Duration.get_text(), "00:00")
|
||||
|
||||
def test_gst_volume(self):
|
||||
self.assertAlmostEqual(self.audio.get_property("volume"), 1.0)
|
||||
|
|
Loading…
Reference in New Issue