trackdb: Add lookup methods for track ids
Playlists will want to use this when reading saved state to figure out what tracks they hold. Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
parent
977c89068e
commit
c46f73cbc6
|
@ -49,6 +49,12 @@ class TestTrackDB(unittest.TestCase):
|
|||
lib = trackdb.add_path(test_tracks)
|
||||
self.assertEqual(trackdb.get_library(test_tracks), lib)
|
||||
|
||||
def test_trackdb_get_track(self):
|
||||
lib = trackdb.add_path(test_tracks)
|
||||
lib.scan().join()
|
||||
self.assertEqual(trackdb.get_track(3), lib[3])
|
||||
self.assertIsNone(trackdb.get_track(200))
|
||||
|
||||
def test_trackdb_reset(self):
|
||||
trackdb.library.TrackAdded.register(1)
|
||||
trackdb.library.TrackRemoved.register(1)
|
||||
|
|
|
@ -20,6 +20,12 @@ def get_library(path):
|
|||
return lib
|
||||
return None
|
||||
|
||||
def get_track(trackid):
|
||||
for lib in library_paths:
|
||||
if (track := lib[trackid]) != None:
|
||||
return track
|
||||
return None
|
||||
|
||||
def remove_path(path):
|
||||
lib = get_library(path)
|
||||
library_paths.remove(lib)
|
||||
|
|
|
@ -16,6 +16,9 @@ class LibraryPath:
|
|||
self.thread = None
|
||||
self.lock = threading.Lock()
|
||||
|
||||
def __getitem__(self, trackid):
|
||||
return self.tracks.get(trackid)
|
||||
|
||||
def __scan_remove(self):
|
||||
with self.lock:
|
||||
removed = [ (id, track) for (id, track) in self.tracks.items() if not track.exists() ]
|
||||
|
|
|
@ -49,6 +49,9 @@ class TestLibraryPath(unittest.TestCase):
|
|||
self.assertEqual(self.count_removed, 0)
|
||||
self.assertEqual(library.NextID, 13)
|
||||
|
||||
self.assertEqual(lib[3], lib.tracks[3])
|
||||
self.assertIsNone(lib[200])
|
||||
|
||||
lib.tracks = { id:track for (id, track) in lib.tracks.items() if 2 < id < 11 }
|
||||
lib.scan().join()
|
||||
self.assertEqual(len(lib.tracks), 13)
|
||||
|
|
Loading…
Reference in New Issue