From f8c8bff6945274f16ba28832d075e2ed1ac30208 Mon Sep 17 00:00:00 2001 From: Adrian Sampson Date: Sat, 26 Jun 2010 02:12:55 -0700 Subject: [PATCH] support some alternate ogg field names --- beets/mediafile.py | 6 ++++-- test/rsrc/discc.ogg | Bin 0 -> 8818 bytes test/test_mediafile.py | 9 +++++++++ 3 files changed, 13 insertions(+), 2 deletions(-) create mode 100644 test/rsrc/discc.ogg 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 0000000000000000000000000000000000000000..25a84bf84e74872e362c4b0d87f82b3e42f99877 GIT binary patch literal 8818 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 literal 0 HcmV?d00001 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