From: yomguy Date: Thu, 10 Nov 2011 14:59:33 +0000 (+0100) Subject: fix exported item metadata writing X-Git-Tag: 1.2.1~21 X-Git-Url: https://git.parisson.com/?a=commitdiff_plain;h=df08f226a05a89773060572796c8e76be2410b1c;p=telemeta.git fix exported item metadata writing --- diff --git a/telemeta/models/media.py b/telemeta/models/media.py index 35954836..29ef049e 100644 --- a/telemeta/models/media.py +++ b/telemeta/models/media.py @@ -529,6 +529,9 @@ class DublinCoreToFormatMetadata(object): """ 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 @@ -551,6 +554,11 @@ class DublinCoreToFormatMetadata(object): 'relation': 'album', 'all': 'all', }, + 'wav': { + 'creator': 'artist', + 'relation': 'album', + 'all': 'all', + }, } def __init__(self, format): diff --git a/telemeta/web/base.py b/telemeta/web/base.py index 090642da..b143d225 100644 --- a/telemeta/web/base.py +++ b/telemeta/web/base.py @@ -810,14 +810,18 @@ class ItemView(object): 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 @@ -829,9 +833,10 @@ class ItemView(object): 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'