trackdb: Store Track objects in LibraryPaths
Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
parent
c98cec1b28
commit
7707f896b7
|
@ -1,5 +1,6 @@
|
|||
# Copyright 2020 (c) Anna Schumaker.
|
||||
from lib import publisher
|
||||
from . import track
|
||||
import pathlib
|
||||
import threading
|
||||
|
||||
|
@ -21,11 +22,11 @@ class LibraryPath:
|
|||
|
||||
def __scan_remove(self):
|
||||
with self.lock:
|
||||
removed = [ (id, track) for (id, track) in self.tracks.items() if not track.exists() ]
|
||||
removed = [ (id, track) for (id, track) in self.tracks.items() if not track.filepath.exists() ]
|
||||
for (id, track) in removed:
|
||||
del self.tracks[id]
|
||||
TrackRemoved.publish(track)
|
||||
return set([ track for (id, track) in self.tracks.items() ])
|
||||
return set([ track.filepath for (id, track) in self.tracks.items() ])
|
||||
|
||||
def __do_scan__(self):
|
||||
global NextID
|
||||
|
@ -34,9 +35,12 @@ class LibraryPath:
|
|||
files = [ f for f in self.path.rglob("*") if f.is_file() and f not in track_set ]
|
||||
with self.lock as A, IDLock as B:
|
||||
for f in files:
|
||||
self.tracks[NextID] = f
|
||||
NextID += 1
|
||||
TrackAdded.publish(f)
|
||||
try:
|
||||
self.tracks[NextID] = track.Track(NextID, f)
|
||||
NextID += 1
|
||||
TrackAdded.publish(f)
|
||||
except:
|
||||
pass
|
||||
|
||||
self.thread = None
|
||||
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
# Copyright 2020 (c) Anna Schumaker.
|
||||
from lib import publisher
|
||||
from . import library
|
||||
from . import track
|
||||
import pathlib
|
||||
import threading
|
||||
import unittest
|
||||
|
@ -44,27 +45,29 @@ class TestLibraryPath(unittest.TestCase):
|
|||
|
||||
lib.thread = None
|
||||
lib.scan().join()
|
||||
self.assertEqual(len(lib.tracks), 13)
|
||||
self.assertEqual(self.count_added, 13)
|
||||
self.assertEqual(len(lib.tracks), 12)
|
||||
self.assertEqual(self.count_added, 12)
|
||||
self.assertEqual(self.count_removed, 0)
|
||||
self.assertEqual(library.NextID, 13)
|
||||
self.assertEqual(library.NextID, 12)
|
||||
|
||||
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)
|
||||
self.assertEqual(self.count_added, 18)
|
||||
self.assertEqual(len(lib.tracks), 12)
|
||||
self.assertEqual(self.count_added, 16)
|
||||
self.assertEqual(self.count_removed, 0)
|
||||
self.assertEqual(library.NextID, 18)
|
||||
self.assertEqual(library.NextID, 16)
|
||||
|
||||
lib.tracks[library.NextID] = pathlib.Path("No Such File")
|
||||
lib.tracks[library.NextID] = track.Track(library.NextID,
|
||||
pathlib.Path(test_tracks) / "01 - Test Track.ogg")
|
||||
lib.tracks[library.NextID].filepath = pathlib.Path("No Such File")
|
||||
lib.scan().join()
|
||||
self.assertEqual(len(lib.tracks), 13)
|
||||
self.assertEqual(self.count_added, 18)
|
||||
self.assertEqual(len(lib.tracks), 12)
|
||||
self.assertEqual(self.count_added, 16)
|
||||
self.assertEqual(self.count_removed, 1)
|
||||
self.assertEqual(library.NextID, 18)
|
||||
self.assertEqual(library.NextID, 16)
|
||||
|
||||
def test_library_reset(self):
|
||||
library.TrackAdded.register(1)
|
||||
|
|
|
@ -69,8 +69,8 @@ generate_track(55, "Test Album/10 - Test {Disc 20}.ogg", { "Title" : "Test {Disc
|
|||
"album" : "Test Album {Disc 20}" })
|
||||
generate_track(60, "Test Album/11 - Test Track 11.ogg", { "Title" : "Test Track 11",
|
||||
"album" : "Test Album 11",
|
||||
"discnumber" : "1/1",
|
||||
"tracknumber" : "11/100" })
|
||||
"discnumber" : "1",
|
||||
"tracknumber" : "11" })
|
||||
with open(os.path.join(trier, "Test Album/text.txt"), 'w') as f:
|
||||
f.write("Test Text")
|
||||
|
||||
|
|
Loading…
Reference in New Issue