trackdb: Use TagSuperStore for Albums

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
Anna Schumaker 2021-06-23 17:14:14 -04:00
parent d342cb398a
commit f98d8bd4dc
6 changed files with 18 additions and 4 deletions

View File

@ -90,6 +90,7 @@ class TestTrackDB(unittest.TestCase):
self.assertEqual(len(trackdb.library_paths), 1)
self.assertEqual(len(trackdb.library_paths[0].tracks), 12)
self.assertEqual(len(trackdb.tags.Artist), 3)
self.assertEqual(len(trackdb.tags.Album), 12)
def test_trackdb_stress(self):
lib = trackdb.add_path("./trier/Test Library/")

View File

@ -40,7 +40,7 @@ def remove_path(path):
def _do_save():
with data.DataFile(db_file, data.WRITE) as f:
f.pickle([ tags.Artist, library.Tracks, library_paths ])
f.pickle([ tags.Artist, tags.Album, library.Tracks, library_paths ])
def save(*args):
save_bus.board(_do_save)
@ -49,7 +49,7 @@ def load():
global library_paths
with data.DataFile(db_file, data.READ) as f:
if f.exists():
(tags.Artist, library.Tracks, library_paths) = f.unpickle()
(tags.Artist, tags.Album, library.Tracks, library_paths) = f.unpickle()
def __register_callbacks():
LibraryAdded.register(save)

View File

@ -2,6 +2,8 @@
from lib import tagstore
Artist = tagstore.TagStore()
Album = tagstore.TagSuperStore()
def reset():
Artist.reset()
Album.reset()

View File

@ -6,9 +6,12 @@ import unittest
class TestTags(unittest.TestCase):
def test_tags_init(self):
self.assertIsInstance(tags.Artist, tagstore.TagStore)
self.assertIsInstance(tags.Album, tagstore.TagSuperStore)
def test_tags_reset(self):
tags.Artist.store = {"a" : 1 }
tags.Album.store = {("a", "b") : 2 }
tags.reset()
self.assertEqual(tags.Artist.store, { })
self.assertEqual(tags.Album.store, { })

View File

@ -29,7 +29,8 @@ class TestTrack(unittest.TestCase):
def test_track_album(self):
trak = track.Track(1, test_tracks / "01 - Test Track.ogg", self.lib)
self.assertEqual(trak.album, "Test Album")
artist = trak.artist
self.assertEqual(trak.album, tags.Album[artist, "Test Album"])
self.assertEqual(trak["album"], "Test Album")
def test_track_artist(self):
@ -110,15 +111,20 @@ class TestTrack(unittest.TestCase):
trak = track.Track(1, test_tracks / "01 - Test Track.ogg", self.lib)
state = trak.__getstate__()
self.assertEqual(state["artist"], "Test Artist")
self.assertEqual(state["album"], "Test Album")
tags.Artist["Test Artist"].tracks = [ 1 ]
tags.Album[trak.artist, "Test Album"].tracks = [ 1 ]
trak.artist = None
trak.album = None
trak.__setstate__(state)
self.assertEqual(trak.artist, tags.Artist["Test Artist"])
self.assertEqual(trak.album, tags.Album[trak.artist, "Test Album"])
self.assertEqual(tags.Artist["Test Artist"].tracks, [ trak ])
self.assertEqual(tags.Album[trak.artist, "Test Album"].tracks, [ trak ])
def test_track_reset(self):
track.TrackUpdated.register(1)

View File

@ -20,8 +20,8 @@ class Track:
self.discnumber = meta.discnumber()
self.tracknumber = meta.tracknumber()
self.album = meta.album()
self.artist = tags.Artist.add(meta.artist(), self)
self.album = tags.Album.add(self.artist, meta.album(), self)
self.genre = meta.genres()
self.year = meta.year()
@ -41,11 +41,13 @@ class Track:
def __getstate__(self):
state = self.__dict__.copy()
state["artist"] = str(self.artist)
state["album"] = str(self.album)
return state
def __setstate__(self, state):
self.__dict__.update(state)
self.artist = tags.Artist.init_track(self.artist, self)
self.album = tags.Album.init_track(self.artist, self.album, self)
def decade(self):
return (self.year // 10) * 10