summaryrefslogtreecommitdiff
path: root/libmat2/audio.py
diff options
context:
space:
mode:
Diffstat (limited to 'libmat2/audio.py')
-rw-r--r--libmat2/audio.py17
1 files changed, 14 insertions, 3 deletions
diff --git a/libmat2/audio.py b/libmat2/audio.py
index f2a5e94..b67f766 100644
--- a/libmat2/audio.py
+++ b/libmat2/audio.py
@@ -1,8 +1,11 @@
1import mimetypes
2import os
1import shutil 3import shutil
4import tempfile
2 5
3import mutagen 6import mutagen
4 7
5from . import abstract 8from . import abstract, parser_factory
6 9
7 10
8class MutagenParser(abstract.AbstractParser): 11class MutagenParser(abstract.AbstractParser):
@@ -55,6 +58,14 @@ class FLACParser(MutagenParser):
55 58
56 def get_meta(self): 59 def get_meta(self):
57 meta = super().get_meta() 60 meta = super().get_meta()
58 if mutagen.File(self.filename).pictures: 61 for num, picture in enumerate(mutagen.File(self.filename).pictures):
59 meta['Picture'] = 'Cover' 62 name = picture.desc if picture.desc else 'Cover %d' % num
63 _, fname = tempfile.mkstemp()
64 with open(fname, 'wb') as f:
65 f.write(picture.data)
66 extension = mimetypes.guess_extension(picture.mime)
67 shutil.move(fname, fname + extension)
68 p, _ = parser_factory.get_parser(fname+extension)
69 meta[name] = p.get_meta() if p else 'harmful data'
70 os.remove(fname + extension)
60 return meta 71 return meta