From 39794c083078e02d181ea29487c2e42ba43c0be0 Mon Sep 17 00:00:00 2001 From: Anna Schumaker Date: Mon, 6 Sep 2021 13:12:40 -0400 Subject: [PATCH] audio: Move play_track() out of the Player Signed-off-by: Anna Schumaker --- audio/__init__.py | 9 +++++++++ audio/player.py | 10 +++------- audio/test_audio.py | 14 ++++++++++++++ audio/test_player.py | 1 - playlist/__init__.py | 2 +- 5 files changed, 27 insertions(+), 9 deletions(-) diff --git a/audio/__init__.py b/audio/__init__.py index 8976980..06be3e0 100644 --- a/audio/__init__.py +++ b/audio/__init__.py @@ -20,3 +20,12 @@ def NowPlaying(): def SeekControl(): return scale.ScaleButtonBox(scale.SeekScale(Player)) + + +def play_track(track): + if track == Player.track: + return False + Player.uri = None + Player.load_track(track) + Player.playing = True + return True diff --git a/audio/player.py b/audio/player.py index 96e0b2e..3d3d2f7 100644 --- a/audio/player.py +++ b/audio/player.py @@ -65,14 +65,10 @@ class Player(bass.BassPlayer): def pause(self): self.playing = False def playpause(self, *args): self.playing = not self.playing - def play_track(self, track): - if track == self.track: - return False - self.load_set_state(track, Gst.State.PLAYING) - return True - def previous(self, *args): - self.play_track(tagdb.Stack.previous()) + self.uri = None + self.load_track(tagdb.Stack.previous()) + self.playing = True @GObject.Signal(arg_types=(tagdb.track.Track, tagdb.track.Track)) def track_changed(self, prev, new): diff --git a/audio/test_audio.py b/audio/test_audio.py index dc1305c..848da98 100644 --- a/audio/test_audio.py +++ b/audio/test_audio.py @@ -1,11 +1,25 @@ # Copyright 2021 (c) Anna Schumaker. import audio +import pathlib +import tagdb import unittest +test_album = pathlib.Path("./data/Test Album/") + class TestAudio(unittest.TestCase): def test_audio_init(self): self.assertIsInstance(audio.Player, audio.player.Player) + def test_audio_play_track(self): + lib = tagdb.Library.add(test_album) + lib.scan().join() + track = [ t for t in lib.tracks if t.tracknumber == 1 ][0] + + self.assertTrue(audio.play_track(track)) + self.assertTrue(audio.Player.playing) + self.assertFalse(audio.play_track(track)) + audio.Player.playing = False + def test_audio_widgets(self): seeker = audio.SeekControl() diff --git a/audio/test_player.py b/audio/test_player.py index 0b7c533..c6536fa 100644 --- a/audio/test_player.py +++ b/audio/test_player.py @@ -59,7 +59,6 @@ class TestPlayer(unittest.TestCase): self.assertEqual(settings.get_int("audio.trackid"), self.track.trackid) self.assertEqual(play.get_state(), Gst.State.READY) self.assertEqual(self.changed, (None, self.track) ) - self.assertFalse(play.play_track(self.track)) tagdb.tags.User["Previous"].tracks.clear() play2 = player.Player() diff --git a/playlist/__init__.py b/playlist/__init__.py index 48634fb..ac7acec 100644 --- a/playlist/__init__.py +++ b/playlist/__init__.py @@ -22,7 +22,7 @@ Selection.set_model(FilterModel) def on_row_activate(view, position): track = FilterModel.get_item(position) - if audio.Player.play_track(track) == True: + if audio.play_track(track): Model.tag.track_selected(track) tagdb.save()