From d4d74dd68b349ac46638f5e85dd9a6be8129d424 Mon Sep 17 00:00:00 2001 From: Adrian Sampson Date: Sat, 2 Apr 2011 17:48:54 -0700 Subject: [PATCH] fix crasher w/ old APE files (#159) --- NEWS | 1 + beets/mediafile.py | 12 ++++++++---- test/rsrc/oldape.ape | Bin 0 -> 13955 bytes test/test_mediafile.py | 4 ++++ 4 files changed, 13 insertions(+), 4 deletions(-) create mode 100644 test/rsrc/oldape.ape diff --git a/NEWS b/NEWS index f98de31de..bd98b5431 100644 --- a/NEWS +++ b/NEWS @@ -41,6 +41,7 @@ * Fix a bug where some files would be erroneously interpreted as MP4. * Fix permission bits applied to album art files. * Fix malformed MusicBrainz queries caused by null characters. +# Fix a bug with old versions of the Monkey's Audio format. * Retry in more cases when MusicBrainz servers are slow/overloaded. * The old "albumify" plugin for upgrading databases was removed. diff --git a/beets/mediafile.py b/beets/mediafile.py index a54d5a1a5..a65a0bd1d 100644 --- a/beets/mediafile.py +++ b/beets/mediafile.py @@ -715,10 +715,14 @@ class MediaFile(object): @property def bitrate(self): if self.type in ('flac', 'ape'): - # Simulate bitrate for lossless formats. - #fixme: The utility of this guess is questionable. - return self.mgfile.info.sample_rate * \ - self.mgfile.info.bits_per_sample + if hasattr(self.mgfile.info, 'bits_per_sample'): + # Simulate bitrate for lossless formats. + #fixme: The utility of this guess is questionable. + return self.mgfile.info.sample_rate * \ + self.mgfile.info.bits_per_sample + else: + # Old APE file format. + return 0 elif self.type == 'wv': # Mutagen doesn't provide enough information. return 0 diff --git a/test/rsrc/oldape.ape b/test/rsrc/oldape.ape new file mode 100644 index 0000000000000000000000000000000000000000..7589a7b1d8607d483d05cb45dc804e7d0ccfd7f9 GIT binary patch literal 13955 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 gQ+i_~E;D)-R(5tH4mJQ6mzmN3GssI20 literal 0 HcmV?d00001 diff --git a/test/test_mediafile.py b/test/test_mediafile.py index c6bfa3006..ce19e366f 100644 --- a/test/test_mediafile.py +++ b/test/test_mediafile.py @@ -63,6 +63,10 @@ class EdgeTest(unittest.TestCase): self.assertEqual(f.disc, 4) self.assertEqual(f.disctotal, 5) + def test_old_ape_version_bitrate(self): + f = beets.mediafile.MediaFile(os.path.join('rsrc', 'oldape.ape')) + self.assertEqual(f.bitrate, 0) + _sc = beets.mediafile._safe_cast class InvalidValueToleranceTest(unittest.TestCase): def test_packed_integer_with_extra_chars(self):