trackdb: Create an observer for when tracks are updated
And publish a notification after marking tracks as played. Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
parent
a29bcabc6c
commit
98d4709954
|
@ -58,6 +58,7 @@ class TestTrackDB(unittest.TestCase):
|
|||
def test_trackdb_reset(self):
|
||||
trackdb.library.TrackAdded.register(1)
|
||||
trackdb.library.TrackRemoved.register(1)
|
||||
trackdb.track.TrackUpdated.register(1)
|
||||
trackdb.LibraryAdded.register(1)
|
||||
trackdb.LibraryRemoved.register(1)
|
||||
trackdb.library_paths = [ 1, 2, 3 ]
|
||||
|
@ -66,5 +67,6 @@ class TestTrackDB(unittest.TestCase):
|
|||
self.assertEqual(trackdb.library_paths, [ ])
|
||||
self.assertEqual(trackdb.library.TrackAdded.subscribers, set())
|
||||
self.assertEqual(trackdb.library.TrackRemoved.subscribers, set())
|
||||
self.assertEqual(trackdb.track.TrackUpdated.subscribers, set())
|
||||
self.assertEqual(trackdb.LibraryAdded.subscribers, set())
|
||||
self.assertEqual(trackdb.LibraryRemoved.subscribers, set())
|
||||
|
|
|
@ -36,3 +36,4 @@ def reset():
|
|||
LibraryAdded.reset()
|
||||
LibraryRemoved.reset()
|
||||
library.reset()
|
||||
track.reset()
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
# Copyright 2020 (c) Anna Schumaker.
|
||||
from lib import publisher
|
||||
from . import track
|
||||
import datetime
|
||||
import pathlib
|
||||
|
@ -7,11 +8,22 @@ import unittest
|
|||
test_tracks = pathlib.Path("./trier/Test Album")
|
||||
|
||||
class TestTrack(unittest.TestCase):
|
||||
def setUp(self):
|
||||
self.count_updated = 0
|
||||
track.TrackUpdated.register(self.on_track_updated)
|
||||
|
||||
def tearDown(self):
|
||||
track.reset()
|
||||
|
||||
def on_track_updated(self, path):
|
||||
self.count_updated += 1
|
||||
|
||||
def test_track_init(self):
|
||||
trak = track.Track(1, test_tracks / "01 - Test Track.ogg")
|
||||
self.assertEqual(trak.trackid, 1)
|
||||
self.assertEqual(trak.filepath, test_tracks / "01 - Test Track.ogg")
|
||||
self.assertIsInstance(trak.tags, dict)
|
||||
self.assertIsInstance(track.TrackUpdated, publisher.Publisher)
|
||||
|
||||
def test_track_album(self):
|
||||
trak = track.Track(1, test_tracks / "01 - Test Track.ogg")
|
||||
|
@ -64,9 +76,11 @@ class TestTrack(unittest.TestCase):
|
|||
self.assertEqual(trak.tags["lastplayed"], datetime.date.today())
|
||||
self.assertEqual(trak["playcount"], "1")
|
||||
self.assertEqual(trak["lastplayed"], str(datetime.date.today()))
|
||||
self.assertEqual(self.count_updated, 1)
|
||||
trak.played()
|
||||
self.assertEqual(trak.tags["playcount"], 2)
|
||||
self.assertEqual(trak["playcount"], "2")
|
||||
self.assertEqual(self.count_updated, 2)
|
||||
|
||||
def test_track_title(self):
|
||||
trak = track.Track(1, test_tracks / "01 - Test Track.ogg")
|
||||
|
@ -87,3 +101,8 @@ class TestTrack(unittest.TestCase):
|
|||
trak2 = track.Track(2, test_tracks / "02 - Test {Disc 2}.ogg")
|
||||
self.assertEqual(trak2.tags["year"], 2019)
|
||||
self.assertEqual(trak2["year"], "2019")
|
||||
|
||||
def test_track_reset(self):
|
||||
track.TrackUpdated.register(1)
|
||||
track.reset()
|
||||
self.assertEqual(track.TrackUpdated.subscribers, set())
|
||||
|
|
|
@ -1,8 +1,11 @@
|
|||
# Copyright 2020 (c) Anna Schumaker.
|
||||
from lib import publisher
|
||||
import datetime
|
||||
import mutagen
|
||||
import re
|
||||
|
||||
TrackUpdated = publisher.Publisher()
|
||||
|
||||
class Track:
|
||||
def __init__(self, trackid, filepath):
|
||||
self.trackid = trackid
|
||||
|
@ -46,3 +49,7 @@ class Track:
|
|||
def played(self):
|
||||
self.tags["playcount"] += 1
|
||||
self.tags["lastplayed"] = datetime.date.today()
|
||||
TrackUpdated.publish(self)
|
||||
|
||||
def reset():
|
||||
TrackUpdated.reset()
|
||||
|
|
Loading…
Reference in New Issue