From e70ea811c99c16f3382c08153eda573df0825536 Mon Sep 17 00:00:00 2001 From: jvoisin Date: Thu, 18 Oct 2018 19:19:56 +0200 Subject: Implement support for .avi files, via ffmpeg - This commit introduces optional dependencies (namely ffmpeg): mat2 will spit a warning when trying to process an .avi file if ffmpeg isn't installed. - Since metadata are obtained via exiftool, this commit also refactors a bit our exfitool wrapper. --- tests/data/dirty.avi | Bin 0 -> 375688 bytes tests/test_libmat2.py | 29 +++++++++++++++++++++++++++-- 2 files changed, 27 insertions(+), 2 deletions(-) create mode 100644 tests/data/dirty.avi (limited to 'tests') diff --git a/tests/data/dirty.avi b/tests/data/dirty.avi new file mode 100644 index 0000000..850feab Binary files /dev/null and b/tests/data/dirty.avi differ diff --git a/tests/test_libmat2.py b/tests/test_libmat2.py index 665bab0..37adc6a 100644 --- a/tests/test_libmat2.py +++ b/tests/test_libmat2.py @@ -6,12 +6,16 @@ import os import zipfile from libmat2 import pdf, images, audio, office, parser_factory, torrent, harmless -from libmat2 import check_dependencies +from libmat2 import check_dependencies, video class TestCheckDependencies(unittest.TestCase): def test_deps(self): - ret = check_dependencies() + try: + ret = check_dependencies() + except RuntimeError: + return # this happens if not every dependency is installed + for value in ret.values(): self.assertTrue(value) @@ -471,3 +475,24 @@ class TestCleaning(unittest.TestCase): os.remove('./tests/data/clean.txt') os.remove('./tests/data/clean.cleaned.txt') os.remove('./tests/data/clean.cleaned.cleaned.txt') + + def test_avi(self): + shutil.copy('./tests/data/dirty.avi', './tests/data/clean.avi') + p = video.AVIParser('./tests/data/clean.avi') + + meta = p.get_meta() + self.assertEqual(meta['Software'], 'MEncoder SVN-r33148-4.0.1') + + try: + ret = p.remove_all() + except RuntimeError: + return # this happens if ffmepg is not installed + self.assertTrue(ret) + + p = video.AVIParser('./tests/data/clean.cleaned.avi') + self.assertEqual(p.get_meta(), {}) + self.assertTrue(p.remove_all()) + + os.remove('./tests/data/clean.avi') + os.remove('./tests/data/clean.cleaned.avi') + os.remove('./tests/data/clean.cleaned.cleaned.avi') -- cgit v1.3