Skip to content

Commit 37fa6fe

Browse files
committed
Convert mb_artistid and mb_albumartistid to multivalue
Resolves beetbox#43
1 parent dd75232 commit 37fa6fe

File tree

2 files changed

+25
-14
lines changed

2 files changed

+25
-14
lines changed

mediafile.py

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1947,16 +1947,17 @@ def update(self, dict):
19471947
StorageStyle('MUSICBRAINZ_ALBUMID'),
19481948
ASFStorageStyle('MusicBrainz/Album Id'),
19491949
)
1950-
mb_artistid = MediaField(
1951-
MP3DescStorageStyle(u'MusicBrainz Artist Id'),
1952-
MP4StorageStyle('----:com.apple.iTunes:MusicBrainz Artist Id'),
1953-
StorageStyle('MUSICBRAINZ_ARTISTID'),
1950+
mb_artistid = ListMediaField(
1951+
MP3ListDescStorageStyle(u'MusicBrainz Artist Id'),
1952+
MP4ListStorageStyle('----:com.apple.iTunes:MusicBrainz Artist Id'),
1953+
ListStorageStyle('MUSICBRAINZ_ARTISTID'),
19541954
ASFStorageStyle('MusicBrainz/Artist Id'),
19551955
)
1956-
mb_albumartistid = MediaField(
1957-
MP3DescStorageStyle(u'MusicBrainz Album Artist Id'),
1958-
MP4StorageStyle('----:com.apple.iTunes:MusicBrainz Album Artist Id'),
1959-
StorageStyle('MUSICBRAINZ_ALBUMARTISTID'),
1956+
mb_albumartistid = ListMediaField(
1957+
MP3ListDescStorageStyle(u'MusicBrainz Album Artist Id'),
1958+
MP4ListStorageStyle(
1959+
'----:com.apple.iTunes:MusicBrainz Album Artist Id'),
1960+
ListStorageStyle('MUSICBRAINZ_ALBUMARTISTID'),
19601961
ASFStorageStyle('MusicBrainz/Album Artist Id'),
19611962
)
19621963
mb_releasegroupid = MediaField(

test/test_mediafile.py

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -340,7 +340,7 @@ class ReadWriteTestBase(ArtTestMixin, GenreListTestMixin,
340340
'mb_trackid': '8b882575-08a5-4452-a7a7-cbb8a1531f9e',
341341
'mb_releasetrackid': 'c29f3a57-b439-46fd-a2e2-93776b1371e0',
342342
'mb_albumid': '9e873859-8aa4-4790-b985-5a953e8ef628',
343-
'mb_artistid': '7cf0ea9d-86b9-4dad-ba9e-2355a64899ea',
343+
'mb_artistid': ['7cf0ea9d-86b9-4dad-ba9e-2355a64899ea'],
344344
'art': None,
345345
'label': u'the label',
346346
}
@@ -371,7 +371,6 @@ class ReadWriteTestBase(ArtTestMixin, GenreListTestMixin,
371371
'mb_releasetrackid',
372372
'mb_workid',
373373
'mb_albumid',
374-
'mb_artistid',
375374
'art',
376375
'label',
377376
'rg_track_peak',
@@ -381,7 +380,6 @@ class ReadWriteTestBase(ArtTestMixin, GenreListTestMixin,
381380
'r128_track_gain',
382381
'r128_album_gain',
383382
'albumartist',
384-
'mb_albumartistid',
385383
'artist_sort',
386384
'albumartist_sort',
387385
'acoustid_fingerprint',
@@ -449,7 +447,11 @@ def test_read_full(self):
449447
def test_read_empty(self):
450448
mediafile = self._mediafile_fixture('empty')
451449
for field in self.tag_fields:
452-
self.assertIsNone(getattr(mediafile, field))
450+
value = getattr(mediafile, field)
451+
if isinstance(value, list):
452+
assert len(value) == 0
453+
else:
454+
self.assertIsNone(value)
453455

454456
def test_write_empty(self):
455457
mediafile = self._mediafile_fixture('empty')
@@ -620,7 +622,11 @@ def test_delete_tag(self):
620622
mediafile = MediaFile(mediafile.path)
621623

622624
for key in keys:
623-
self.assertIsNone(getattr(mediafile, key))
625+
value = getattr(mediafile, key)
626+
if isinstance(value, list):
627+
assert len(value) == 0
628+
else:
629+
self.assertIsNone(value)
624630

625631
def test_delete_packed_total(self):
626632
mediafile = self._mediafile_fixture('full')
@@ -705,6 +711,9 @@ def _generate_tags(self, base=None):
705711
for key in ['disc', 'disctotal', 'track', 'tracktotal', 'bpm']:
706712
tags[key] = 1
707713

714+
for key in ['mb_artistid', 'mb_albumartistid']:
715+
tags[key] = ['multival', 'test']
716+
708717
tags['art'] = self.jpg_data
709718
tags['comp'] = True
710719

@@ -976,7 +985,8 @@ def test_properties_from_readable_fields(self):
976985

977986
def test_known_fields(self):
978987
fields = list(ReadWriteTestBase.tag_fields)
979-
fields.extend(('encoder', 'images', 'genres', 'albumtype'))
988+
fields.extend(('encoder', 'images', 'genres', 'albumtype',
989+
'mb_artistid', 'mb_albumartistid'))
980990
assertCountEqual(self, MediaFile.fields(), fields)
981991

982992
def test_fields_in_readable_fields(self):

0 commit comments

Comments
 (0)