]> git.parisson.com Git - telemeta.git/commitdiff
fix exported item metadata writing
authoryomguy <yomguy@parisson.com>
Thu, 10 Nov 2011 14:59:33 +0000 (15:59 +0100)
committeryomguy <yomguy@parisson.com>
Thu, 10 Nov 2011 14:59:33 +0000 (15:59 +0100)
telemeta/models/media.py
telemeta/web/base.py

index 3595483699f59b60a4fefde6d98d107386194e74..29ef049ed385fc09af0fed3c8c2b6b6f72173754 100644 (file)
@@ -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):
index 090642da3b78301ab01e70b70d017425bd06d944..b143d225d2217c689192a1c818b47ffb45eead8b 100644 (file)
@@ -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'