diff --git a/beets/mediafile.py b/beets/mediafile.py index fcaf8dfc6..1adf8cb56 100644 --- a/beets/mediafile.py +++ b/beets/mediafile.py @@ -538,7 +538,8 @@ class MediaFile(object): mp4 = StorageStyle('disk', packing = packing.TUPLE, pack_pos = 0), - etc = StorageStyle('disc') + etc = [StorageStyle('disc'), + StorageStyle('discnumber')] ) disctotal = MediaField(out_type = int, mp3 = StorageStyle('TPOS', @@ -547,7 +548,8 @@ class MediaFile(object): mp4 = StorageStyle('disk', packing = packing.TUPLE, pack_pos = 1), - etc = StorageStyle('disctotal') + etc = [StorageStyle('disctotal'), + StorageStyle('discc')] ) lyrics = MediaField( mp3 = StorageStyle('USLT', diff --git a/test/rsrc/discc.ogg b/test/rsrc/discc.ogg new file mode 100644 index 000000000..25a84bf84 Binary files /dev/null and b/test/rsrc/discc.ogg differ diff --git a/test/test_mediafile.py b/test/test_mediafile.py index 13e2064dd..9c76a799f 100644 --- a/test/test_mediafile.py +++ b/test/test_mediafile.py @@ -253,6 +253,14 @@ class EdgeTest(unittest.TestCase): # rather than just a number. f = beets.mediafile.MediaFile(os.path.join('rsrc', 'bpm.mp3')) self.assertEqual(f.bpm, 128) + + def test_discc_alternate_field(self): + # Different taggers use different vorbis comments to reflect + # the disc and disc count fields: ensure that the alternative + # style works. + f = beets.mediafile.MediaFile(os.path.join('rsrc', 'discc.ogg')) + self.assertEqual(f.disc, 4) + self.assertEqual(f.disctotal, 5) test_files = { 'm4a': ['full', 'partial', 'min'], @@ -291,6 +299,7 @@ def suite(): s.addTest(EdgeTest('test_release_time_with_t')) s.addTest(EdgeTest('test_release_time_with_space')) s.addTest(EdgeTest('test_tempo_with_bpm')) + s.addTest(EdgeTest('test_discc_alternate_field')) return s