audio: Give the BassPlayer a uri property

With both setter and getter to change the playbin uri

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
Anna Schumaker 2021-09-03 11:58:48 -04:00
parent 574e49ef09
commit c2c6ac7890
4 changed files with 33 additions and 6 deletions

View File

@ -15,3 +15,14 @@ class BassPlayer(GObject.GObject):
@GObject.Property
def bus(self):
return self.playbin.get_bus()
@GObject.Property
def uri(self):
return self.playbin.get_property("uri")
@uri.setter
def uri(self, uri):
if uri:
self.playbin.set_property("uri", uri)
else:
self.playbin.set_state(Gst.State.READY)

View File

@ -44,12 +44,11 @@ class Player(bass.BassPlayer):
self.track = track
if track is not None:
settings.set("audio.trackid", track.trackid)
uri = track.filepath().absolute().as_uri()
self.playbin.set_property("uri", uri)
self.uri = track.filepath().absolute().as_uri()
self.emit("track-changed", prev, self.track)
def load_set_state(self, track, state):
self.playbin.set_state(Gst.State.READY)
self.uri = None
self.load_track(track)
if track is not None:
self.playbin.set_state(state)

View File

@ -1,9 +1,14 @@
# Copyright 2021 (c) Anna Schumaker.
import pathlib
import unittest
from gi.repository import GObject
from gi.repository import Gst
from . import bass
test_album = pathlib.Path("./data/Test Album/")
test_track = test_album / "01 - Test Track.ogg"
test_uri = test_track.absolute().as_uri()
class TestBassPlayer(unittest.TestCase):
def test_bass_player_init(self):
base = bass.BassPlayer()
@ -17,3 +22,15 @@ class TestBassPlayer(unittest.TestCase):
def test_bass_player_bus(self):
base = bass.BassPlayer()
self.assertIsInstance(base.bus, Gst.Bus)
def test_bass_player_uri(self):
base = bass.BassPlayer()
self.assertIsNone(base.get_property("uri"))
base.set_property("uri", test_uri)
self.assertEqual(base.get_property("uri"), test_uri)
base.playbin.set_state(Gst.State.PAUSED)
base.set_property("uri", None)
self.assertEqual(base.playbin.get_state(Gst.CLOCK_TIME_NONE)[1],
Gst.State.READY)

View File

@ -17,6 +17,7 @@ import unittest
main_context = GLib.main_context_default()
test_album = pathlib.Path("./data/Test Album/")
test_track = test_album / "01 - Test Track.ogg"
test_uri = test_track.absolute().as_uri()
class TestPlayer(unittest.TestCase):
@ -51,13 +52,12 @@ class TestPlayer(unittest.TestCase):
def test_player_load_track(self):
play = player.Player()
uri = test_track.absolute().as_uri()
play.connect("track-changed", self.on_track_changed)
self.assertEqual(play.playbin.get_property("uri"), None)
self.assertEqual(play.get_property("uri"), None)
play.load_track(self.track)
self.assertEqual(play.playbin.get_property("uri"), uri)
self.assertEqual(play.get_property("uri"), test_uri)
self.assertEqual(play.track, self.track)
self.assertEqual(settings.get_int("audio.trackid"), self.track.trackid)
self.assertEqual(play.get_state(), Gst.State.READY)