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:
Anna Schumaker 2019-04-12 13:42:52 -04:00
parent d025727f1f
commit 01c4988cce
2 changed files with 25 additions and 19 deletions

View File

@ -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

View File

@ -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)