trackdb: Use TagStore for Artists
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
parent
71ae845a99
commit
d342cb398a
|
@ -82,12 +82,14 @@ class TestTrackDB(unittest.TestCase):
|
|||
self.assertEqual(trackdb.save_bus.passengers, [ ])
|
||||
self.assertTrue(db_file.exists())
|
||||
|
||||
trackdb.tags.reset()
|
||||
trackdb.library_paths.clear()
|
||||
trackdb.library.NextID = 0
|
||||
trackdb.load()
|
||||
self.assertEqual(len(trackdb.library.Tracks), 12)
|
||||
self.assertEqual(len(trackdb.library_paths), 1)
|
||||
self.assertEqual(len(trackdb.library_paths[0].tracks), 12)
|
||||
self.assertEqual(len(trackdb.tags.Artist), 3)
|
||||
|
||||
def test_trackdb_stress(self):
|
||||
lib = trackdb.add_path("./trier/Test Library/")
|
||||
|
|
|
@ -3,6 +3,7 @@ from lib import bus
|
|||
from lib import data
|
||||
from lib import publisher
|
||||
from . import library
|
||||
from . import tags
|
||||
from . import track
|
||||
import pathlib
|
||||
import threading
|
||||
|
@ -39,7 +40,7 @@ def remove_path(path):
|
|||
|
||||
def _do_save():
|
||||
with data.DataFile(db_file, data.WRITE) as f:
|
||||
f.pickle([ library.Tracks, library_paths ])
|
||||
f.pickle([ tags.Artist, library.Tracks, library_paths ])
|
||||
|
||||
def save(*args):
|
||||
save_bus.board(_do_save)
|
||||
|
@ -48,7 +49,7 @@ def load():
|
|||
global library_paths
|
||||
with data.DataFile(db_file, data.READ) as f:
|
||||
if f.exists():
|
||||
(library.Tracks, library_paths) = f.unpickle()
|
||||
(tags.Artist, library.Tracks, library_paths) = f.unpickle()
|
||||
|
||||
def __register_callbacks():
|
||||
LibraryAdded.register(save)
|
||||
|
@ -62,6 +63,7 @@ def reset():
|
|||
library_paths.clear()
|
||||
LibraryAdded.reset()
|
||||
LibraryRemoved.reset()
|
||||
tags.reset()
|
||||
library.reset()
|
||||
track.reset()
|
||||
save_bus.clear()
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
# Copyright 2021 (c) Anna Schumaker.
|
||||
from lib import tagstore
|
||||
|
||||
Artist = tagstore.TagStore()
|
||||
|
||||
def reset():
|
||||
Artist.reset()
|
|
@ -0,0 +1,14 @@
|
|||
# Copyright 2021 (c) Anna Schumaker.
|
||||
from lib import tagstore
|
||||
from . import tags
|
||||
import unittest
|
||||
|
||||
class TestTags(unittest.TestCase):
|
||||
def test_tags_init(self):
|
||||
self.assertIsInstance(tags.Artist, tagstore.TagStore)
|
||||
|
||||
def test_tags_reset(self):
|
||||
tags.Artist.store = {"a" : 1 }
|
||||
|
||||
tags.reset()
|
||||
self.assertEqual(tags.Artist.store, { })
|
|
@ -1,6 +1,7 @@
|
|||
# Copyright 2020 (c) Anna Schumaker.
|
||||
from lib import publisher
|
||||
from . import library
|
||||
from . import tags
|
||||
from . import track
|
||||
import datetime
|
||||
import pathlib
|
||||
|
@ -33,10 +34,10 @@ class TestTrack(unittest.TestCase):
|
|||
|
||||
def test_track_artist(self):
|
||||
trak = track.Track(1, test_tracks / "01 - Test Track.ogg", self.lib)
|
||||
self.assertEqual(trak.artist, "Test Artist")
|
||||
self.assertEqual(trak.artist, tags.Artist["Test Artist"])
|
||||
self.assertEqual(trak["artist"], "Test Artist")
|
||||
trak2 = track.Track(2, test_tracks / "02 - Test {Disc 2}.ogg", self.lib)
|
||||
self.assertEqual(trak2.artist, "Test Album Artist")
|
||||
self.assertEqual(trak2.artist, tags.Artist["Test Album Artist"])
|
||||
|
||||
def test_track_decade(self):
|
||||
trak = track.Track(1, test_tracks / "01 - Test Track.ogg", self.lib)
|
||||
|
@ -105,6 +106,20 @@ class TestTrack(unittest.TestCase):
|
|||
self.assertEqual(trak2.year, 2019)
|
||||
self.assertEqual(trak2["year"], "2019")
|
||||
|
||||
def test_track_state(self):
|
||||
trak = track.Track(1, test_tracks / "01 - Test Track.ogg", self.lib)
|
||||
state = trak.__getstate__()
|
||||
self.assertEqual(state["artist"], "Test Artist")
|
||||
|
||||
tags.Artist["Test Artist"].tracks = [ 1 ]
|
||||
|
||||
trak.artist = None
|
||||
|
||||
trak.__setstate__(state)
|
||||
self.assertEqual(trak.artist, tags.Artist["Test Artist"])
|
||||
|
||||
self.assertEqual(tags.Artist["Test Artist"].tracks, [ trak ])
|
||||
|
||||
def test_track_reset(self):
|
||||
track.TrackUpdated.register(1)
|
||||
track.reset()
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
# Copyright 2020 (c) Anna Schumaker.
|
||||
from lib import metadata
|
||||
from lib import publisher
|
||||
from . import tags
|
||||
import datetime
|
||||
|
||||
TrackUpdated = publisher.Publisher()
|
||||
|
@ -20,7 +21,7 @@ class Track:
|
|||
self.tracknumber = meta.tracknumber()
|
||||
|
||||
self.album = meta.album()
|
||||
self.artist = meta.artist()
|
||||
self.artist = tags.Artist.add(meta.artist(), self)
|
||||
self.genre = meta.genres()
|
||||
self.year = meta.year()
|
||||
|
||||
|
@ -37,6 +38,15 @@ class Track:
|
|||
return ", ".join(self.genre)
|
||||
return None if tag == None else str(tag)
|
||||
|
||||
def __getstate__(self):
|
||||
state = self.__dict__.copy()
|
||||
state["artist"] = str(self.artist)
|
||||
return state
|
||||
|
||||
def __setstate__(self, state):
|
||||
self.__dict__.update(state)
|
||||
self.artist = tags.Artist.init_track(self.artist, self)
|
||||
|
||||
def decade(self):
|
||||
return (self.year // 10) * 10
|
||||
|
||||
|
|
Loading…
Reference in New Issue