diff --git a/curds/tags.py b/curds/tags.py index 3f8dc0e..2c0835b 100644 --- a/curds/tags.py +++ b/curds/tags.py @@ -55,6 +55,12 @@ class Track(Tag): if match: self.discnumber = int(discno_map.get(match.group(), match.group())) + def __getitem__(self, key): + item = vars(self).get(key) + if not item or item == self.album: + item = vars(self.album).get(key) + return item + def __hash__(self): return hash((hash(self.album), self.title, self.artist, self.tracknumber, self.discnumber)) diff --git a/curds/test_tags_track.py b/curds/test_tags_track.py index edb64be..99fe76c 100644 --- a/curds/test_tags_track.py +++ b/curds/test_tags_track.py @@ -61,3 +61,18 @@ class TestTrackTag(unittest.TestCase): u = tags.Track.add(os.path.join(test_tracks, "01 - Test Track.ogg")) self.assertIsNone(u) self.assertEqual(len(tags.tag_map), 2) + + def test_track_getitem(self): + p = [ test_tracks, "01 - Test Track.ogg" ] + t = tags.Track(os.path.join(*p)) + self.assertEqual(t["path"], os.path.join(*p)) + self.assertEqual(t["title"], "Test Track") + self.assertEqual(t["artist"], "Test Artist") + self.assertEqual(t["tracknumber"], 1) + self.assertEqual(t["discnumber"], 1) + self.assertEqual(t["length"], 10) + self.assertEqual(t["album"], "Test Album") + self.assertEqual(t["date"], 2019) + self.assertEqual(t["genre"], "Test") + self.assertEqual(t["albumartist"], "Test Artist") + self.assertIsNone(t["nokey"])