diff --git a/libmat2/audio.py b/libmat2/audio.py index 0d54930..bd7add9 100644 --- a/libmat2/audio.py +++ b/libmat2/audio.py @@ -90,3 +90,14 @@ class WAVParser(video.AbstractFFmpegParser): 'FileSize', 'FileType', 'FileTypeExtension', 'MIMEType', 'NumChannels', 'SampleRate', 'SourceFile', } + +class AIFFParser(video.AbstractFFmpegParser): + mimetypes = {'audio/aiff', 'audio/x-aiff'} + meta_allowlist = {'AvgBytesPerSec', 'BitsPerSample', 'Directory', + 'Duration', 'Encoding', 'ExifToolVersion', + 'FileAccessDate', 'FileInodeChangeDate', + 'FileModifyDate', 'FileName', 'FilePermissions', + 'FileSize', 'FileType', 'FileTypeExtension', + 'MIMEType', 'NumChannels', 'SampleRate', 'SourceFile', + 'NumSampleFrames', 'SampleSize', + } diff --git a/tests/data/dirty.aiff b/tests/data/dirty.aiff new file mode 100644 index 0000000..03aab43 Binary files /dev/null and b/tests/data/dirty.aiff differ diff --git a/tests/test_libmat2.py b/tests/test_libmat2.py index a6c3a9a..5b9ad59 100644 --- a/tests/test_libmat2.py +++ b/tests/test_libmat2.py @@ -230,6 +230,11 @@ class TestGetMeta(unittest.TestCase): p = images.SVGParser('./tests/data/weird.svg') self.assertEqual(p.get_meta()['Xmlns'], 'http://www.w3.org/1337/svg') + def test_aiff(self): + p = audio.AIFFParser('./tests/data/dirty.aiff') + meta = p.get_meta() + self.assertEqual(meta['Name'], 'I am so') + class TestRemovingThumbnails(unittest.TestCase): def test_odt(self): @@ -312,6 +317,12 @@ class TestCleaning(unittest.TestCase): 'meta': {'Comment': 'Zomg, a comment!'}, 'expected_meta': {}, }, { + 'name': 'aiff', + 'parser': audio.AIFFParser, + 'meta': {'Annotation': 'Thank you for using MAT !'}, + 'expected_meta': {}, + }, + { 'name': 'mp3', 'parser': audio.MP3Parser, 'meta': {'TXXX:I am a': 'various comment'},