diff options
Diffstat (limited to '')
| -rw-r--r-- | libmat2/audio.py | 13 | ||||
| -rw-r--r-- | tests/data/dirty.wav | bin | 0 -> 287584 bytes | |||
| -rw-r--r-- | tests/test_libmat2.py | 10 |
3 files changed, 22 insertions, 1 deletions
diff --git a/libmat2/audio.py b/libmat2/audio.py index 1fd58fc..5f0c765 100644 --- a/libmat2/audio.py +++ b/libmat2/audio.py | |||
| @@ -6,7 +6,7 @@ from typing import Dict, Union | |||
| 6 | 6 | ||
| 7 | import mutagen | 7 | import mutagen |
| 8 | 8 | ||
| 9 | from . import abstract, parser_factory | 9 | from . import abstract, parser_factory, video |
| 10 | 10 | ||
| 11 | 11 | ||
| 12 | class MutagenParser(abstract.AbstractParser): | 12 | class MutagenParser(abstract.AbstractParser): |
| @@ -77,3 +77,14 @@ class FLACParser(MutagenParser): | |||
| 77 | meta[name] = p.get_meta() if p else 'harmful data' # type: ignore | 77 | meta[name] = p.get_meta() if p else 'harmful data' # type: ignore |
| 78 | os.remove(fname) | 78 | os.remove(fname) |
| 79 | return meta | 79 | return meta |
| 80 | |||
| 81 | |||
| 82 | class WAVParser(video.AbstractFFmpegParser): | ||
| 83 | mimetypes = {'audio/x-wav', } | ||
| 84 | meta_allowlist = {'AvgBytesPerSec', 'BitsPerSample', 'Directory', | ||
| 85 | 'Duration', 'Encoding', 'ExifToolVersion', | ||
| 86 | 'FileAccessDate', 'FileInodeChangeDate', | ||
| 87 | 'FileModifyDate', 'FileName', 'FilePermissions', | ||
| 88 | 'FileSize', 'FileType', 'FileTypeExtension', | ||
| 89 | 'MIMEType', 'NumChannels', 'SampleRate', 'SourceFile', | ||
| 90 | } | ||
diff --git a/tests/data/dirty.wav b/tests/data/dirty.wav new file mode 100644 index 0000000..cda715e --- /dev/null +++ b/tests/data/dirty.wav | |||
| Binary files differ | |||
diff --git a/tests/test_libmat2.py b/tests/test_libmat2.py index 20e6a01..9d29094 100644 --- a/tests/test_libmat2.py +++ b/tests/test_libmat2.py | |||
| @@ -127,6 +127,11 @@ class TestGetMeta(unittest.TestCase): | |||
| 127 | self.assertEqual(meta['Model'], 'C7070WZ') | 127 | self.assertEqual(meta['Model'], 'C7070WZ') |
| 128 | self.assertEqual(meta['ModifyDate'], '2005:12:26 17:09:35') | 128 | self.assertEqual(meta['ModifyDate'], '2005:12:26 17:09:35') |
| 129 | 129 | ||
| 130 | def test_wav(self): | ||
| 131 | p = audio.WAVParser('./tests/data/dirty.wav') | ||
| 132 | meta = p.get_meta() | ||
| 133 | self.assertEqual(meta['Artist'], 'jvoisin') | ||
| 134 | |||
| 130 | def test_mp3(self): | 135 | def test_mp3(self): |
| 131 | p = audio.MP3Parser('./tests/data/dirty.mp3') | 136 | p = audio.MP3Parser('./tests/data/dirty.mp3') |
| 132 | meta = p.get_meta() | 137 | meta = p.get_meta() |
| @@ -302,6 +307,11 @@ class TestCleaning(unittest.TestCase): | |||
| 302 | 'meta': {'Comment': 'Created with GIMP'}, | 307 | 'meta': {'Comment': 'Created with GIMP'}, |
| 303 | 'expected_meta': {}, | 308 | 'expected_meta': {}, |
| 304 | }, { | 309 | }, { |
| 310 | 'name': 'wav', | ||
| 311 | 'parser': audio.WAVParser, | ||
| 312 | 'meta': {'Comment': 'Zomg, a comment!'}, | ||
| 313 | 'expected_meta': {}, | ||
| 314 | }, { | ||
| 305 | 'name': 'mp3', | 315 | 'name': 'mp3', |
| 306 | 'parser': audio.MP3Parser, | 316 | 'parser': audio.MP3Parser, |
| 307 | 'meta': {'TXXX:I am a': 'various comment'}, | 317 | 'meta': {'TXXX:I am a': 'various comment'}, |
