From b9dbd12ef91f4dfba8c1d0737ab52ff87ac515f1 Mon Sep 17 00:00:00 2001 From: jvoisin Date: Thu, 11 Oct 2018 19:52:47 +0200 Subject: Implement recursive metadata for FLAC files Since FLAC files can contain covers, it makes sense to parse their metadata --- libmat2/audio.py | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) (limited to 'libmat2') 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 @@ +import mimetypes +import os import shutil +import tempfile import mutagen -from . import abstract +from . import abstract, parser_factory class MutagenParser(abstract.AbstractParser): @@ -55,6 +58,14 @@ class FLACParser(MutagenParser): def get_meta(self): meta = super().get_meta() - if mutagen.File(self.filename).pictures: - meta['Picture'] = 'Cover' + for num, picture in enumerate(mutagen.File(self.filename).pictures): + name = picture.desc if picture.desc else 'Cover %d' % num + _, fname = tempfile.mkstemp() + with open(fname, 'wb') as f: + f.write(picture.data) + extension = mimetypes.guess_extension(picture.mime) + shutil.move(fname, fname + extension) + p, _ = parser_factory.get_parser(fname+extension) + meta[name] = p.get_meta() if p else 'harmful data' + os.remove(fname + extension) return meta -- cgit v1.3