curds: Keep a list of created tracks

We'll use this for scanning and updating the library later.  For now,
just keep everything in a list and do a uniqueness test whenever
something new is added.

Signed-off-by: Anna Schumaker <Anna@NoWheyCreamery.com>
This commit is contained in:
Anna Schumaker 2019-02-04 17:02:04 -05:00
parent c66405bd80
commit 2a98aac6de
2 changed files with 30 additions and 0 deletions

View File

@ -1,4 +1,5 @@
# Copyright 2019 (c) Anna Schumaker.
import mutagen
import unittest
import os
import track
@ -19,6 +20,7 @@ class TestTrackClass(unittest.TestCase):
self.assertEqual(t.album.date, 2019)
self.assertEqual(t.album.genre, "Test")
self.assertEqual(t.album.albumartist, "Test Artist")
self.assertEqual(len(track.tracklist), 0)
def test_init_empty(self):
p = [ test_tracks, "00 - Empty Track.ogg" ]
@ -33,6 +35,7 @@ class TestTrackClass(unittest.TestCase):
self.assertEqual(t.album.date, 0)
self.assertEqual(t.album.genre, "Unknown")
self.assertEqual(t.album.albumartist, "Unknown Artist")
self.assertEqual(len(track.tracklist), 0)
def test_init_discno_detect(self):
join = os.path.join
@ -46,5 +49,21 @@ class TestTrackClass(unittest.TestCase):
self.assertEqual(track.Track(join(test_tracks, "09 - Test {Disc 02}.ogg")).discnumber, 2)
self.assertEqual(track.Track(join(test_tracks, "10 - Test {Disc 20}.ogg")).discnumber, 20)
def test_track_add(self):
t = track.add(os.path.join(test_tracks, "01 - Test Track.ogg"))
self.assertIsNotNone(t)
self.assertEqual(len(track.tracklist), 1)
self.assertIn(t, track.tracklist)
self.assertIsNone(track.add(os.path.join(test_tracks, "01 - Test Track.ogg")))
self.assertEqual(len(track.tracklist), 1)
self.assertIsNone(track.add("99 - No Such Track.ogg"))
self.assertEqual(len(track.tracklist), 1)
u = track.add(os.path.join(test_tracks, "02 - Test {Disc 2}.ogg"))
self.assertIsNotNone(u)
self.assertEqual(len(track.tracklist), 2)
self.assertIn(u, track.tracklist)
if __name__ == '__main--':
unittest.main()

View File

@ -5,6 +5,7 @@ import os
import re
discno_map = { "one" : "1", "two" : "2", "three" : "3", "four" : "4", "five" : "5" }
tracklist = [ ]
class Track:
def __init__(self, path):
@ -23,3 +24,13 @@ class Track:
match = re.search("([1-9][0-9]*)|one|two|three|four|five", discno.lower())
if match:
self.discnumber = int(discno_map.get(match.group(), match.group()))
def add(path):
try:
if not any(t.path == path for t in tracklist):
track = Track(path)
tracklist.append(track)
return track
except mutagen.MutagenError:
return None