diff --git a/curds/album.py b/curds/album.py index 3b25749..2913256 100644 --- a/curds/album.py +++ b/curds/album.py @@ -1,5 +1,6 @@ # Copyright 2019 (c) Anna Schumaker. import hashlib +import re album_map = dict() @@ -13,6 +14,11 @@ class Album: fileinfo.get("album artist", fileinfo.get("artist", [ "Unknown Artist" ])))[0] + # Try to detect album names that have a discnumber embedded in them + match = re.search("(cd|dis[c|k])(\s)*(([0-9]+)|one|two|three|four|five)", self.album.lower()) + if match and match.start() > 0: + self.album = self.album[:match.start()].strip(" ;({[-") + def hash(self): md5 = hashlib.md5() md5.update(self.album.encode('utf-8')) diff --git a/curds/test_album.py b/curds/test_album.py index 155e4f8..893bb55 100644 --- a/curds/test_album.py +++ b/curds/test_album.py @@ -36,6 +36,16 @@ class TestAlbumClass(unittest.TestCase): test_info.pop("artist") self.assertEqual(album.Album(test_info).albumartist, "Unknown Artist") + def test_init_discno_detect(self): + self.assertEqual(album.Album({"album" : [ "Test Album {Disc 1}" ]}).album, "Test Album") + self.assertEqual(album.Album({"album" : [ "Test Album [Disk One]" ]}).album, "Test Album") + self.assertEqual(album.Album({"album" : [ "Test Album (Disk Two)" ]}).album, "Test Album") + self.assertEqual(album.Album({"album" : [ "Test Album - Disc Three)" ]}).album, "Test Album") + self.assertEqual(album.Album({"album" : [ "Test Album;CD Four" ]}).album, "Test Album") + self.assertEqual(album.Album({"album" : [ "Test Album;CdFive" ]}).album, "Test Album") + self.assertEqual(album.Album({"album" : [ "Test Album CD 9/10" ]}).album, "Test Album") + self.assertEqual(album.Album({"album" : [ "Disc One: Test Album" ]}).album, "Disc One: Test Album") + def test_album_lookup(self): album.album_map.clear() a = album.lookup(album_info)