diff --git a/beets/mediafile.py b/beets/mediafile.py index 53d69b48b..a54d5a1a5 100644 --- a/beets/mediafile.py +++ b/beets/mediafile.py @@ -31,6 +31,7 @@ if no tag is present. If no value is available, the value will be false import mutagen import mutagen.mp3 +import mutagen.oggvorbis import mutagen.mp4 import mutagen.flac import mutagen.monkeysaudio @@ -109,6 +110,7 @@ def _safe_cast(out_type, val): else: return val + # Flags for encoding field behavior. class Enumeration(object): @@ -487,6 +489,7 @@ class MediaFile(object): mutagen.flac.FLACNoHeaderError, mutagen.monkeysaudio.MonkeysAudioHeaderError, mutagen.mp4.MP4StreamInfoError, + mutagen.oggvorbis.OggVorbisHeaderError, ) try: self.mgfile = mutagen.File(path) diff --git a/test/test_mediafile.py b/test/test_mediafile.py index 68a12c46a..af096bea5 100644 --- a/test/test_mediafile.py +++ b/test/test_mediafile.py @@ -109,6 +109,10 @@ class SafetyTest(unittest.TestCase): def test_corrupt_ogg_raises_unreadablefileerror(self): self._exccheck('corrupt.ogg', beets.mediafile.UnreadableFileError) + + def test_invalid_ogg_header_raises_unreadablefileerror(self): + self._exccheck('corrupt.ogg', beets.mediafile.UnreadableFileError, + 'OggS\x01vorbis') def test_corrupt_monkeys_raises_unreadablefileerror(self): self._exccheck('corrupt.ape', beets.mediafile.UnreadableFileError)