from telemeta.models.enum import *
from telemeta.models.system import *
from telemeta.models.query import *
+from telemeta.models.dublincore import *
class Meta(MetaCore):
db_table = 'instrument_relations'
unique_together = (('instrument', 'parent_instrument'),)
+
+ def __unicode__(self):
+ sep = ' > '
+ return self.parent_instrument.name + sep + self.instrument.name
class InstrumentAliasRelation(ModelCore):
"Instrument family other name"
instrument = ForeignKey('InstrumentAlias', related_name="relation",
verbose_name=_('instrument'))
+ def __unicode__(self):
+ sep = ' : '
+ return self.alias.name + sep + self.instrument.name
+
class Meta(MetaCore):
db_table = 'instrument_alias_relations'
unique_together = (('alias', 'instrument'),)
code = CharField(_('identifier'), max_length=64, unique=True, required=True)
name = CharField(_('name'), max_length=150, required=True)
+ def __unicode__(self):
+ return self.name
+
class Meta(MetaCore):
db_table = 'location_types'
return self.keywords
+class DublinCoreToFormatMetadata(object):
+ """ a mapping class to get item DublinCore metadata dictionaries
+ in various audio metadata format (MP3, OGG, etc...)"""
+
+ metadata_mapping = {
+ 'mp3' : {
+ 'title': 'TIT2', #title2
+ 'creator': 'TCOM', #composer
+ 'creator': 'TPE1', #lead
+ 'identifier': 'UFID', #unique ID
+ 'relation': 'TALB', #album
+ 'type': 'TCON', #genre
+ 'publisher': 'TPUB', #publisher
+ 'date': 'TDRC', #year
+# 'coverage': 'COMM', #comment
+ },
+ 'ogg': {
+ 'creator': 'artist',
+ 'relation': 'album',
+ 'all': 'all',
+ },
+ 'flac': {
+ 'creator': 'artist',
+ 'relation': 'album',
+ 'all': 'all',
+ },
+ }
+
+ def __init__(self, format):
+ self.format = format
+
+ def get_metadata(self, dc_metadata):
+ mapp = self.metadata_mapping[self.format]
+ metadata = {}
+ keys_done = []
+ for data in dc_metadata:
+ key = data[0]
+ value = data[1]
+ if value:
+ if key == 'date':
+ value = value.split(';')[0].split('=')[1].split('-')[0]
+ if key in mapp:
+ metadata[mapp[key]] = str(value)
+ elif 'all' in mapp.keys():
+ metadata[key] = str(value)
+ keys_done.append(key)
+ return metadata
<tr><td class="error">{{ field.errors }}</td></tr>
<td>{{ field.label_tag }}:</td>
{% if field.html_name == "collection" %}
- <td>{{ field }} <br /> {% trans "Title" %} : {{ item.collection.title }}</td>
+ <td> {% trans "Title" %} : {{ item.collection.title }}<br />
+ {% trans "Code" %} : {{ item.collection.code }}<br />
+ {{ field }}</td>
{% else %}
<td>{{ field }}</td>
{% endif %}
<td> {{ item.file.name }} <br /> {{ field }}</td>
{% else %}
{% if field.html_name == "collection" %}
- <td>{{ field }} <br /> {% trans "Title" %} : {{ item.collection.title }}</td>
+ <td> {% trans "Title" %} : {{ item.collection.title }}<br />
+ {% trans "Code" %} : {{ item.collection.code }}<br />
+ {{ field }}</td>
{% else %}
<td>{{ field }}</td>
{% endif %}
analyzers = self.item_analyze(item)
playlists = self.get_playlists(request)
public_access = self.get_public_access(item.public_access, item.recorded_from_date, item.recorded_to_date)
-
- translation_list = ['OK', 'Cancel', 'Item' 'Marker', 'added to playlist']
- translations = {}
- for term in translation_list:
- translations[term] = ugettext(term)
return render(request, template,
{'item': item, 'export_formats': formats,
'visualizers': graphers, 'visualizer_id': grapher_id,'analysers': analyzers,
'audio_export_enabled': getattr(settings, 'TELEMETA_DOWNLOAD_ENABLED', True),
'previous' : previous, 'next' : next, 'marker': marker_id, 'playlists' : playlists,
- 'public_access': public_access, 'translations': translations,
+ 'public_access': public_access,
})
def get_public_access(self, access, date_from, date_to):
media = self.cache_export.dir + os.sep + file
proc = encoder(media, streaming=True)
proc.setup(channels=decoder.channels(), samplerate=decoder.samplerate())
-# metadata = dublincore.express_item(item).to_list()
-# enc.set_metadata(metadata)
+ dc_metadata = dublincore.express_item(item).to_list()
+ mapping = DublinCoreToFormatMetadata(extension)
+ metadata = mapping.get_metadata(dc_metadata)
+ proc.set_metadata(metadata)
response = HttpResponse(stream_from_processor(decoder, proc), mimetype = mime_type)
else:
# cache > stream