Added alternate track field when importing from MusicBrains.

Useful when importing multi-sided medias such as vinyls and cassettes.
This commit is contained in:
Mike Cameron 2017-01-01 04:36:48 -05:00
parent 32dc808f71
commit 0d68a12609
4 changed files with 12 additions and 7 deletions

View file

@ -34,7 +34,7 @@ log = logging.getLogger('beets')
def apply_item_metadata(item, track_info):
"""Set an item's metadata from its matched TrackInfo object.
"""
"""
item.artist = track_info.artist
item.artist_sort = track_info.artist_sort
item.artist_credit = track_info.artist_credit
@ -157,3 +157,5 @@ def apply_metadata(album_info, mapping):
item.composer = track_info.composer
if track_info.arranger is not None:
item.arranger = track_info.arranger
item.alt_track_no = track_info.alt_track_no

View file

@ -154,7 +154,7 @@ class TrackInfo(object):
length=None, index=None, medium=None, medium_index=None,
medium_total=None, artist_sort=None, disctitle=None,
artist_credit=None, data_source=None, data_url=None,
media=None, lyricist=None, composer=None, arranger=None):
media=None, lyricist=None, composer=None, arranger=None, alt_track_no=None):
self.title = title
self.track_id = track_id
self.artist = artist
@ -173,6 +173,7 @@ class TrackInfo(object):
self.lyricist = lyricist
self.composer = composer
self.arranger = arranger
self.alt_track_no = alt_track_no
# As above, work around a bug in python-musicbrainz-ngs.
def decode(self, codec='utf-8'):

View file

@ -252,8 +252,8 @@ def album_info(release):
all_tracks = medium['track-list']
if 'pregap' in medium:
all_tracks.insert(0, medium['pregap'])
for track in all_tracks:
for track in all_tracks:
# Basic information from the recording.
index += 1
ti = track_info(
@ -265,6 +265,7 @@ def album_info(release):
)
ti.disctitle = disctitle
ti.media = format
ti.alt_track_no = track['number']
# Prefer track data, where present, over recording data.
if track.get('title'):

View file

@ -322,7 +322,7 @@ class LibModel(dbcore.Model):
funcs.update(plugins.template_funcs())
return funcs
def store(self, fields=None):
def store(self, fields=None):
super(LibModel, self).store(fields)
plugins.send('database_change', lib=self._db, model=self)
@ -423,9 +423,10 @@ class Item(LibModel):
'month': types.PaddedInt(2),
'day': types.PaddedInt(2),
'track': types.PaddedInt(2),
'alt_track_no': types.STRING,
'tracktotal': types.PaddedInt(2),
'disc': types.PaddedInt(2),
'disctotal': types.PaddedInt(2),
'disctotal': types.PaddedInt(2),
'lyrics': types.STRING,
'comments': types.STRING,
'bpm': types.INTEGER,
@ -456,7 +457,7 @@ class Item(LibModel):
'original_year': types.PaddedInt(4),
'original_month': types.PaddedInt(2),
'original_day': types.PaddedInt(2),
'initial_key': MusicalKey(),
'initial_key': MusicalKey(),
'length': DurationType(),
'bitrate': types.ScaledInt(1000, u'kbps'),