mirror of
https://github.com/beetbox/beets.git
synced 2025-12-06 08:39:17 +01:00
fix crasher w/ old APE files (#159)
This commit is contained in:
parent
6b49bb11ae
commit
d4d74dd68b
4 changed files with 13 additions and 4 deletions
1
NEWS
1
NEWS
|
|
@ -41,6 +41,7 @@
|
||||||
* Fix a bug where some files would be erroneously interpreted as MP4.
|
* Fix a bug where some files would be erroneously interpreted as MP4.
|
||||||
* Fix permission bits applied to album art files.
|
* Fix permission bits applied to album art files.
|
||||||
* Fix malformed MusicBrainz queries caused by null characters.
|
* 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.
|
* Retry in more cases when MusicBrainz servers are slow/overloaded.
|
||||||
* The old "albumify" plugin for upgrading databases was removed.
|
* The old "albumify" plugin for upgrading databases was removed.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -715,10 +715,14 @@ class MediaFile(object):
|
||||||
@property
|
@property
|
||||||
def bitrate(self):
|
def bitrate(self):
|
||||||
if self.type in ('flac', 'ape'):
|
if self.type in ('flac', 'ape'):
|
||||||
# Simulate bitrate for lossless formats.
|
if hasattr(self.mgfile.info, 'bits_per_sample'):
|
||||||
#fixme: The utility of this guess is questionable.
|
# Simulate bitrate for lossless formats.
|
||||||
return self.mgfile.info.sample_rate * \
|
#fixme: The utility of this guess is questionable.
|
||||||
self.mgfile.info.bits_per_sample
|
return self.mgfile.info.sample_rate * \
|
||||||
|
self.mgfile.info.bits_per_sample
|
||||||
|
else:
|
||||||
|
# Old APE file format.
|
||||||
|
return 0
|
||||||
elif self.type == 'wv':
|
elif self.type == 'wv':
|
||||||
# Mutagen doesn't provide enough information.
|
# Mutagen doesn't provide enough information.
|
||||||
return 0
|
return 0
|
||||||
|
|
|
||||||
BIN
test/rsrc/oldape.ape
Normal file
BIN
test/rsrc/oldape.ape
Normal file
Binary file not shown.
|
|
@ -63,6 +63,10 @@ class EdgeTest(unittest.TestCase):
|
||||||
self.assertEqual(f.disc, 4)
|
self.assertEqual(f.disc, 4)
|
||||||
self.assertEqual(f.disctotal, 5)
|
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
|
_sc = beets.mediafile._safe_cast
|
||||||
class InvalidValueToleranceTest(unittest.TestCase):
|
class InvalidValueToleranceTest(unittest.TestCase):
|
||||||
def test_packed_integer_with_extra_chars(self):
|
def test_packed_integer_with_extra_chars(self):
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue