trackdb: Add a LibraryPath class for tracking multiple audio sources

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
Anna Schumaker 2020-10-04 15:28:30 -04:00
parent a9f0ff8f8d
commit 27441b9b79
4 changed files with 56 additions and 5 deletions

View File

@ -3,7 +3,7 @@ import pathlib
import trackdb
import unittest
test_tracks = pathlib.Path("./trier/Test Album")
test_tracks = "./trier/Test Album"
class TestTrackDB(unittest.TestCase):
def setUp(self):
@ -13,12 +13,21 @@ class TestTrackDB(unittest.TestCase):
self.assertEqual(trackdb.library_paths, [ ])
def test_trackdb_add_path(self):
trackdb.add_path(test_tracks)
self.assertEqual(trackdb.library_paths, [ test_tracks ])
lib = trackdb.add_path(test_tracks)
self.assertIsInstance(lib, trackdb.library.LibraryPath)
self.assertEqual(trackdb.library_paths, [ lib ])
self.assertIsNone(trackdb.add_path(test_tracks))
self.assertEqual(len(trackdb.library_paths), 1)
trackdb.remove_path(test_tracks)
self.assertEqual(trackdb.library_paths, [ ])
def test_trackdb_get_library(self):
self.assertIsNone(trackdb.get_library(test_tracks))
lib = trackdb.add_path(test_tracks)
self.assertEqual(trackdb.get_library(test_tracks), lib)
def test_trackdb_reset(self):
trackdb.library_paths = [ 1, 2, 3 ]
trackdb.reset()

View File

@ -1,12 +1,24 @@
# Copyright 2020 (c) Anna Schumaker.
from . import library
import pathlib
library_paths = [ ]
def add_path(path):
library_paths.append(path)
if get_library(path) == None:
lib = library.LibraryPath(path)
library_paths.append(lib)
return lib
def get_library(path):
for lib in library_paths:
if lib.path == pathlib.Path(path):
return lib
return None
def remove_path(path):
library_paths.remove(path)
lib = get_library(path)
library_paths.remove(lib)
def reset():
library_paths.clear()

12
trackdb/library.py Normal file
View File

@ -0,0 +1,12 @@
# Copyright 2020 (c) Anna Schumaker.
import pathlib
class LibraryPath:
def __init__(self, path):
self.path = pathlib.Path(path)
self.tracks = [ ]
def scan(self):
for f in self.path.rglob("*"):
if f.is_file():
self.tracks.append(f)

18
trackdb/test_library.py Normal file
View File

@ -0,0 +1,18 @@
# Copyright 2020 (c) Anna Schumaker.
from . import library
import pathlib
import unittest
test_tracks = "./trier/Test Album"
class TestLibraryPath(unittest.TestCase):
def test_library_path_init(self):
lib = library.LibraryPath(test_tracks)
self.assertEqual(lib.path, pathlib.Path(test_tracks))
self.assertEqual(lib.tracks, [ ])
def test_library_path_scan(self):
lib = library.LibraryPath(test_tracks)
lib.scan()
self.assertEqual(len(lib.tracks), 13)