From 0fc49912ed19c32d67b5d2e55fee8a35cefce426 Mon Sep 17 00:00:00 2001 From: Anna Schumaker Date: Sun, 18 Oct 2020 13:26:40 -0400 Subject: [PATCH] trackdb: Add support for genre lists Signed-off-by: Anna Schumaker --- trackdb/test_track.py | 8 ++++++++ trackdb/track.py | 8 ++++++++ trier/generate_tracks.py | 1 + 3 files changed, 17 insertions(+) diff --git a/trackdb/test_track.py b/trackdb/test_track.py index 86545b1..d090487 100644 --- a/trackdb/test_track.py +++ b/trackdb/test_track.py @@ -30,6 +30,14 @@ class TestTrack(unittest.TestCase): self.assertEqual(trak.tags["discnumber"], 1) self.assertEqual(trak["discnumber"], "01") + def test_track_genres(self): + trak = track.Track(1, test_tracks / "02 - Test {Disc 2}.ogg") + self.assertEqual(trak.tags["genre"], [ "Test", "Genre", "List" ]) + self.assertEqual(trak["genre"], "Test, Genre, List") + lst = [ "Test", "Genre", "List" ] + for g in trak.genres(): + self.assertEqual(g, lst.pop(0)) + def test_track_length(self): trak = track.Track(1, test_tracks / "01 - Test Track.ogg") self.assertEqual(trak.tags["length"], 10) diff --git a/trackdb/track.py b/trackdb/track.py index b0216bd..1ceeb67 100644 --- a/trackdb/track.py +++ b/trackdb/track.py @@ -14,6 +14,8 @@ class Track: self.tags["artist"] = f.get("artist", ["Unknown Artist"])[0] self.tags["artist"] = f.get("albumartist", [self.tags["artist"]])[0] self.tags["discnumber"] = int(f.get("discnumber", [1])[0]) + self.tags["genre"] = f.get("genre", [ "" ])[0] + self.tags["genre"] = [ g.strip() for g in re.split(",|;|/|:", self.tags["genre"]) ] self.tags["length"] = int(f.info.length) self.tags["title"] = f.get("title", [""])[0] self.tags["tracknumber"] = int(f.get("tracknumber", [0])[0]) @@ -30,8 +32,14 @@ class Track: return f"{tag:02}" elif item == "lastplayed": return "Never" if tag == None else str(tag) + elif item == "genre": + return ", ".join(self.tags["genre"]) return None if tag == None else str(tag) + def genres(self): + for g in self.tags["genre"]: + yield g + def played(self): self.tags["playcount"] += 1 self.tags["lastplayed"] = datetime.date.today() diff --git a/trier/generate_tracks.py b/trier/generate_tracks.py index 8de0f65..660c9d1 100644 --- a/trier/generate_tracks.py +++ b/trier/generate_tracks.py @@ -47,6 +47,7 @@ generate_track(15, "Test Album/02 - Test {Disc 2}.ogg", { "Title" : "Test {Disc "albumartist" : "Test Album Artist", "artist" : "Test Artist", "album" : "Test Album {Disc 2}", + "genre" : "Test, Genre, List", "originalyear" : "2019", "date" : "2020-10-18"}) generate_track(20, "Test Album/03 - Test [Disk One].ogg", { "Title" : "Test [Disk One]",