switch to new get api results

This commit is contained in:
rolux 2011-08-19 14:43:05 +00:00
parent c25099920c
commit ad38fa019e
10 changed files with 55 additions and 67 deletions

View file

@ -549,5 +549,9 @@
},
"username": ""
},
"userLevels": ["guest", "member", "staff", "admin"]
"userLevels": ["guest", "member", "staff", "admin"],
"video": {
"formats": ["webm", "h264"],
"resolutions": [96]
}
}

View file

@ -121,8 +121,10 @@ class Annotation(models.Model):
if key in j:
_j[key] = j[key]
j = _j
if 'aspectRatio' in keys:
j['aspectRatio'] = self.item.stream_aspect
if 'videoRatio' in keys:
streams = self.item.streams()
if streams:
j['videoRatio'] = streams[0].aspect_ratio
if 'item' in keys:
j['item'] = self.item.itemId
return j

View file

@ -34,9 +34,6 @@ def site_config():
site_config['site']['sectionName'] = settings.SITENAME
site_config['site']['url'] = settings.URL
site_config['formats'] = settings.VIDEO_FORMATS
site_config['resolutions'] = settings.VIDEO_RESOLUTIONS
site_config['keys'] = {}
for key in site_config['itemKeys']:
site_config['keys'][key['id']] = key

View file

@ -444,5 +444,9 @@
},
"username": ""
},
"userLevels": ["guest", "member", "staff", "admin"]
"userLevels": ["guest", "member", "staff", "admin"],
"video": {
"formats": ["webm", "h264"],
"resolutions": [480, 240, 96]
}
}

View file

@ -81,7 +81,8 @@ Ox.load('Geo', function() {
$.extend(pandora.user, {
infoRatio: 16 / 9,
sectionElement: 'buttons',
selectedMovies: []
selectedMovies: [],
videoFormat: Ox.UI.getVideoFormat(pandora.site.video.formats)
});
// fixme: this should not happen
if (!pandora.user.ui.lists[pandora.user.ui.list]) {

View file

@ -1,7 +1,6 @@
// vim: et:ts=4:sw=4:sts=4:ft=javascript
pandora.ui.info = function(id) {
id = id || pandora.user.ui.item;
Ox.print('ID', id)
var that = Ox.Element()
.bindEvent({
toggle: function(data) {
@ -32,13 +31,13 @@ pandora.ui.info = function(id) {
});
} else {
// Video Preview
pandora.api.get({id: id, keys: ['stream']}, function(result) {
var video = result.data.stream;
height = Math.round(pandora.user.ui.sidebarSize / video.aspectRatio) + 16;
pandora.api.get({id: id, keys: ['duration', 'videoRatio']}, function(result) {
var height = Math.round(pandora.user.ui.sidebarSize / result.data.videoRatio) + 16;
pandora.$ui.videoPreview && pandora.$ui.videoPreview.removeElement();
pandora.$ui.videoPreview = pandora.ui.videoPreview({
id: id,
video: video
duration: result.data.duration,
ratio: result.data.videoRatio
}).appendTo(pandora.$ui.info);
pandora.user.infoRatio = pandora.user.ui.sidebarSize / height;
resize(height);

View file

@ -501,7 +501,7 @@ pandora.ui.infoView = function(data) {
$reflectionIcon.attr({src: src});
iconSize = iconSize == 256 ? 512 : 256;
iconRatio = pandora.user.ui.icons == 'posters'
? data.posterRatio : 1;
? data.poster.width / data.poster.height : 1;
toggleIconSize();
pandora.user.level == 'admin' && $list.replaceWith($list = renderList());
};
@ -514,4 +514,4 @@ pandora.ui.infoView = function(data) {
return that;
}
}

View file

@ -116,18 +116,6 @@ pandora.ui.item = function() {
}
})
);
/*
$.get('/static/html/itemInfo.html', {}, function(template) {
//Ox.print(template);
var posterRatio = result.data.posterRatio;
result.data.posterWidth = posterRatio > 1 ? 256 : Math.round(256 * posterRatio);
result.data.posterHeight = posterRatio < 1 ? 256 : Math.round(256 / posterRatio);
result.data.posterLeft = Math.floor((256 - result.data.posterWidth) / 2);
pandora.$ui.contentPanel.replaceElement(1,
pandora.$ui.item = Ox.Element().append($.tmpl(template, result.data))
);
});
*/
}
} else if (pandora.user.ui.itemView == 'map') {
@ -221,21 +209,20 @@ pandora.ui.item = function() {
} else if (pandora.user.ui.itemView == 'player') {
// fixme: duplicated
var layers = [],
video = result.data.stream,
cuts = result.data.cuts || [],
format = $.support.video.supportedFormat(pandora.site.formats),
streams = {};
video.height = pandora.site.resolutions[0];
video.width = parseInt(video.height * video.aspectRatio / 2) * 2;
pandora.site.resolutions.forEach(function(resolution) {
streams[resolution] = video.baseUrl + '/' + resolution + 'p.' + format;
});
video = {};
$.each(pandora.site.layers, function(i, layer) {
layers[i] = $.extend({}, layer, {items: result.data.layers[layer.id]});
});
pandora.site.video.resolutions.forEach(function(resolution) {
video[resolution] = Ox.range(result.data.parts).map(function(i) {
return '/' + pandora.user.ui.item + '/'
+ resolution + 'p' + (i + 1) + '.' + pandora.user.videoFormat;
});
});
//
pandora.$ui.contentPanel.replaceElement(1, pandora.$ui.player = Ox.VideoPanelPlayer({
annotationsSize: pandora.user.ui.annotationsSize,
cuts: result.data.cuts || [],
duration: video.duration,
getTimelineImageURL: function(i) {
return '/' + pandora.user.ui.item + '/timeline64p' + i + '.png';
@ -250,10 +237,7 @@ pandora.ui.item = function() {
return {'in': subtitle['in'], out: subtitle.out, text: subtitle.value};
}) : [],
timeline: '/' + pandora.user.ui.item + '/timeline16p.png',
video: streams,
videoHeight: video.height,
//videoId: pandora.user.ui.item,
videoWidth: video.width,
video: video,
volume: pandora.user.ui.videoVolume,
width: pandora.$ui.document.width() - pandora.$ui.mainPanel.size(0) - 1
}).bindEvent({
@ -287,25 +271,23 @@ pandora.ui.item = function() {
} else if (pandora.user.ui.itemView == 'timeline') {
var layers = [],
video = result.data.stream,
cuts = result.data.cuts || [],
format = $.support.video.supportedFormat(pandora.site.formats),
streams = {};
video.height = pandora.site.resolutions[0];
video.width = parseInt(video.height * video.aspectRatio / 2) * 2;
pandora.site.resolutions.forEach(function(resolution) {
streams[resolution] = video.baseUrl + '/' + resolution + 'p.' + format;
});
video = result.data.stream;
$.each(pandora.site.layers, function(i, layer) {
layers[i] = $.extend({}, layer, {items: result.data.layers[layer.id]});
});
pandora.site.video.resolutions.forEach(function(resolution) {
video[resolution] = Ox.range(result.data.parts).map(function(i) {
return '/' + pandora.user.ui.item + '/'
+ resolution + 'p' + (i + 1) + '.' + pandora.user.videoFormat;
});
});
pandora.$ui.contentPanel.replaceElement(1, pandora.$ui.editor = Ox.VideoEditor({
annotationsSize: pandora.user.ui.annotationsSize,
cuts: cuts,
cuts: result.data.cuts || [],
duration: video.duration,
find: '',
getFrameURL: function(position) {
return '/' + pandora.user.ui.item + '/' + video.height.toString() + 'p' + position.toString() + '.jpg';
return '/' + pandora.user.ui.item + '/' + Ox.last(pandora.site.video.resolutions) + 'p' + position + '.jpg';
},
getLargeTimelineImageURL: function(i) {
return '/' + pandora.user.ui.item + '/timeline64p' + i + '.png';
@ -326,10 +308,8 @@ pandora.ui.item = function() {
subtitles: result.data.layers.subtitles ? result.data.layers.subtitles.map(function(subtitle) {
return {'in': subtitle['in'], out: subtitle.out, text: subtitle.value};
}) : [],
video: streams,
videoHeight: video.height,
//videoId: pandora.user.ui.item,
videoWidth: video.width,
video: video,
videoRatio: result.data.videoRatio,
videoSize: pandora.user.ui.videoSize,
width: pandora.$ui.document.width() - pandora.$ui.mainPanel.size(0) - 1
}).bindEvent({

View file

@ -168,8 +168,9 @@ pandora.ui.list = function() { // fixme: remove view argument
that = Ox.IconList({
fixedRatio: fixedRatio,
item: function(data, sort, size) {
Ox.print('DATA', data)
size = size || 128;
var ratio = data.aspectRatio,
var ratio = data.videoRatio,
width = ratio > fixedRatio ? size : Math.round(size * ratio / fixedRatio),
height = Math.round(width / ratio),
url = '/' + data.item + '/' + height + 'p' + data['in'] + '.jpg';
@ -196,7 +197,7 @@ pandora.ui.list = function() { // fixme: remove view argument
itemQuery: itemQuery
}), callback);
},
keys: ['id', 'value', 'in', 'out', 'aspectRatio', 'item'],
keys: ['id', 'value', 'in', 'out', 'video', 'videoRatio', 'item'],
max: 1,
size: 128,
sort: pandora.user.ui.lists[pandora.user.ui.list].sort,
@ -310,10 +311,10 @@ pandora.ui.list = function() { // fixme: remove view argument
element: pandora.$ui.clips = Ox.IconList({
fixedRatio: fixedRatio,
item: function(data, sort, size) {
Ox.print('RATIO', data.aspectRatio);
Ox.print('RATIO', data.videoRatio);
size = size || 128;
var width = data.aspectRatio < fixedRatio ? size : size * data.aspectRatio / fixedRatio,
height = width / data.aspectRatio,
var width = data.videoRatio < fixedRatio ? size : size * data.videoRatio / fixedRatio,
height = width / data.videoRatio,
url = '/' + data.item + '/' + height + 'p' + data['in'] + '.jpg';
return {
height: height,
@ -326,7 +327,7 @@ pandora.ui.list = function() { // fixme: remove view argument
};
},
items: [],
keys: ['id', 'value', 'in', 'out', 'aspectRatio', 'item'],
keys: ['id', 'value', 'in', 'out', 'videoRatio', 'item'],
size: 128,
sort: pandora.user.ui.lists[pandora.user.ui.list].sort,
unique: 'id'
@ -454,8 +455,8 @@ pandora.ui.list = function() { // fixme: remove view argument
}
}, function(result) {
var item = result.data.items[0],
title = item.title + ' (' + item.director + ')',
ratio = item.posterRatio,
title = item.title + ' (' + item.director + ')'
ratio = item.poster.width / item.poster.height,
windowWidth = window.innerWidth * 0.8,
windowHeight = window.innerHeight * 0.8,
windowRatio = windowWidth / windowHeight,

View file

@ -2,14 +2,14 @@
pandora.ui.videoPreview = function(data) {
var frameWidth = pandora.user.ui.sidebarSize,
frameHeight = Math.round(frameWidth / data.video.aspectRatio),
frameHeight = Math.round(frameWidth / data.ratio),
that = Ox.VideoPreview({
duration: data.video.duration,
duration: data.duration,
getFrame: function(position) {
var width = pandora.user.ui.sidebarSize,
height = Math.round(width / pandora.user.infoRatio),
resolution = Ox.filter(pandora.site.resolutions, function(resolution, i) {
return resolution >= height || i == pandora.site.resolutions.length - 1;
resolution = Ox.filter(pandora.site.video.resolutions, function(resolution, i) {
return resolution >= height || i == pandora.site.video.resolutions.length - 1;
})[0];
return '/' + data.id + '/' + resolution + 'p' + (
Ox.isUndefined(position) ? '' : position