media.title = title.replace('\n', '').strip()
media.save()
-def auto_code(collection):
- items = collection.items.all()
- suffixes = []
-
- if items:
- for item in items:
- if '_' in item.public_id:
- try:
- split = item.public_id.split('_')
- suffix = int(split[-1])
- prefix = split[:-1]
- except:
- suffix = 999
-
- suffixes.append(suffix)
-
- if suffixes:
- return collection.code + '_' + str(max(suffixes)+1)
- else:
- return collection.code + '_'
+def auto_code(resources, base_code):
+ index = 1
+ while True:
+ code = base_code + '_' + str(index)
+ r = resources.filter(code=code)
+ if not r:
+ break
+ index += 1
+ return code
def get_room(content_type=None, id=None, name=None):
previous, next = self.item_previous_next(item)
- mime_type = item.mime_type
- if mime_type and mime_type != 'none' :
- if 'quicktime' in mime_type:
- mime_type = 'video/mp4'
+ mime_type = self.item_analyze(item)
+
+ #FIXME: use mimetypes.guess_type
+ if 'quicktime' in mime_type:
+ mime_type = 'video/mp4'
playlists = get_playlists(request)
related_media = MediaItemRelated.objects.filter(item=item)
previous, next = self.item_previous_next(item)
- mime_type = item.mime_type
- if mime_type:
- if 'quicktime' in mime_type:
- mime_type = 'video/mp4'
+ mime_type = self.item_analyze(item)
+
+ #FIXME: use mimetypes.guess_type
+ if 'quicktime' in mime_type:
+ mime_type = 'video/mp4'
format, created = Format.objects.get_or_create(item=item)
if public_id:
collection = MediaCollection.objects.get(public_id=public_id)
items = MediaItem.objects.filter(collection=collection)
- code = auto_code(collection)
+ code = auto_code(items, collection.code)
item = MediaItem(collection=collection, code=code)
format, created = Format.objects.get_or_create(item=item)
access = get_item_access(item, request.user)
keyword.save()
item.set_revision(request.user)
-
return redirect('telemeta-item-detail', code)
else:
item = MediaItem.objects.get(public_id=public_id)
items = MediaItem.objects.filter(collection=item.collection)
- item.code = auto_code(item.collection)
+ item.code = auto_code(items, item.collection.code)
item.approx_duration = ''
item_form = MediaItemForm(instance=item, prefix='item')
format, created = Format.objects.get_or_create(item=item)
def item_analyze(self, item):
analyses = item.analysis.all()
mime_type = ''
-
+
if analyses:
for analysis in analyses:
if not item.approx_duration and analysis.analyzer_id == 'duration':
time = ':'.join(time)
item.approx_duration = time
item.save()
- elif not analysis.value and analysis.analyzer_id == 'mime_type' :
- analysis.value = item.mime_type
- analysis.save()
+ if analysis.analyzer_id == 'mime_type':
+ mime_type = analysis.value
else:
analyzers = []
analyzers_sub = []
subpipe = analyzer()
analyzers_sub.append(subpipe)
pipe = pipe | subpipe
-
+
default_grapher = self.get_grapher(self.default_grapher_id)
for size in self.default_grapher_sizes:
width = size.split('x')[0]
f.close()
mime_type = mimetypes.guess_type(source)[0]
-
analysis = MediaItemAnalysis(item=item, name='MIME type',
- analyzer_id='mime_type', unit='', value=item.mime_type)
+ analyzer_id='mime_type', unit='', value=mime_type)
analysis.save()
analysis = MediaItemAnalysis(item=item, name='Channels',
analyzer_id='channels',
analyzer_id=result.id, unit=result.unit, value = unicode(value))
analysis.save()
- analyses = MediaItemAnalysis.objects.filter(item=item)
-
-# TODO: parse tags on first load
+# FIXME: parse tags on first load
# tags = decoder.tags
- return analyses
+ return mime_type
def item_analyze_xml(self, request, public_id):
item = MediaItem.objects.get(public_id=public_id)
else:
flag = flag[0]
- format = item.mime_type
+ format = self.item_analyze(item)
dc_metadata = dublincore.express_item(item).to_list()
mapping = DublinCoreToFormatMetadata(extension)
metadata = mapping.get_metadata(dc_metadata)