trackdb: Use a TagStore for Decades
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
parent
0e23e25edf
commit
d2a5d940bf
|
@ -92,6 +92,7 @@ class TestTrackDB(unittest.TestCase):
|
|||
self.assertEqual(len(trackdb.tags.Artist), 3)
|
||||
self.assertEqual(len(trackdb.tags.Album), 12)
|
||||
self.assertEqual(len(trackdb.tags.Genre), 4)
|
||||
self.assertEqual(len(trackdb.tags.Decade), 2)
|
||||
|
||||
def test_trackdb_stress(self):
|
||||
lib = trackdb.add_path("./trier/Test Library/")
|
||||
|
|
|
@ -40,7 +40,7 @@ def remove_path(path):
|
|||
|
||||
def _do_save():
|
||||
with data.DataFile(db_file, data.WRITE) as f:
|
||||
f.pickle([ tags.Artist, tags.Album, tags.Genre, library.Tracks, library_paths ])
|
||||
f.pickle([ tags.Artist, tags.Album, tags.Genre, tags.Decade, 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, tags.Album, tags.Genre, library.Tracks, library_paths) = f.unpickle()
|
||||
(tags.Artist, tags.Album, tags.Genre, tags.Decade, library.Tracks, library_paths) = f.unpickle()
|
||||
|
||||
def __register_callbacks():
|
||||
LibraryAdded.register(save)
|
||||
|
|
|
@ -4,8 +4,10 @@ from lib import tagstore
|
|||
Artist = tagstore.TagStore()
|
||||
Album = tagstore.TagSuperStore()
|
||||
Genre = tagstore.TagStore()
|
||||
Decade = tagstore.TagStore()
|
||||
|
||||
def reset():
|
||||
Artist.reset()
|
||||
Album.reset()
|
||||
Genre.reset()
|
||||
Decade.reset()
|
||||
|
|
|
@ -8,13 +8,16 @@ class TestTags(unittest.TestCase):
|
|||
self.assertIsInstance(tags.Artist, tagstore.TagStore)
|
||||
self.assertIsInstance(tags.Album, tagstore.TagSuperStore)
|
||||
self.assertIsInstance(tags.Genre, tagstore.TagStore)
|
||||
self.assertIsInstance(tags.Decade, tagstore.TagStore)
|
||||
|
||||
def test_tags_reset(self):
|
||||
tags.Artist.store = {"a" : 1 }
|
||||
tags.Album.store = {("a", "b") : 2 }
|
||||
tags.Genre.store = {"c" : 3 }
|
||||
tags.Decade.store = {"d" : 4 }
|
||||
|
||||
tags.reset()
|
||||
self.assertEqual(tags.Artist.store, { })
|
||||
self.assertEqual(tags.Album.store, { })
|
||||
self.assertEqual(tags.Genre.store, { })
|
||||
self.assertEqual(tags.Decade.store, { })
|
||||
|
|
|
@ -42,9 +42,8 @@ class TestTrack(unittest.TestCase):
|
|||
|
||||
def test_track_decade(self):
|
||||
trak = track.Track(1, test_tracks / "01 - Test Track.ogg", self.lib)
|
||||
self.assertEqual(trak.decade(), 2010)
|
||||
trak.year = 1974
|
||||
self.assertEqual(trak.decade(), 1970)
|
||||
self.assertEqual(trak.decade, tags.Decade["2010s"])
|
||||
self.assertEqual(trak["decade"], "2010s")
|
||||
|
||||
def test_track_discnumber(self):
|
||||
trak = track.Track(1, test_tracks / "01 - Test Track.ogg", self.lib)
|
||||
|
@ -114,23 +113,28 @@ class TestTrack(unittest.TestCase):
|
|||
self.assertEqual(state["artist"], "Test Artist")
|
||||
self.assertEqual(state["album"], "Test Album")
|
||||
self.assertEqual(state["genres"], [ "Test" ])
|
||||
self.assertEqual(state["decade"], "2010s")
|
||||
|
||||
tags.Artist["Test Artist"].tracks = [ 1 ]
|
||||
tags.Album[trak.artist, "Test Album"].tracks = [ 1 ]
|
||||
tags.Genre["Test"].tracks = [ 1 ]
|
||||
tags.Decade["2010s"].tracks = [ 1 ]
|
||||
|
||||
trak.artist = None
|
||||
trak.album = None
|
||||
trak.genres = None
|
||||
trak.decade = None
|
||||
|
||||
trak.__setstate__(state)
|
||||
self.assertEqual(trak.artist, tags.Artist["Test Artist"])
|
||||
self.assertEqual(trak.album, tags.Album[trak.artist, "Test Album"])
|
||||
self.assertEqual(trak.genres, [ tags.Genre["Test"] ])
|
||||
self.assertEqual(trak.decade, tags.Decade["2010s"])
|
||||
|
||||
self.assertEqual(tags.Artist["Test Artist"].tracks, [ trak ])
|
||||
self.assertEqual(tags.Album[trak.artist, "Test Album"].tracks, [ trak ])
|
||||
self.assertEqual(tags.Genre["Test"].tracks, [ trak ])
|
||||
self.assertEqual(tags.Decade["2010s"].tracks, [ trak ])
|
||||
|
||||
def test_track_reset(self):
|
||||
track.TrackUpdated.register(1)
|
||||
|
|
|
@ -24,6 +24,7 @@ class Track:
|
|||
self.album = tags.Album.add(self.artist, meta.album(), self)
|
||||
self.genres = [ tags.Genre.add(g, self) for g in meta.genres() ]
|
||||
self.year = meta.year()
|
||||
self.decade = tags.Decade.add(f"{meta.decade()}s", self)
|
||||
|
||||
def __getitem__(self, item):
|
||||
tag = self.__dict__.get(item, None)
|
||||
|
@ -43,6 +44,7 @@ class Track:
|
|||
state["artist"] = str(self.artist)
|
||||
state["album"] = str(self.album)
|
||||
state["genres"] = [ str(g) for g in self.genres ]
|
||||
state["decade"] = str(self.decade)
|
||||
return state
|
||||
|
||||
def __setstate__(self, state):
|
||||
|
@ -50,9 +52,7 @@ class Track:
|
|||
self.artist = tags.Artist.init_track(self.artist, self)
|
||||
self.album = tags.Album.init_track(self.artist, self.album, self)
|
||||
self.genres = [ tags.Genre.init_track(g, self) for g in self.genres ]
|
||||
|
||||
def decade(self):
|
||||
return (self.year // 10) * 10
|
||||
self.decade = tags.Decade.init_track(self.decade, self)
|
||||
|
||||
def filepath(self):
|
||||
return self.library.path / self.path
|
||||
|
|
Loading…
Reference in New Issue