Compare commits

...

4 commits

Author SHA1 Message Date
j
e7fce4cf26 limit highlight to current search 2018-08-07 17:13:35 +01:00
j
4e4d64febc unify date parsing and fall back to raw value if it failed 2018-08-05 19:12:22 +01:00
j
72358a7bce add stream.flags 2018-08-04 15:56:30 +00:00
j
f591f66634 try date formats 2018-08-04 16:51:43 +01:00
7 changed files with 60 additions and 23 deletions

View file

@ -0,0 +1,22 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.13 on 2018-08-04 15:54
from __future__ import unicode_literals
import django.core.serializers.json
from django.db import migrations, models
import oxdjango.fields
class Migration(migrations.Migration):
dependencies = [
('archive', '0004_jsonfield'),
]
operations = [
migrations.AddField(
model_name='stream',
name='flags',
field=oxdjango.fields.JSONField(default=dict, editable=False, encoder=django.core.serializers.json.DjangoJSONEncoder),
),
]

View file

@ -521,7 +521,7 @@ class File(models.Model):
n += 1 n += 1
profile = '%sp.%s' % (resolution, config['formats'][0]) profile = '%sp.%s' % (resolution, config['formats'][0])
target = os.path.join(tmp, language + '_' + profile) target = os.path.join(tmp, language + '_' + profile)
ok, error = extract.stream(media, target, profile, info, audio_track=i+1) ok, error = extract.stream(media, target, profile, info, audio_track=i+1, flags=self.flags)
if ok: if ok:
tinfo = ox.avinfo(target) tinfo = ox.avinfo(target)
del tinfo['path'] del tinfo['path']
@ -691,6 +691,7 @@ class Stream(models.Model):
available = models.BooleanField(default=False) available = models.BooleanField(default=False)
oshash = models.CharField(max_length=16, null=True, db_index=True) oshash = models.CharField(max_length=16, null=True, db_index=True)
info = JSONField(default=dict, editable=False) info = JSONField(default=dict, editable=False)
flags = JSONField(default=dict, editable=False)
duration = models.FloatField(default=0) duration = models.FloatField(default=0)
aspect_ratio = models.FloatField(default=0) aspect_ratio = models.FloatField(default=0)
@ -750,7 +751,7 @@ class Stream(models.Model):
self.media.name = self.path(self.name()) self.media.name = self.path(self.name())
target = self.media.path target = self.media.path
info = ox.avinfo(media) info = ox.avinfo(media)
ok, error = extract.stream(media, target, self.name(), info) ok, error = extract.stream(media, target, self.name(), info, flags=self.flags)
# file could have been moved while encoding # file could have been moved while encoding
# get current version from db and update # get current version from db and update
_self = Stream.objects.get(id=self.id) _self = Stream.objects.get(id=self.id)

View file

@ -1032,9 +1032,16 @@ class Item(models.Model):
elif sort_type == 'date': elif sort_type == 'date':
value = self.get(source) value = self.get(source)
if isinstance(value, string_types): if isinstance(value, string_types):
value = datetime_safe.datetime.strptime(value, '%Y-%m-%d') value_ = None
set_value(s, name, value) for fmt in ('%Y-%m-%d', '%Y-%m', '%Y'):
try:
value_ = datetime_safe.datetime.strptime(value, fmt)
except ValueError:
pass
else:
continue
if value_ is not None:
set_value(s, name, value_)
s.save() s.save()
def update_facet(self, key): def update_facet(self, key):

View file

@ -412,11 +412,8 @@ pandora.ui.documentInfoView = function(data) {
function formatValue(key, value) { function formatValue(key, value) {
var ret; var ret;
if (key == 'date') { if (key == 'date' && (!value || value.split('-').length < 4)) {
ret = value ? Ox.formatDate(value, ret = pandora.formatDate(value);
['', '%Y', '%B %Y', '%B %e, %Y'][value.split('-').length],
true
) : '';
} else if (nameKeys.indexOf(key) > -1) { } else if (nameKeys.indexOf(key) > -1) {
ret = formatLink(value.split(', '), key); ret = formatLink(value.split(', '), key);
} else if (listKeys.indexOf(key) > -1) { } else if (listKeys.indexOf(key) > -1) {

View file

@ -26,6 +26,7 @@ pandora.ui.editor = function(data) {
enableSetPosterFrame: !pandora.site.media.importFrames && data.editable, enableSetPosterFrame: !pandora.site.media.importFrames && data.editable,
enableSubtitles: ui.videoSubtitles, enableSubtitles: ui.videoSubtitles,
find: ui.itemFind, find: ui.itemFind,
findLayer: pandora.user.ui._findState.key,
getFrameURL: function(position) { getFrameURL: function(position) {
return pandora.getMediaURL('/' + ui.item + '/' + ui.videoResolution + 'p' + position + '.jpg?' + data.modified); return pandora.getMediaURL('/' + ui.item + '/' + ui.videoResolution + 'p' + position + '.jpg?' + data.modified);
}, },

View file

@ -594,19 +594,7 @@ pandora.ui.infoView = function(data) {
function formatValue(key, value) { function formatValue(key, value) {
var ret; var ret;
if (key == 'date' && (!value || value.split('-').length < 4)) { if (key == 'date' && (!value || value.split('-').length < 4)) {
if (!value) { ret = pandora.formatDate(value);
ret = ''
} else if (Ox.contains(value, ':') && value.split('-').length == 3) {
ret = Ox.formatDate(value,
['', '', '%B %e, %Y %H:%M', '%B %e, %Y %H:%M:%S'][value.split(':').length],
false
);
} else {
ret = Ox.formatDate(value,
['', '%Y', '%B %Y', '%B %e, %Y'][value.split('-').length],
true
);
}
} else if (listKeys.indexOf(key) > -1) { } else if (listKeys.indexOf(key) > -1) {
ret = value.split(', '); ret = value.split(', ');
} else { } else {

View file

@ -1115,6 +1115,27 @@ pandora.formatDocumentKey = function(key, data, size) {
return value; return value;
} }
pandora.formatDate = function(value) {
var ret;
if (!value) {
ret = ''
} else if (Ox.contains(value, ':') && value.split('-').length == 3) {
ret = Ox.formatDate(value,
['', '', '%B %e, %Y %H:%M', '%B %e, %Y %H:%M:%S'][value.split(':').length],
false
);
} else {
ret = Ox.formatDate(value,
['', '%Y', '%B %Y', '%B %e, %Y'][value.split('-').length],
true
);
}
if (ret.trim() == 'NaN') {
ret = value;
}
return ret;
}
pandora.getAllItemsTitle = function(section) { pandora.getAllItemsTitle = function(section) {
section = section || pandora.user.ui.section; section = section || pandora.user.ui.section;
return { return {