diff --git a/beets/autotag/mb.py b/beets/autotag/mb.py index 03ea5b382..3ca5463c2 100644 --- a/beets/autotag/mb.py +++ b/beets/autotag/mb.py @@ -223,6 +223,8 @@ def track_info(recording, index=None, medium=None, medium_index=None, if recording.get('length'): info.length = int(recording['length']) / (1000.0) + info.trackdisambig = recording.get('disambiguation') + lyricist = [] composer = [] composer_sort = [] diff --git a/beets/library.py b/beets/library.py index a060e93d6..78552bb61 100644 --- a/beets/library.py +++ b/beets/library.py @@ -477,6 +477,7 @@ class Item(LibModel): 'mb_artistid': types.STRING, 'mb_albumartistid': types.STRING, 'mb_releasetrackid': types.STRING, + 'trackdisambig': types.STRING, 'albumtype': types.STRING, 'label': types.STRING, 'acoustid_fingerprint': types.STRING, diff --git a/docs/changelog.rst b/docs/changelog.rst index f8debb3da..2f31ecfe3 100644 --- a/docs/changelog.rst +++ b/docs/changelog.rst @@ -180,6 +180,9 @@ New features: :bug:`3478` * Removes usage of the bs1770gain replaygain backend. Thanks to :user:`SamuelCook`. +* Added ``trackdisambig`` which stores the recording disambiguation from + MusicBrainz for each track. + :bug:`1904` Fixes: diff --git a/test/test_mb.py b/test/test_mb.py index de1ffd9a7..9eca57c80 100644 --- a/test/test_mb.py +++ b/test/test_mb.py @@ -111,7 +111,8 @@ class MBAlbumInfoTest(_common.TestCase): }) return release - def _make_track(self, title, tr_id, duration, artist=False, video=False): + def _make_track(self, title, tr_id, duration, artist=False, video=False, + disambiguation=None): track = { 'title': title, 'id': tr_id, @@ -131,6 +132,8 @@ class MBAlbumInfoTest(_common.TestCase): ] if video: track['video'] = 'true' + if disambiguation: + track['disambiguation'] = disambiguation return track def test_parse_release_with_year(self): @@ -445,6 +448,18 @@ class MBAlbumInfoTest(_common.TestCase): self.assertEqual(d.tracks[1].title, 'TITLE TWO') self.assertEqual(d.tracks[2].title, 'TITLE VIDEO') + def test_track_disambiguation(self): + tracks = [self._make_track('TITLE ONE', 'ID ONE', 100.0 * 1000.0), + self._make_track('TITLE TWO', 'ID TWO', 200.0 * 1000.0, + disambiguation="SECOND TRACK")] + release = self._make_release(tracks=tracks) + + d = mb.album_info(release) + t = d.tracks + self.assertEqual(len(t), 2) + self.assertEqual(t[0].trackdisambig, None) + self.assertEqual(t[1].trackdisambig, "SECOND TRACK") + class ParseIDTest(_common.TestCase): def test_parse_id_correct(self):