diff --git a/src/audio.py b/src/audio.py index 4da298c32c70c46fa84ed36b2f79b5d5bbe1d6d8..0f4b5c0883656d382f38f85cce0e630696a94dbc 100644 --- a/src/audio.py +++ b/src/audio.py @@ -10,7 +10,7 @@ class MutagenParser(abstract.AbstractParser): def get_meta(self): f = mutagen.File(self.filename) if f.tags: - return f.tags + return {k:', '.join(v) for k,v in f.tags.items()} return {} def remove_all(self): @@ -24,10 +24,10 @@ class MP3Parser(MutagenParser): mimetypes = {'audio/mpeg', } def get_meta(self): - meta = super().get_meta() metadata = {} + meta = mutagen.File(self.filename).tags for key in meta: - metadata[key] = meta[key].text + metadata[key.rstrip(' \t\r\n\0')] = ', '.join(map(str, meta[key].text)) return metadata class OGGParser(MutagenParser): diff --git a/tests/test_climat2.py b/tests/test_climat2.py index 16f97a2a24e4091ac7844e8f9c1e2bef62854dc5..cf7a63b1def904ebc68785298c414a21ff100440 100644 --- a/tests/test_climat2.py +++ b/tests/test_climat2.py @@ -43,3 +43,27 @@ class TestGetMeta(unittest.TestCase): self.assertIn(b'generator: LibreOffice/3.3$Unix', stdout) self.assertIn(b'creator: jvoisin', stdout) self.assertIn(b'date_time: 2011-07-26 02:40:16', stdout) + + def test_mp3(self): + proc = subprocess.Popen(['./main.py', '--show', './tests/data/dirty.mp3'], + stdout=subprocess.PIPE) + stdout, _ = proc.communicate() + self.assertIn(b'TALB: harmfull', stdout) + self.assertIn(b'COMM::: Thank you for using MAT !', stdout) + + def test_flac(self): + proc = subprocess.Popen(['./main.py', '--show', './tests/data/dirty.flac'], + stdout=subprocess.PIPE) + stdout, _ = proc.communicate() + self.assertIn(b'comments: Thank you for using MAT !', stdout) + self.assertIn(b'genre: Python', stdout) + self.assertIn(b'title: I am so', stdout) + + def test_ogg(self): + proc = subprocess.Popen(['./main.py', '--show', './tests/data/dirty.ogg'], + stdout=subprocess.PIPE) + stdout, _ = proc.communicate() + self.assertIn(b'comments: Thank you for using MAT !', stdout) + self.assertIn(b'genre: Python', stdout) + self.assertIn(b'i am a : various comment', stdout) + self.assertIn(b'artist: jvoisin', stdout) diff --git a/tests/test_libmat2.py b/tests/test_libmat2.py index 34eea499bc89646c9521a26654c44cb8a0323d72..c2864c6f2f8f9aa9ae97063cf31673274f23bc68 100644 --- a/tests/test_libmat2.py +++ b/tests/test_libmat2.py @@ -43,17 +43,17 @@ class TestGetMeta(unittest.TestCase): def test_mp3(self): p = audio.MP3Parser('./tests/data/dirty.mp3') meta = p.get_meta() - self.assertEqual(meta['TXXX:I am a '], ['various comment']) + self.assertEqual(meta['TXXX:I am a'], 'various comment') def test_ogg(self): p = audio.OGGParser('./tests/data/dirty.ogg') meta = p.get_meta() - self.assertEqual(meta['TITLE'], ['I am so']) + self.assertEqual(meta['title'], 'I am so') def test_flac(self): p = audio.FLACParser('./tests/data/dirty.flac') meta = p.get_meta() - self.assertEqual(meta['TITLE'], ['I am so']) + self.assertEqual(meta['title'], 'I am so') def test_docx(self): p = office.MSOfficeParser('./tests/data/dirty.docx') @@ -184,7 +184,7 @@ class TestCleaning(unittest.TestCase): p = audio.MP3Parser('./tests/data/clean.mp3') meta = p.get_meta() - self.assertEqual(meta['TXXX:I am a '], ['various comment']) + self.assertEqual(meta['TXXX:I am a'], 'various comment') ret = p.remove_all() self.assertTrue(ret) @@ -199,7 +199,7 @@ class TestCleaning(unittest.TestCase): p = audio.OGGParser('./tests/data/clean.ogg') meta = p.get_meta() - self.assertEqual(meta['TITLE'], ['I am so']) + self.assertEqual(meta['title'], 'I am so') ret = p.remove_all() self.assertTrue(ret) @@ -214,7 +214,7 @@ class TestCleaning(unittest.TestCase): p = audio.FLACParser('./tests/data/clean.flac') meta = p.get_meta() - self.assertEqual(meta['TITLE'], ['I am so']) + self.assertEqual(meta['title'], 'I am so') ret = p.remove_all() self.assertTrue(ret)