1
0
mirror of synced 2024-11-05 17:08:52 +01:00
mat2/libmat2/audio.py

51 lines
1.2 KiB
Python
Raw Normal View History

2018-03-25 16:17:41 +02:00
import shutil
import mutagen
from . import abstract
2018-03-25 16:17:41 +02:00
class MutagenParser(abstract.AbstractParser):
def __init__(self, filename):
super().__init__(filename)
try:
mutagen.File(self.filename)
except mutagen.flac.MutagenError:
raise ValueError
except mutagen.mp3.MutagenError:
raise ValueError
except mutagen.ogg.MutagenError:
raise ValueError
2018-03-25 16:17:41 +02:00
def get_meta(self):
f = mutagen.File(self.filename)
if f.tags:
2018-05-16 22:36:59 +02:00
return {k:', '.join(v) for k, v in f.tags.items()}
2018-03-25 16:17:41 +02:00
return {}
def remove_all(self):
shutil.copy(self.filename, self.output_filename)
f = mutagen.File(self.output_filename)
f.delete()
f.save()
return True
2018-03-25 16:17:41 +02:00
class MP3Parser(MutagenParser):
mimetypes = {'audio/mpeg', }
def get_meta(self):
metadata = {}
meta = mutagen.File(self.filename).tags
2018-03-25 16:31:21 +02:00
for key in meta:
metadata[key.rstrip(' \t\r\n\0')] = ', '.join(map(str, meta[key].text))
2018-03-25 16:17:41 +02:00
return metadata
2018-03-25 16:17:41 +02:00
class OGGParser(MutagenParser):
mimetypes = {'audio/ogg', }
2018-03-25 16:20:45 +02:00
2018-03-25 16:20:45 +02:00
class FLACParser(MutagenParser):
mimetypes = {'audio/flac', 'audio/x-flac' }