""" a mapping class to get item DublinCore metadata dictionaries
in various audio metadata format (MP3, OGG, etc...)"""
+ #FIXME: should be given by timeside
+ unavailable_extensions = ['wav', 'aiff', 'aif']
+
metadata_mapping = {
'mp3' : {
'title': 'TIT2', #title2
'relation': 'album',
'all': 'all',
},
+ 'wav': {
+ 'creator': 'artist',
+ 'relation': 'album',
+ 'all': 'all',
+ },
}
def __init__(self, format):
decoder = timeside.decoder.FileDecoder(audio)
format = decoder.format()
+ dc_metadata = dublincore.express_item(item).to_list()
+ mapping = DublinCoreToFormatMetadata(extension)
+ metadata = mapping.get_metadata(dc_metadata)
+
if mime_type in format:
# source > stream
+ if not extension in mapping.unavailable_extensions:
+ proc = encoder(audio)
+ proc.set_metadata(metadata)
+ proc.write_metadata()
response = HttpResponse(stream_from_file(audio), mimetype = mime_type)
-
else:
- dc_metadata = dublincore.express_item(item).to_list()
- mapping = DublinCoreToFormatMetadata(extension)
- metadata = mapping.get_metadata(dc_metadata)
media = self.cache_export.dir + os.sep + file
if not self.cache_export.exists(file) or flag.value == False:
# source > encoder > stream
response = HttpResponse(stream_from_processor(decoder, proc, flag), mimetype = mime_type)
else:
# cache > stream
- proc = encoder(media)
- proc.set_metadata(metadata)
- proc.write_metadata()
+ if not extension in mapping.unavailable_extensions:
+ proc = encoder(media)
+ proc.set_metadata(metadata)
+ proc.write_metadata()
response = HttpResponse(self.cache_export.read_stream_bin(file), mimetype = mime_type)
response['Content-Disposition'] = 'attachment'