diff --git a/beets/autotag/mb.py b/beets/autotag/mb.py index 4f9efccb8..73b3d371d 100644 --- a/beets/autotag/mb.py +++ b/beets/autotag/mb.py @@ -96,15 +96,21 @@ def album_info(release): artist_name = ''.join(artist_parts) # Basic info. - tracks = [] + track_infos = [] for medium in release['medium-list']: - tracks.extend(i['recording'] for i in medium['track-list']) + for track in medium['track-list']: + ti = track_info(track['recording']) + if track.get('title'): + # Track title may be distinct from underling recording + # title. + ti.title = track['title'] + track_infos.append(ti) info = beets.autotag.hooks.AlbumInfo( release['title'], release['id'], artist_name, release['artist-credit'][0]['artist']['id'], - [track_info(track) for track in tracks], + track_infos, ) info.va = info.artist_id == VARIOUS_ARTISTS_ID if 'asin' in release: diff --git a/beets/autotag/musicbrainz3/mbxml.py b/beets/autotag/musicbrainz3/mbxml.py index 17e69ad42..60049ca5f 100644 --- a/beets/autotag/musicbrainz3/mbxml.py +++ b/beets/autotag/musicbrainz3/mbxml.py @@ -416,7 +416,7 @@ def parse_track_list(tl): def parse_track(track): result = {} - elements = ["position"] + elements = ["position", "title"] inner_els = {"recording": parse_recording} result.update(parse_elements(elements, track))