--- a/sbin/build/client.xml Tue Apr 03 20:30:12 2012 +0200
+++ b/sbin/build/client.xml Fri Apr 06 16:49:32 2012 +0200
@@ -59,7 +59,7 @@
<filelist dir="../../build" files="compiled_templates.js" />
<!-- core files -->
- <filelist dir="../../src/js" files="utils.js pop.js data.js site.js widgets.js modules.js layout.js init.js i18n.js" />
+ <filelist dir="../../src/js" files="utils.js pop.js data.js defaults.js widgets.js modules.js layout.js init.js i18n.js" />
<!-- players -->
<fileset dir="../../src/js/players" casesensitive="yes">
--- a/src/css/LdtPlayer.css Tue Apr 03 20:30:12 2012 +0200
+++ b/src/css/LdtPlayer.css Fri Apr 06 16:49:32 2012 +0200
@@ -329,12 +329,8 @@
cursor: pointer;
}
-.Ldt-Ctrl-Volume-Cursor:hover {
- background: #cccccc;
-}
-
-.Ldt-Ctrl-Volume-Cursor.ui-draggable-dragging {
- background: #999999;
+.Ldt-Ctrl-Volume-Control:hover .Ldt-Ctrl-Volume-Cursor {
+ background: #F7268E;
}
.Ldt-cleaner {
@@ -900,7 +896,7 @@
}
.Ldt-AnnotationsList-highlight {
- background: #cc80ff;
+ background: #F7268E; color: #ffffff;
}
.Ldt-AnnotationsListWidget a {
@@ -942,7 +938,11 @@
}
li.Ldt-AnnotationsList-Tag-Li {
- float: left; margin: 2px; background: #cc0066; color: #fff; padding: 4px;
+ float: left; margin: 2px; background: #0068c4; color: #fff; padding: 4px;
+}
+
+li.Ldt-AnnotationsList-Tag-Li:hover {
+ background: #F7268E;
}
/* Tagcloud */
Binary file src/css/imgs/player-sprites.png has changed
--- a/src/js/data.js Tue Apr 03 20:30:12 2012 +0200
+++ b/src/js/data.js Fri Apr 06 16:49:32 2012 +0200
@@ -12,15 +12,16 @@
this._callbacks = {};
};
-IriSP.DataLoader.prototype.get = function(url, callback) {
-
- var base_url = url.split("&")[0]
+IriSP.DataLoader.prototype.get = function(url, callback, force_reload) {
+ var base_url = url.split("&")[0];
+ if (typeof force_reload != "undefined" && force_reload && this._cache.hasOwnProperty(base_url)) {
+ delete this._cache[base_url]
+ }
if (this._cache.hasOwnProperty(base_url)) {
callback(this._cache[base_url]);
} else {
if (!this._callbacks.hasOwnProperty(base_url)) {
- this._callbacks[base_url] = [];
- this._callbacks[base_url].push(callback);
+ this._callbacks[base_url] = [callback];
/* we need a closure because this gets lost when it's called back */
// uncomment you don't want to use caching.
@@ -33,6 +34,7 @@
for (i = 0; i < this._callbacks[base_url].length; i++) {
this._callbacks[base_url][i](this._cache[base_url]);
}
+ delete this._callbacks[base_url];
};
/* automagically choose between json and jsonp */
@@ -70,8 +72,11 @@
IriSP.Serializer.prototype.currentMedia = function() {
};
-IriSP.Serializer.prototype.sync = function(callback) {
- callback.call(this, this._data);
+IriSP.Serializer.prototype.getDuration = function() {
+};
+
+IriSP.Serializer.prototype.sync = function(callback) {
+ this._DataLoader.get(this._url, callback, force_refresh);
};
IriSP.SerializerFactory = function(DataLoader) {
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/js/defaults.js Fri Apr 06 16:49:32 2012 +0200
@@ -0,0 +1,140 @@
+IriSP.language = 'en';
+
+IriSP.libFiles = {
+ defaultDir : "js/libs/",
+ inDefaultDir : {
+ jQuery : "jquery.min.js",
+ jQueryUI : "jquery-ui.min.js",
+ jQueryToolTip : "jquery.tools.min.js",
+ swfObject : "swfobject.js",
+ cssjQueryUI : "jquery-ui.css",
+ popcorn : "popcorn.js",
+ jwplayer : "jwplayer.js",
+ raphael : "raphael.js",
+ "popcorn.mediafragment" : "popcorn.mediafragment.js",
+ "popcorn.code" : "popcorn.code.js",
+ "popcorn.jwplayer" : "popcorn.jwplayer.js",
+ "popcorn.youtube" : "popcorn.youtube.js",
+ "tracemanager" : "tracemanager.js"
+ },
+ locations : {
+ // use to define locations outside defautl_dir
+ },
+ cdn : {
+ jQueryUI : "http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.17/jquery-ui.js",
+ jQueryToolTip : "http://cdn.jquerytools.org/1.2.4/all/jquery.tools.min.js",
+ swfObject : "http://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js",
+ cssjQueryUI : "http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.4/themes/base/jquery-ui.css"
+ },
+ useCdn : false
+}
+
+IriSP.widgetsDefaults = {
+ "LayoutManager" : {
+ spacer_div_height : 0
+ },
+ "PlayerWidget" : {
+
+ },
+ "AnnotationsWidget" : {
+ "share_text" : "I'm watching "
+ },
+ "TweetsWidget" : {
+ default_profile_picture : "https://si0.twimg.com/sticky/default_profile_images/default_profile_1_normal.png",
+ tweet_display_period : 10000 // how long do we show a tweet ?
+ },
+ "SliderWidget" : {
+ minimize_period : 850 // how long does the slider stays maximized after the user leaves the zone ?
+ },
+ "SegmentsWidget" : {
+ cinecast_version : false
+ },
+ "createAnnotationWidget" : {
+ tags : [
+ {
+ "id" : "digitalstudies",
+ "meta" : {
+ "description" : "#digital-studies"
+ }
+ },
+ {
+ "id" : "amateur",
+ "meta" : {
+ "description" : "#amateur"
+ },
+ }
+ ],
+ remote_tags : false,
+ random_tags : false,
+ show_from_field : false,
+ polemic_mode : true, /* enable polemics ? */
+ polemics : [{
+ "className" : "positive",
+ "keyword" : "++"
+ }, {
+ "className" : "negative",
+ "keyword" : "--"
+ }, {
+ "className" : "reference",
+ "keyword" : "=="
+ }, {
+ "className" : "question",
+ "keyword" : "??"
+ }],
+ cinecast_version : false, /* put to false to enable the platform version, true for the festival cinecast one. */
+
+ /* where does the widget PUT the annotations - this is a mustache template. id refers to the id of the media ans is filled
+ by the widget.
+ */
+ api_endpoint_template : "", // platform_url + "/ldtplatform/api/ldt/annotations/{{id}}.json",
+ api_method : "PUT"
+ },
+ "SparklineWidget" : {
+ lineColor : "#7492b4",
+ fillColor : "#aeaeb8",
+ lineWidth : 2
+ },
+ "AnnotationsListWidget" : {
+ ajax_mode : true, /* use ajax to get information about the annotations.
+ if set to false, only search in the annotations for the
+ current project. */
+ /* the platform generates some funky urls. We replace them afterwards to point to the
+ correct place - this setting will probably be overwritten by the platform
+ implementers.
+ Note that the player has to replace the variables between {{ and }} by its own values.
+ */
+ ajax_url : "", //platform_url + "/ldtplatform/api/ldt/segments/{{media}}/{{begin}}/{{end}}",
+ ajax_granularity : 10000, /* how much ms should we look before and after the current timecode */
+ default_thumbnail : "http://ldt.iri.centrepompidou.fr/static/site/ldt/css/imgs/video_sequence.png",
+ project_url : "", //platform_url + "/ldtplatform/ldt/front/player/"
+ /* the beginning of a link to the new front */
+ cinecast_version : false,
+ refresh_interval : 10000
+ },
+ "StackGraphWidget" : {
+ defaultcolor : "#585858",
+ tags : [
+ {
+ "keywords" : [ "++" ],
+ "description" : "positif",
+ "color" : "#1D973D"
+ },
+ {
+ "keywords" : [ "--" ],
+ "description" : "negatif",
+ "color" : "#CE0A15"
+ },
+ {
+ "keywords" : [ "==" ],
+ "description" : "reference",
+ "color" : "#C5A62D"
+ },
+ {
+ "keywords" : [ "??" ],
+ "description" : "question",
+ "color" : "#036AAE"
+ }
+ ],
+ streamgraph : false
+ }
+}
\ No newline at end of file
--- a/src/js/init.js Tue Apr 03 20:30:12 2012 +0200
+++ b/src/js/init.js Fri Apr 06 16:49:32 2012 +0200
@@ -240,54 +240,18 @@
return widget;
};
-/** Go through the defaults to set a reasonable value */
-IriSP.configureDefaults = function(libdir, platform_url) {
- /* the defaults configuration is messy and complicated. There are two things to know :
- - we want to allow overwriting of defaults - that's why we have IriSP.widgetDefaults
- and IriSP.defaults.widgetDefaults. The first is filled by the embedder and then fleshed out
- with the contents of the first. We use underscore.defaults for that, but there's one problem with
- this function : it doesn't work recursively.
- - we need to compute some values at runtime instead of at compile time
- */
-
- IriSP.lib = IriSP.underscore.defaults(IriSP.lib, IriSP.defaults.lib(libdir));
-
- /* get the factory defaults for the widgets and merge them with the default the user
- may have defined
- */
- var factory_defaults = IriSP.defaults.widgetsDefaults(platform_url);
- for(var widget in factory_defaults) {
-
- /* create the object if it doesn't exists */
- if (IriSP.null_or_undefined(IriSP.widgetsDefaults[widget]))
- IriSP.widgetsDefaults[widget] = {};
-
- IriSP.widgetsDefaults[widget] = IriSP.underscore.defaults(IriSP.widgetsDefaults[widget], factory_defaults[widget]);
- }
-
- IriSP.paths = IriSP.underscore.defaults(IriSP.paths, IriSP.defaults.paths);
- IriSP.default_templates_vars = IriSP.underscore.defaults(IriSP.default_templates_vars,
- IriSP.defaults.default_templates_vars());
-
- if (IriSP.null_or_undefined(IriSP.user))
- IriSP.user = {};
-
- IriSP.user = IriSP.underscore.defaults(IriSP.user, IriSP.defaults.user());
-};
-
/** single point of entry for the metadataplayer */
-IriSP.initPlayer = function(config, metadata_url, libdir, platform_url) {
+IriSP.initPlayer = function(config, metadata_url) {
document.getElementById(config.gui.container).innerHTML = IriSP.templToHTML(IriSP.loading_template, config.gui);
- IriSP.configureDefaults(libdir, platform_url);
- IriSP.loadLibs(IriSP.lib, config, metadata_url,
+ IriSP.loadLibs(config, metadata_url,
function() {
var layoutManager = new IriSP.LayoutManager(config.gui);
var pop = IriSP.configurePopcorn(layoutManager, config.player);
- var widgets = IriSP.configureWidgets(pop, layoutManager, config.gui);
- var modules = IriSP.configureModules(pop, config.modules);
+ IriSP._widgets = IriSP.configureWidgets(pop, layoutManager, config.gui);
+ IriSP._modules = IriSP.configureModules(pop, config.modules);
IriSP.jQuery('#Ldt-loader').detach();
});
};
\ No newline at end of file
--- a/src/js/layout.js Tue Apr 03 20:30:12 2012 +0200
+++ b/src/js/layout.js Fri Apr 06 16:49:32 2012 +0200
@@ -64,7 +64,7 @@
this._widgets.push([widgetName, newDiv]);
var divTempl = "<div id='{{id}}' style='width: {{width}}px; position: relative; clear: both;'></div";
- var spacerTempl = "<div id='{{spacer_id}}' style='width: {{width}}px; position: relative; height: {{spacer_div_height}};'></div";
+ var spacerTempl = "<div id='{{spacer_id}}' style='width: {{width}}px; position: relative; height: {{spacer_div_height}}px;'></div";
var divCode = Mustache.to_html(divTempl, {id: newDiv, width: this._width});
var spacerCode = Mustache.to_html(spacerTempl, {spacer_id: spacerDiv, width: this._width,
--- a/src/js/main.js Tue Apr 03 20:30:12 2012 +0200
+++ b/src/js/main.js Fri Apr 06 16:49:32 2012 +0200
@@ -1,5 +1,5 @@
/* main file */
-
+// Why is it called main ? It only loads the libs !
if ( window.IriSP === undefined && window.__IriSP === undefined ) {
/**
@@ -19,23 +19,39 @@
IriSP._ = window._.noConflict();
IriSP.underscore = IriSP._;
-IriSP.loadLibs = function( libs, config, metadata_url, callback ) {
+IriSP.getLib = function(lib) {
+ return (
+ IriSP.libFiles.useCdn && typeof IriSP.libFiles.cdn[lib] == "string"
+ ? IriSP.libFiles.cdn[lib]
+ : (
+ typeof IriSP.libFiles.locations[lib] == "string"
+ ? IriSP.libFiles.locations[lib]
+ : (
+ typeof IriSP.libFiles.inDefaultDir[lib] == "string"
+ ? IriSP.libFiles.defaultDir + IriSP.libFiles.inDefaultDir[lib]
+ : null
+ )
+ )
+ )
+}
+
+IriSP.loadLibs = function( config, metadata_url, callback ) {
// Localize jQuery variable
IriSP.jQuery = null;
- var $L = $LAB.script(libs.jQuery).script(libs.swfObject).wait()
- .script(libs.jQueryUI);
+ var $L = $LAB.script(IriSP.getLib("jQuery")).script(IriSP.getLib("swfObject")).wait()
+ .script(IriSP.getLib("jQueryUI"));
if (config.player.type === "jwplayer" || config.player.type === "allocine") {
// load our popcorn.js lookalike
- $L.script(libs.jwplayer);
+ $L.script(IriSP.getLib("jwplayer"));
} else {
// load the real popcorn
- $L.script(libs.popcorn).script(libs["popcorn.code"]);
+ $L.script(IriSP.getLib("popcorn")).script(IriSP.getLib("popcorn.code"));
if (config.player.type === "youtube") {
- $L.script(libs["popcorn.youtube"]);
+ $L.script(IriSP.getLib("popcorn.youtube"));
}
if (config.player.type === "vimeo")
- $L.script(libs["popcorn.vimeo"]);
+ $L.script(IriSP.getLib("popcorn.vimeo"));
/* do nothing for html5 */
}
@@ -45,10 +61,10 @@
if (config.gui.widgets[idx].type === "PolemicWidget" ||
config.gui.widgets[idx].type === "StackGraphWidget" ||
config.gui.widgets[idx].type === "SparklineWidget") {
- $L.script(libs.raphael);
+ $L.script(IriSP.getLib("raphael"));
}
if (config.gui.widgets[idx].type === "TraceWidget") {
- $L.script(libs.tracemanager)
+ $L.script(IriSP.getLib("tracemanager"))
}
}
@@ -56,7 +72,7 @@
/*
for (var idx in config.modules) {
if (config.modules[idx].type === "PolemicWidget")
- $L.script(libs.raphaelJs);
+ $L.script(IriSP.getLib("raphaelJs"));
}
*/
@@ -66,7 +82,7 @@
var css_link_jquery = IriSP.jQuery( "<link>", {
rel: "stylesheet",
type: "text/css",
- href: libs.cssjQueryUI,
+ href: IriSP.getLib("cssjQueryUI"),
'class': "dynamic_css"
} );
var css_link_custom = IriSP.jQuery( "<link>", {
--- a/src/js/players/player.allocine.js Tue Apr 03 20:30:12 2012 +0200
+++ b/src/js/players/player.allocine.js Fri Apr 06 16:49:32 2012 +0200
@@ -41,14 +41,26 @@
? options.directVideoPath
: IriSP.get_aliased(IriSP.__jsonMetadata["medias"][0], ["href","url"])
);
+ var _flashVars = {
+ "streamFMS" : true,
+ "adVast" : false,
+ "lg" : "fr_cinecast",
+ "autoPlay" : options.autoPlay,
+ "directVideoTitle" : "",
+ "urlAcData" : options.urlAcData,
+ "directVideoPath" : _videoUrl,
+ "host" : "http://allocine.fr"
+ }
- var fv = "streamFMS=true&adVast=false&lg=fr_cinecast&autoPlay=" + options.autoPlay + "&directVideoTitle=&urlAcData=" + options.urlAcData + "&directVideoPath=" + _videoUrl + "&host=http://allocine.fr";
-// console.log("fv = " + fv);
+ if (typeof IriSP.__jsonMetadata["medias"][0].meta == "object" && typeof IriSP.__jsonMetadata["medias"][0].meta.subtitles == "string") {
+ _flashVars.subTitlePath = IriSP.__jsonMetadata["medias"][0].meta.subtitles;
+ }
+
var params = {
"allowScriptAccess" : "always",
"wmode": "opaque",
- "flashvars" : fv,
+ "flashvars" : IriSP.jQuery.param(_flashVars),
"allowfullscreen" : true
};
var atts = {
--- a/src/js/serializers/JSONSerializer.js Tue Apr 03 20:30:12 2012 +0200
+++ b/src/js/serializers/JSONSerializer.js Fri Apr 06 16:49:32 2012 +0200
@@ -21,7 +21,7 @@
/** load JSON-cinelab data and also sort the annotations by start time
@param callback function to call when the data is ready.
*/
-IriSP.JSONSerializer.prototype.sync = function(callback) {
+IriSP.JSONSerializer.prototype.sync = function(callback, force_refresh) {
/* we don't have to do much because jQuery handles json for us */
var self = this;
@@ -43,15 +43,23 @@
}
callback(data);
};
-
- this._DataLoader.get(this._url, fn);
+ this._DataLoader.get(this._url, fn, force_refresh);
};
/** @return the metadata about the media being read FIXME: always return the first media. */
IriSP.JSONSerializer.prototype.currentMedia = function() {
- return this._data.medias[0]; /* FIXME: don't hardcode it */
+ return (typeof this._data.medias == "object" && this._data.medias.length) ? this._data.medias[0] : IriSP.__jsonMetadata.medias[0];
};
+IriSP.JSONSerializer.prototype.getDuration = function() {
+ var _m = this.currentMedia();
+ if (_m === null || typeof _m.meta == "undefined") {
+ return 0;
+ }
+ return +(IriSP.get_aliased(_m.meta, ["dc:duration", "duration"]) || 0);
+}
+
+
/** searches for an annotation which matches title, description and keyword
"" matches any field.
Note: it ignores tweets.
@@ -432,8 +440,4 @@
val = this.getId("Publ");
return val;
-};
-
-IriSP.JSONSerializer.prototype.getDuration = function() {
- return +(IriSP.get_aliased(this.currentMedia().meta, ["dc:duration", "duration"]) || 0);
-}
+};
\ No newline at end of file
--- a/src/js/site.js.templ Tue Apr 03 20:30:12 2012 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,150 +0,0 @@
-/* site.js - all our site-dependent config : player chrome, cdn locations, etc...*/
-
-IriSP.defaults = {};
-
-/* these objects are filled by configureDefaults. The function doesn't overwrite
- defaults that were originally defined by the user.
-*/
-IriSP.lib = {};
-
-/* We need to define those so that the individual settings can be overwritten */
-IriSP.widgetsDefaults = {};
-
-IriSP.paths = {};
-
-IriSP.libdir = "../src/js/libs/";
-IriSP.jwplayer_swf_path = "../test/libs/player.swf";
-IriSP.platform_url = "http://localhost/pf";
-IriSP.default_templates_vars = { };
-
-IriSP.language = 'en';
-
-/** ugly ugly ugly ugly - returns an object defining
- the paths to the libs
- We need it that way cause it's called at runtime by
- IriSP.configureDefaults.
-*/
-IriSP.defaults.lib = function(libdir) {
- if (IriSP.null_or_undefined(libdir))
- libdir = IriSP.libdir;
-
- return {
-// jQuery : "http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.js",
- jQuery : libdir + "jquery.min.js",
-// jQueryUI : "http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.17/jquery-ui.js",
- jQueryUI : libdir + "jquery-ui.min.js",
-// jQueryToolTip : "http://cdn.jquerytools.org/1.2.4/all/jquery.tools.min.js",
- jQueryToolTip : libdir + "jquery.tools.min.js",
-// swfObject : "http://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js",
- swfObject : libdir + "swfobject.js",
-// cssjQueryUI : "http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.4/themes/base/jquery-ui.css",
- cssjQueryUI : libdir + "jquery-ui.css",
- popcorn : libdir + "popcorn.js",
- jwplayer : libdir + "jwplayer.js",
- popcornReplacement: libdir + "pop.js",
- raphael: libdir + "raphael.js",
- jquery_sparkline: libdir + "jquery.sparkline.js",
- "popcorn.mediafragment" : libdir + "popcorn.mediafragment.js",
- "popcorn.code" : libdir + "popcorn.code.js",
- "popcorn.jwplayer": libdir + "popcorn.jwplayer.js",
- "popcorn.youtube": libdir + "popcorn.youtube.js",
- "tracemanager": libdir + "tracemanager.js"
- };
-};
-
-//Configuration for the player and utility functions.
-// No need to have them configured at runtime
-IriSP.config = {};
-
-IriSP.config.shortener = {
- // function to call to shorten an url.
- //shortening_function : IriSP.platform_shorten_url
-};
-
-IriSP.defaults.widgetsDefaults = function(platform_url) {
- if (IriSP.null_or_undefined(platform_url))
- platform_url = IriSP.platform_url;
-
- return {
- "LayoutManager" : {spacer_div_height : "0px" },
- "PlayerWidget" : {},
- "AnnotationsWidget": {
- "share_text" : "I'm watching ",
- "fb_link" : "http://www.facebook.com/share.php?u=",
- "tw_link" : "http://twitter.com/home?status=",
- "gplus_link" : ""
- },
-
- "TweetsWidget" : {
- default_profile_picture : "https://si0.twimg.com/sticky/default_profile_images/default_profile_1_normal.png",
- tweet_display_period: 10000 // how long do we show a tweet ?
-
- },
- "SliderWidget" : {
- minimize_period: 850 // how long does the slider stays maximized after the user leaves the zone ?
- },
- "createAnnotationWidget" : {
- keywords: ["#faux-raccord", "#mot-clef"],
- polemic_mode: true, /* enable polemics ? */
- /* polemics - the corresponding class names defined in the css should be for instance :
- Ldt-createAnnotation-polemic-plusplus for plusplus
- Ldt-createAnnotation-polemic-equalequal for equalequal, etc.
- */
- polemics: [ { "className" : "positive", "keyword" : "++" }, { "className" : "negative", "keyword" : "--" }, { "className" : "reference", "keyword" : "==" }, { "className" : "question", "keyword" : "??" } ],
- cinecast_version: true, /* put to false to enable the platform version, true for the festival cinecast one. */
-
- /* where does the widget PUT the annotations - this is a mustache template. id refers to the id of the media ans is filled
- by the widget.
- */
- api_endpoint_template: platform_url + "/ldtplatform/api/ldt/annotations/{{id}}.json",
- api_method: "PUT"
- },
- "SparklineWidget" : {
- column_width: 10 // the width of a column in pixels.
- },
- "Main" : {
- autoplay: true
- },
- "AnnotationsListWidget" : {
- ajax_mode: true, /* use ajax to get information about the annotations.
- if set to false, only search in the annotations for the
- current project. */
- /* the platform generates some funky urls. We replace them afterwards to point to the
- correct place - this setting will probably be overwritten by the platform
- implementers.
- Note that the player has to replace the variables between {{ and }} by its own values.
- */
- ajax_url: platform_url + "/ldtplatform/api/ldt/segments/{{media}}/{{begin}}/{{end}}",
-
- ajax_granularity: 10000, /* how much ms should we look before and after the
- current timecode */
-
- project_url: platform_url + "/ldtplatform/ldt/front/player/" /* the beginning
- of a link to the
- new front */
- }
- };
-};
-
-/*
-Override this if you want to change the info the player receives about the user.
-It's typically overrided in server-side templates with user-specific data.
-*/
-IriSP.defaults.user = function() { return {
- "name" : "Anonymous user",
- "avatar" : IriSP.paths.imgs + "/user_default_icon.png"
- }
-};
-
-
-IriSP.defaults.paths = {
-// "imgs": "/tweetlive/res/metadataplayer/src/css/imgs"
- "imgs": "/mdp/src/css/imgs"
-};
-
-IriSP.defaults.default_templates_vars = function() {
- return {
- "img_dir" : IriSP.paths.imgs
- };
-}
-
--- a/src/js/widgets.js Tue Apr 03 20:30:12 2012 +0200
+++ b/src/js/widgets.js Fri Apr 06 16:49:32 2012 +0200
@@ -57,24 +57,28 @@
this.selector.attr("widget-type", this._config.type);
}
+ // Parsing Widget Defaults
+ var _this = this;
+
+ if (typeof config.type == "string" && typeof IriSP.widgetsDefaults[config.type] == "object") {
+ IriSP._(IriSP.widgetsDefaults[config.type]).each(function(_v, _k) {
+ if (typeof config[_k] != "undefined") {
+ _this[_k] = config[_k];
+ } else {
+ _this[_k] = _v;
+ }
+ });
+ }
+
};
-// This functions checks for configuration options
-IriSP.Widget.prototype.checkOption = function(_name, _default) {
- this[_name] = (
- typeof this._config[_name] != "undefined"
- ? this._config[_name]
- : (
- (typeof IriSP.widgetsDefaults[this._config.type] != "undefined" && IriSP.widgetsDefaults[this._config.type][_name] != "undefined")
- ? IriSP.widgetsDefaults[this._config.type][_name]
- : (
- typeof _default != "undefined"
- ? _default
- : null
- )
- )
- )
+IriSP.Widget.prototype.currentMedia = function() {
+ return this._serializer.currentMedia();
+}
+
+IriSP.Widget.prototype.getDuration = function() {
+ return this._serializer.getDuration();
}
/**
--- a/src/js/widgets/annotationsListWidget.js Tue Apr 03 20:30:12 2012 +0200
+++ b/src/js/widgets/annotationsListWidget.js Fri Apr 06 16:49:32 2012 +0200
@@ -2,12 +2,6 @@
IriSP.Widget.call(this, Popcorn, config, Serializer);
this.__counter = 0;
this.__oldList = [];
-
- this.checkOption('ajax_mode');
- this.checkOption('project_url');
- this.checkOption('default_thumbnail');
- this.checkOption("cinecast_version", false);
- this.checkOption("ajax_url");
this.searchRe = null;
this._ajax_cache = [];
var _this = this;
@@ -34,7 +28,7 @@
IriSP.AnnotationsListWidget.prototype.searchHandler = function(searchString) {
this.searchRe = (searchString && searchString.length) ? IriSP.regexpFromText(searchString) : null;
- if (this.ajax_mode) {
+ if (this.ajax_mode && !this.cinecast_version) {
var _this = this,
_annotations = (
this.searchRe === null
@@ -64,11 +58,15 @@
this.selector.html(_html);
+ this.selector.find('.Ldt-AnnotationsList-Tag-Li').click(function() {
+ _this._Popcorn.trigger("IriSP.search.triggeredSearch", IriSP.jQuery(this).text().trim());
+ })
+
if (this.searchRe !== null) {
this.selector.find(".Ldt-AnnotationsList-Title a, .Ldt-AnnotationsList-Description")
.each(function() {
var _$ = IriSP.jQuery(this);
- _$.html(_$.text().replace(_this.searchRe, '<span class="Ldt-AnnotationsList-highlight">$1</span>'))
+ _$.html(_$.text().trim().replace(_this.searchRe, '<span class="Ldt-AnnotationsList-highlight">$1</span>'))
})
}
};
@@ -155,9 +153,10 @@
var idList = IriSP.underscore.pluck(list, "id").sort();
- if (!IriSP.underscore.isEqual(this.__oldList, idList) || typeof(force_redraw) !== "undefined") {
+ if (!IriSP.underscore.isEqual(this.__oldList, idList) || this.lastSearch !== this.searchRe || typeof(force_redraw) !== "undefined") {
this.do_redraw(list);
this.__oldList = idList;
+ this.lastSearch = this.searchRe;
}
/* save for next call */
@@ -181,8 +180,8 @@
we have to do that because the platform only knows at run time what view it's displaying.
*/
- var media_id = this._serializer.currentMedia()["id"];
- var duration = this._serializer.getDuration();
+ var media_id = this.currentMedia()["id"];
+ var duration = this.getDuration();
var begin_timecode = (Math.floor(tcode) - 300) * 1000;
if (begin_timecode < 0)
@@ -213,7 +212,7 @@
*/
var l = [];
- var media = this._serializer.currentMedia()["id"];
+ var media = this.currentMedia()["id"];
for (i = 0; i < annotations.length; i++) {
var obj = this.transformAnnotation(annotations[i])
@@ -246,13 +245,30 @@
var _this = this;
- if (!this.ajax_mode) {
+ if (!this.ajax_mode || this.cinecast_version) {
var _throttled = IriSP.underscore.throttle(function() {
_this.drawList();
}, 1500);
_throttled();
this._Popcorn.listen("IriSP.createAnnotationWidget.addedAnnotation", _throttled);
this._Popcorn.listen("timeupdate", _throttled);
+ if (this.cinecast_version) {
+ window.setInterval(function() {
+ var _tmpSerializer = new IriSP.JSONSerializer(IriSP.__dataloader, _this._config.metadata.src, true);
+ _tmpSerializer.sync(function(json) {
+ IriSP.underscore(json.annotations).each(function(_a) {
+ var _j = _this.annotations_ids.indexOf(_a.id);
+ if (_j == -1) {
+ _this._serializer._data.annotations.push(_a);
+ _this.annotations_ids.push(_a.id);
+ } else {
+ _this._serializer._data.annotations[_j] = _a;
+ }
+ _throttled();
+ });
+ }, true); // true is for force_refresh
+ },this.refresh_interval);
+ }
} else {
/* update the widget when the video has finished loading and when it's seeked and paused */
this._Popcorn.listen("seeked", IriSP.wrap(this, this.ajaxRedraw));
--- a/src/js/widgets/annotationsWidget.js Tue Apr 03 20:30:12 2012 +0200
+++ b/src/js/widgets/annotationsWidget.js Fri Apr 06 16:49:32 2012 +0200
@@ -32,7 +32,7 @@
var keywords = "";
var begin = +annotation.begin / 1000;
var end = +annotation.end / 1000;
- var duration = this._serializer.getDuration();
+ var duration = this.getDuration();
var tags = "";
var title_templ = "{{title}} - ( {{begin}} - {{end}} )";
@@ -64,15 +64,10 @@
this.selector.find(".Ldt-SaKeywords").text(tags);
// update sharing buttons
- var defaults = IriSP.widgetsDefaults.AnnotationsWidget;
- var text = defaults.share_text;
- var fb_link = defaults.fb_link;
- var tw_link = defaults.tw_link;
- var gplus_link = defaults.gplus_link;
var url = document.location.href + "#id=" + annotation.id;
- this.selector.find(".Ldt-fbShare").attr("href", IriSP.mkFbUrl(url, text));
- this.selector.find(".Ldt-TwShare").attr("href", IriSP.mkTweetUrl(url, text));
- this.selector.find(".Ldt-GplusShare").attr("href", IriSP.mkGplusUrl(url, text));
+ this.selector.find(".Ldt-fbShare").attr("href", IriSP.mkFbUrl(url, this.share_text));
+ this.selector.find(".Ldt-TwShare").attr("href", IriSP.mkTweetUrl(url, this.share_text));
+ this.selector.find(".Ldt-GplusShare").attr("href", IriSP.mkGplusUrl(url, this.share_text));
};
IriSP.AnnotationsWidget.prototype.clearWidget = function() {
--- a/src/js/widgets/arrowWidget.js Tue Apr 03 20:30:12 2012 +0200
+++ b/src/js/widgets/arrowWidget.js Fri Apr 06 16:49:32 2012 +0200
@@ -43,7 +43,7 @@
var begin = (+ currentAnnotation.begin) / 1000;
var end = (+ currentAnnotation.end) / 1000;
- var duration = this._serializer.getDuration() / 1000;
+ var duration = this.getDuration() / 1000;
var middle_time = (begin + end) / 2;
var percents = middle_time / duration;
--- a/src/js/widgets/createAnnotationWidget.js Tue Apr 03 20:30:12 2012 +0200
+++ b/src/js/widgets/createAnnotationWidget.js Fri Apr 06 16:49:32 2012 +0200
@@ -14,7 +14,7 @@
"annotation_saved": "Thank you, your annotation has been saved.",
"share_annotation": "Would you like to share it on social networks ?",
"share_on": "Share on",
- "moar_tags": "More tags"
+ "more_tags": "More tags"
},
"fr": {
"submit": "Envoyer",
@@ -28,7 +28,7 @@
"annotation_saved": "Merci, votre annotation a été enregistrée.",
"share_annotation": "Souhaitez-vous la partager sur les réseaux sociaux ?",
"share_on": "Partager sur",
- "moar_tagz": "Plus de mots-clés"
+ "more_tags": "Plus de mots-clés"
}
}
);
@@ -36,16 +36,6 @@
IriSP.createAnnotationWidget = function(Popcorn, config, Serializer) {
IriSP.Widget.call(this, Popcorn, config, Serializer);
this._hidden = true;
-
- this.checkOption("keywords");
- this.checkOption("polemic_mode", true);
- this.checkOption("polemics");
- this.checkOption("cinecast_version", false);
- this.checkOption("api_endpoint_template");
- this.checkOption("show_from_field", true);
- this.checkOption("api_method");
- this.checkOption("random_keywords");
- this.checkOption("disable_share", false);
if (!IriSP.null_or_undefined(IriSP.user)) {
if (!IriSP.null_or_undefined(IriSP.user.avatar)) {
@@ -74,11 +64,9 @@
IriSP.createAnnotationWidget.prototype.draw = function() {
var _this = this;
- if (typeof this._config.remote_keywords != "undefined" && typeof this._config.remote_keywords) {
- IriSP.jQuery.getJSON(this._config.remote_keywords, function(_json) {
- _this.keywords = IriSP.underscore(_json.tags).map(function(_tag) {
- return _tag.meta.description;
- });
+ if (typeof this.remote_tags == "object") {
+ IriSP.jQuery.getJSON((typeof this.remote_tags.alias == "string" ? this.remote_tags.alias : this.remote_tags.url), function(_json) {
+ _this.tags = _json.tags;
_this.drawCallback();
});
} else {
@@ -100,11 +88,11 @@
this.showStartScreen();
}
- if (this.random_keywords) {
+ if (this.random_tags) {
this.selector.find(".Ldt-createAnnotation-keywords li").hide();
- this.showMoarTagz();
+ this.showMoreTags();
this.selector.find('.Ldt-createAnnotation-moar-keywordz').click(function() {
- _this.showMoarTagz();
+ _this.showMoreTags();
})
}
// Add onclick event to both polemic and keywords buttons
@@ -117,7 +105,10 @@
// js_mod is a custom event because there's no simple way to test for a js
// change in a textfield.
this.selector.find(".Ldt-createAnnotation-Description")
- .bind("propertychange keyup input paste click js_mod", IriSP.wrap(this, this.handleTextChanges));
+ .bind("propertychange keyup input paste click js_mod", IriSP.wrap(this, this.handleTextChanges))
+ .keyup(function(_e) {
+ console.log(_e);
+ });
/* the cinecast version of the player is supposed to pause when the user clicks on the button */
@@ -178,8 +169,8 @@
}
};
-IriSP.createAnnotationWidget.prototype.showMoarTagz = function() {
- for (var j=0; j < this.random_keywords; j++) {
+IriSP.createAnnotationWidget.prototype.showMoreTags = function() {
+ for (var j=0; j < this.random_tags; j++) {
var _jq = this.selector.find(".Ldt-createAnnotation-keywords li:hidden");
if (_jq.length > 1) {
IriSP.jQuery(_jq[Math.floor(_jq.length*Math.random())]).show();
@@ -228,7 +219,7 @@
// block the arrow.
this._Popcorn.trigger("IriSP.ArrowWidget.blockArrow");
- var duration = this._serializer.getDuration();
+ var duration = this.getDuration();
var currentChapter = this._serializer.currentChapitre(currentTime);
@@ -387,23 +378,28 @@
IriSP.createAnnotationWidget.prototype.sendLdtData = function(contents, callback) {
var _this = this;
- var apiJson = {annotations : [{}], meta: {}};
+ var apiJson = {
+ format : "http://advene.org/ns/cinelab/",
+ annotations : [
+ {}
+ ],
+ meta: {}};
var annotation = apiJson.annotations[0];
- annotation.media = this._serializer.currentMedia()["id"];
+ annotation.media = this.currentMedia()["id"];
if (this.cinecast_version) {
annotation.begin = Math.round(this._Popcorn.currentTime() * 1000);
annotation.end = annotation.begin;
} else {
- var duration = this._serializer.getDuration();
+ var duration = this.getDuration();
annotation.begin = +((duration * (this.sliceLeft / 100)).toFixed(0));
annotation.end = +((duration * ((this.sliceWidth + this.sliceLeft) / 100)).toFixed(0));
}
// boundary checks
annotation.begin = Math.max(0, annotation.begin);
- annotation.end = Math.min(this._serializer.getDuration(), annotation.end);
+ annotation.end = Math.min(this.getDuration(), annotation.end);
annotation.type = ( this.cinecast_version ? "cinecast:UserAnnotation" : ( this._serializer.getContributions() || "" ));
if (typeof(annotation.type) === "undefined")
@@ -438,19 +434,28 @@
meta.created = Date().toString();
- // All #hashtags are added to tags
- var _tags = contents.toLowerCase().match(/#[^#\s]+\b/gim) || [];
- this.selector.find('.Ldt-createAnnotation-keyword-button').each(function() {
- var _tx = IriSP.jQuery(this).text(),
- _rx = IriSP.regexpFromText(_tx);
+ var _tags = [];
+ IriSP._(this.tags).each(function(_v) {
+ var _rx = IriSP.regexpFromText(_v.meta.description);
if (_rx.test(contents)) {
- _tags.push(_tx.toLowerCase())
+ _tags.push(_v.id);
}
});
-
+
+ if (typeof this.remote_tags == "object") {
+ _tags = IriSP._(_tags).map(function(_t) {
+ return _this.remote_tags.id + ':' + _t
+ });
+ if (typeof apiJson.imports == "undefined") {
+ apiJson.imports = [];
+ }
+ apiJson.imports.push({
+ "id" : this.remote_tags.id,
+ "url" : this.remote_tags.url
+ })
+ }
annotation.tags = IriSP.underscore.uniq(_tags);
-
var jsonString = JSON.stringify(apiJson);
var project_id = this._serializer._data.meta.id;
@@ -495,6 +500,7 @@
_this._serializer._data.annotations.push(annotation);
_this._Popcorn.trigger("IriSP.createAnnotationWidget.addedAnnotation", annotation);
+ this.selector.find(".Ldt-createAnnotation-Description").val("");
callback(annotation);
}),
error:
--- a/src/js/widgets/playerWidget.js Tue Apr 03 20:30:12 2012 +0200
+++ b/src/js/widgets/playerWidget.js Fri Apr 06 16:49:32 2012 +0200
@@ -127,7 +127,7 @@
}
// we get it at each call because it may change.
- var duration = this._serializer.getDuration() / 1000;
+ var duration = this.getDuration() / 1000;
var totalTime = IriSP.secondsToTime(duration);
var elapsedTime = IriSP.secondsToTime(this._Popcorn.currentTime());
--- a/src/js/widgets/polemicWidget.js Tue Apr 03 20:30:12 2012 +0200
+++ b/src/js/widgets/polemicWidget.js Fri Apr 06 16:49:32 2012 +0200
@@ -51,7 +51,7 @@
var lineSize = this.width; // timeline pixel width
var nbrframes = lineSize/frameSize; // frame numbers
var numberOfTweet = 0; // number of tweet overide later
- var duration = this._serializer.getDuration(); // timescale width
+ var duration = this.getDuration(); // timescale width
var frameLength = lineSize / frameSize; // frame timescale
var timeline;
var colors = new Array("","#1D973D","#036AAE","#CE0A15","#C5A62D","#585858");
@@ -385,7 +385,7 @@
IriSP.PolemicWidget.prototype.sliderUpdater = function() {
var time = +this._Popcorn.currentTime();
- var duration = this._serializer.getDuration();
+ var duration = this.getDuration();
this.paperSlider.attr("width", time * (this.width / (duration / 1000)));
--- a/src/js/widgets/segmentsWidget.js Tue Apr 03 20:30:12 2012 +0200
+++ b/src/js/widgets/segmentsWidget.js Fri Apr 06 16:49:32 2012 +0200
@@ -9,7 +9,6 @@
this._Popcorn.listen("IriSP.search.closed", function() { self.searchFieldClosedHandler.call(self); });
this._Popcorn.listen("IriSP.search.cleared", function() { self.searchFieldClearedHandler.call(self); });
- this.checkOption("cinecast_version");
this.defaultColors = ["#1f77b4","#aec7e8","#ff7f0e","#ffbb78","#2ca02c","#98df8a","#d62728","#ff9896","#9467bd","#c5b0d5","#8c564b","#c49c94","#e377c2","#f7b6d2","#7f7f7f","#c7c7c7","#bcbd22","#dbdb8d","#17becf","#9edae5"]
};
@@ -26,7 +25,7 @@
this.positionMarker = this.selector.find(".Ldt-SegmentPositionMarker");
this._Popcorn.listen("timeupdate", IriSP.wrap(this, this.positionUpdater));
- var duration = this._serializer.getDuration();
+ var duration = this.getDuration();
if (this.cinecast_version) {
var segments_annotations = IriSP.underscore.filter(
@@ -193,7 +192,7 @@
};
IriSP.SegmentsWidget.prototype.positionUpdater = function() {
- var duration = this._serializer.getDuration() / 1000;
+ var duration = this.getDuration() / 1000;
var time = this._Popcorn.currentTime();
//var position = ((time / duration) * 100).toFixed(2);
var position = ((time / duration) * 100).toFixed(2);
--- a/src/js/widgets/sliderWidget.js Tue Apr 03 20:30:12 2012 +0200
+++ b/src/js/widgets/sliderWidget.js Fri Apr 06 16:49:32 2012 +0200
@@ -52,7 +52,7 @@
var time = this._Popcorn.currentTime();
- var duration = this._serializer.getDuration() / 1000;
+ var duration = this.getDuration() / 1000;
var percents = time / duration;
/* we do these complicated calculations to center exactly
@@ -92,7 +92,7 @@
var width = this.sliderBackground.width();
var relX = event.pageX - parentOffset.left;
- var duration = this._serializer.getDuration() / 1000;
+ var duration = this.getDuration() / 1000;
var newTime = ((relX / width) * duration).toFixed(2);
this._Popcorn.currentTime(newTime);
@@ -105,7 +105,7 @@
var width = this.sliderBackground.width();
var relX = event.pageX - parentOffset.left;
- var duration = this._serializer.getDuration() / 1000;
+ var duration = this.getDuration() / 1000;
var newTime = ((relX / width) * duration).toFixed(2);
this._Popcorn.currentTime(newTime);
@@ -133,7 +133,7 @@
IriSP.SliderWidget.prototype.mouseOutHandler = function(event) {
this.timeOutId = window.setTimeout(IriSP.wrap(this, this.minimizeOnTimeout),
- IriSP.widgetsDefaults.SliderWidget.minimize_period);
+ this.minimize_period);
};
IriSP.SliderWidget.prototype.minimizeOnTimeout = function(event) {
@@ -162,7 +162,7 @@
var width = this.sliderBackground.width();
var relX = event.originalEvent.pageX - parentOffset.left;
- var duration = this._serializer.getDuration() / 1000;
+ var duration = this.getDuration() / 1000;
var newTime = ((relX / width) * duration).toFixed(2);
this._Popcorn.currentTime(newTime);
--- a/src/js/widgets/sparklineWidget.js Tue Apr 03 20:30:12 2012 +0200
+++ b/src/js/widgets/sparklineWidget.js Fri Apr 06 16:49:32 2012 +0200
@@ -5,9 +5,6 @@
this._oldAnnotation = null;
this._results = [];
- this.lineColor = this._config.lineColor || "#7492b4";
- this.fillColor = this._config.fillColor || "#aeaeb8";
- this.lineWidth = this._config.lineWidth || 2;
this.slices = this._config.slices || Math.floor(this.width/20);
if (!this.width) {
this.width = this.selector.width();
@@ -19,7 +16,6 @@
if (this._config.background) {
this.selector.css("background", this._config.background);
}
- this.checkOption('cinecast_version');
};
@@ -31,7 +27,7 @@
/** draw the sparkline using jquery sparkline */
IriSP.SparklineWidget.prototype.draw = function() {
- this.duration = this._serializer.getDuration();
+ this.duration = this.getDuration();
this.paper = new Raphael(this.selector[0], this.width, this.height);
var _this = this;
@@ -58,7 +54,7 @@
_sliceDuration = Math.floor( this.duration / this.slices),
_results = _(_.range(this.slices)).map(function(_i) {
return _(_annotations).filter(function(_a){
- return (_a.begin <= (1 + _i) * _sliceDuration) && (_a.end >= _i * _sliceDuration) && (!_this.cinecast_version || _a.type == "cinecast:UserAnnotation")
+ return (_a.begin <= (1 + _i) * _sliceDuration) && (_a.end >= _i * _sliceDuration)
}).length;
});
}
--- a/src/js/widgets/stackGraphWidget.js Tue Apr 03 20:30:12 2012 +0200
+++ b/src/js/widgets/stackGraphWidget.js Fri Apr 06 16:49:32 2012 +0200
@@ -5,53 +5,23 @@
IriSP.StackGraphWidget.prototype = new IriSP.Widget();
IriSP.StackGraphWidget.prototype.draw = function() {
- var _ = IriSP._,
- _defaultTags = [
- {
- "keywords" : [ "++" ],
- "description" : "positif",
- "color" : "#1D973D"
- },
- {
- "keywords" : [ "--" ],
- "description" : "negatif",
- "color" : "#CE0A15"
- },
- {
- "keywords" : [ "==" ],
- "description" : "reference",
- "color" : "#C5A62D"
- },
- {
- "keywords" : [ "??" ],
- "description" : "question",
- "color" : "#036AAE"
- }
- ],
- _defaultDefColor = "#585858";
+ var _ = IriSP._;
this.height = this._config.height || 50;
this.width = this.selector.width();
- this.isStreamGraph = this._config.streamgraph || false;
- this.sliceCount = this._config.slices || ~~(this.width/(this.isStreamGraph ? 20 : 5));
- this.tagconf = (this._config.tags
- ? this._config.tags
- : _defaultTags);
- IriSP._(this.tagconf).each(function(_a) {
+ this.slices = this._config.slices || ~~(this.width/(this.streamgraph ? 20 : 5));
+ _(this.tags).each(function(_a) {
_a.regexp = new RegExp(_(_a.keywords).map(function(_k) {
return _k.replace(/([\W])/gm,'\\$1');
}).join("|"),"im")
});
- this.defaultcolorconf = (this._config.defaultcolor
- ? this._config.defaultcolor
- : _defaultDefColor);
this.paper = new Raphael(this.selector[0], this.width, this.height);
this.groups = [];
- this.duration = this._serializer.getDuration();
+ this.duration = this.getDuration();
var _annotationType = this._serializer.getTweets(),
- _sliceDuration = ~~ ( this.duration / this.sliceCount),
+ _sliceDuration = ~~ ( this.duration / this.slices),
_annotations = this._serializer._data.annotations,
- _groupedAnnotations = _(_.range(this.sliceCount)).map(function(_i) {
+ _groupedAnnotations = _(_.range(this.slices)).map(function(_i) {
return _(_annotations).filter(function(_a){
return (_a.begin <= (1 + _i) * _sliceDuration) && (_a.end >= _i * _sliceDuration)
});
@@ -60,25 +30,25 @@
return _g.length
}).length,
_scale = this.height / _max,
- _width = this.width / this.sliceCount,
+ _width = this.width / this.slices,
_showTitle = !this._config.excludeTitle,
_showDescription = !this._config.excludeDescription;
- var _paths = _(this.tagconf).map(function() {
+ var _paths = _(this.tags).map(function() {
return [];
});
_paths.push([]);
- for (var i = 0; i < this.sliceCount; i++) {
+ for (var i = 0; i < this.slices; i++) {
var _group = _groupedAnnotations[i];
if (_group) {
- var _vol = _(this.tagconf).map(function() {
+ var _vol = _(this.tags).map(function() {
return 0;
});
for (var j = 0; j < _group.length; j++){
var _txt = (_showTitle ? _group[j].content.title : '') + ' ' + (_showDescription ? _group[j].content.description : '')
- var _tags = _(this.tagconf).map(function(_tag) {
+ var _tags = _(this.tags).map(function(_tag) {
return (_txt.search(_tag.regexp) == -1 ? 0 : 1)
}),
_nbtags = _(_tags).reduce(function(_a,_b) {
@@ -96,20 +66,20 @@
_nbneutre = _group.length - _nbtags,
_h = _nbneutre * _scale,
_base = this.height - _h;
- if (!this.isStreamGraph) {
+ if (!this.streamgraph) {
this.paper.rect(i * _width, _base, _width - 1, _h ).attr({
"stroke" : "none",
- "fill" : this.defaultcolorconf
+ "fill" : this.defaultcolor
});
}
_paths[0].push(_base);
- for (var j = 0; j < this.tagconf.length; j++) {
+ for (var j = 0; j < this.tags.length; j++) {
_h = _vol[j] * _scale;
_base = _base - _h;
- if (!this.isStreamGraph) {
+ if (!this.streamgraph) {
this.paper.rect(i * _width, _base, _width - 1, _h ).attr({
"stroke" : "none",
- "fill" : this.tagconf[j].color
+ "fill" : this.tags[j].color
});
}
_paths[j+1].push(_base);
@@ -121,13 +91,13 @@
for (var j = 0; j < _paths.length; j++) {
_paths[j].push(this.height);
}
- this.groups.push(_(this.tagconf).map(function() {
+ this.groups.push(_(this.tags).map(function() {
return 0;
}));
}
}
- if (this.isStreamGraph) {
+ if (this.streamgraph) {
for (var j = _paths.length - 1; j >= 0; j--) {
var _d = _(_paths[j]).reduce(function(_memo, _v, _k) {
return _memo + ( _k
@@ -136,7 +106,7 @@
},'') + 'L' + this.width + ' ' + _paths[j][_paths[j].length - 1] + 'L' + this.width + ' ' + this.height + 'L0 ' + this.height;
this.paper.path(_d).attr({
"stroke" : "none",
- "fill" : (j ? this.tagconf[j-1].color : this.defaultcolorconf)
+ "fill" : (j ? this.tags[j-1].color : this.defaultcolor)
});
}
}
@@ -162,7 +132,7 @@
_this.updateTooltip(_e);
// Trace
var relX = _e.pageX - _this.selector.offset().left;
- var _duration = _this._serializer.getDuration();
+ var _duration = _this.getDuration();
var _time = parseInt((relX / _this.width) * _duration);
_this._Popcorn.trigger("IriSP.TraceWidget.MouseEvents", {
"widget" : "StackGraphWidget",
@@ -203,10 +173,10 @@
};
IriSP.StackGraphWidget.prototype.updateTooltip = function(event) {
- var _segment = Math.max(0,Math.min(this.groups.length - 1, Math.floor(this.sliceCount * (event.pageX - this.selector.offset().left)/this.width))),
+ var _segment = Math.max(0,Math.min(this.groups.length - 1, Math.floor(this.slices * (event.pageX - this.selector.offset().left)/this.width))),
_valeurs = this.groups[_segment],
- _width = this.width / this.sliceCount,
- _html = '<ul style="list-style: none; margin: 0; padding: 0;">' + IriSP._(this.tagconf).map(function(_tag, _i) {
+ _width = this.width / this.slices,
+ _html = '<ul style="list-style: none; margin: 0; padding: 0;">' + IriSP._(this.tags).map(function(_tag, _i) {
return '<li style="clear: both;"><span style="float: left; width: 10px; height: 10px; margin: 2px; background: '
+ _tag.color
+ ';"></span>'
@@ -216,7 +186,7 @@
+ '</li>';
}).join('') + '</ul>';
this.TooltipWidget._shown = false; // Vraiment, on ne peut pas ouvrir le widget s'il n'est pas encore ouvert ?
- this.TooltipWidget.show('','',(_segment + .5)* this.width / this.sliceCount, 0);
+ this.TooltipWidget.show('','',(_segment + .5)* this.width / this.slices, 0);
this.TooltipWidget.selector.find(".tip").html(_html);
this.rectangleFocus.attr({
"x" : _segment * _width,
--- a/src/js/widgets/tweetsWidget.js Tue Apr 03 20:30:12 2012 +0200
+++ b/src/js/widgets/tweetsWidget.js Fri Apr 06 16:49:32 2012 +0200
@@ -19,7 +19,7 @@
var title = IriSP.formatTweet(annotation.content.title);
var img = annotation.content.img.src;
if (typeof(img) === "undefined" || img === "" || img === "None") {
- img = IriSP.widgetsDefaults.TweetsWidget.default_profile_picture;
+ img = this.default_profile_picture;
}
var imageMarkup = IriSP.templToHTML("<img src='{{src}}' alt='user image'></img>",
@@ -63,7 +63,7 @@
this.drawTweet(annotation);
var time = this._Popcorn.currentTime();
- this._timeoutId = window.setTimeout(IriSP.wrap(this, this.clearPanel), IriSP.widgetsDefaults.TweetsWidget.tweet_display_period);
+ this._timeoutId = window.setTimeout(IriSP.wrap(this, this.clearPanel), this.tweet_display_period);
};
--- a/src/templates/annotationsListWidget.html Tue Apr 03 20:30:12 2012 +0200
+++ b/src/templates/annotationsListWidget.html Fri Apr 06 16:49:32 2012 +0200
@@ -3,7 +3,11 @@
<ul class='Ldt-AnnotationsList-ul'>
{{#annotations}}
<li id='Ldt-Annotation-li-{{id}}' class='Ldt-AnnotationsList-li Ldt-TraceMe'>
- <img class='Ldt-AnnotationsList-Thumbnail' src='{{thumbnail}}' />
+ {{^url}} <a href='#id={{id}}'> {{/url}}
+ {{! otherwise link to url }}
+ {{#url}} <a href='{{url}}'> {{/url}}
+ <img class='Ldt-AnnotationsList-Thumbnail' src='{{thumbnail}}' />
+ </a>
<div class='Ldt-AnnotationsList-Duration'>
<span class='Ldt-AnnotationsList-Begin'>{{begin}}</span>
<span class='Ldt-AnnotationsList-TcSeparator'>-</span>
@@ -12,14 +16,14 @@
<div class='Ldt-AnnotationsList-Title'>
{{! if the url is not present, it means that the annotation exists
in the current project }}
+ {{title}}
+ </div>
+ <div class='Ldt-AnnotationsList-Description'>
{{^url}} <a href='#id={{id}}'> {{/url}}
{{! otherwise link to url }}
{{#url}} <a href='{{url}}'> {{/url}}
- {{title}}
- </a>
- </div>
- <div class='Ldt-AnnotationsList-Description'>
{{desc}}
+ </a>
</div>
{{#tags.length}}
<ul class='Ldt-AnnotationsList-Tags'>
--- a/src/templates/createAnnotationWidget.html Tue Apr 03 20:30:12 2012 +0200
+++ b/src/templates/createAnnotationWidget.html Fri Apr 06 16:49:32 2012 +0200
@@ -23,19 +23,19 @@
<div class='Ldt-createAnnotation-profileArrow'></div>
</div>
<button class='Ldt-createAnnotation-submitButton Ldt-TraceMe'>{{l10n.submit}}</button>
- {{#keywords.length}}
+ {{#tags.length}}
<div class='Ldt-createAnnotation-btnblock Ldt-createAnnotation-keywords'>
<label>{{l10n.add_keywords}} :</label>
<ul class='Ldt-floatList'>
- {{#keywords}}
- <li><button class='Ldt-createAnnotation-keyword-button Ldt-TraceMe'>{{.}}</button></li>
- {{/keywords}}
+ {{#tags}}
+ <li><button class='Ldt-createAnnotation-keyword-button Ldt-TraceMe' tag-id='{{id}}'>{{meta.description}}</button></li>
+ {{/tags}}
</ul>
</div>
- {{#random_keywords}}
- <button class='Ldt-createAnnotation-moar-keywordz'>{{l10n.moar_tagz}}</button>
- {{/random_keywords}}
- {{/keywords.length}}
+ {{#random_tags}}
+ <button class='Ldt-createAnnotation-moar-keywordz'>{{l10n.more_tags}}</button>
+ {{/random_tags}}
+ {{/tags.length}}
{{#polemic_mode}}
{{#polemics.length}}
<div class='Ldt-createAnnotation-btnblock Ldt-createAnnotation-polemics'>
Binary file test/integration/allocine_dossier_independant/allocine_test/AcPlayer_v3.0.swf has changed
--- a/test/integration/allocine_dossier_independant/allocine_test/bamako.json Tue Apr 03 20:30:12 2012 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,933 +0,0 @@
-{
- "medias": [
- {
- "id": "cinecast:Bamako",
- "url": "rtmpe://cp41629.edgefcs.net/ondemand/mp4:ondemand/nmedia/cinecast/Bamako1500.m4v",
- "meta": {
- "mediaid": 1,
- "actors": ["Aissa Maiga", "Tiecoura Traore", "Maimouna Helene Diarra"],
- "directors": ["Abderrahmane Sissako"],
- "nationalities": ["FR"],
- "duration": 7080000,
- "productionYear": "2006",
- "synopsis": null,
- "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/bamako/42851-1-fre-FR/Bamako3_reference.jpg",
- "title": "Bamako",
- "version": "VOST"
- }
- }
- ],
- "annotation_types": [
- {
- "id": "cinecast:UserAnnotation",
- "meta": {
- "description": "Annotation made during the Cinecast Festival."
- }
- },
- {
- "id": "cinecast:MovieExtract",
- "meta": {
- "description": "Extract from a Movie."
- }
- }
- ],
- "annotations": [
- {
- "id": "ac:3637",
- "begin": 2516000,
- "end": 2516000,
- "timecode": 0,
- "content": {
- "data": "sdfdfdfd"
- },
- "media": "cinecast:Bamako",
- "tags": [],
- "type": "cinecast:UserAnnotation",
- "meta": {
- "mediaid": 1,
- "thumbnail": "/users/02/8/6/4/Z20010705122316617847468/img/1178887619_singe.jpg",
- "extract": "789849",
- "status": "active",
- "timestamp": 12994,
- "created": "2012-03-16T10:01:00.9370000",
- "creator": "ac:3",
- "creator_name": "Pierre",
- "url": "http:\/\/www.allocine.com/"
- }
- }, {
- "id": "ac:3638",
- "begin": 187000,
- "end": 187000,
- "timecode": 0,
- "content": {
- "data": "test #vodkaster #allocine #universcine"
- },
- "media": "cinecast:Bamako",
- "tags": ["#vodkaster", "#allocine", "#universcine"],
- "type": "cinecast:UserAnnotation",
- "meta": {
- "mediaid": 1,
- "thumbnail": "/users/02/7/7/4/Z20110103142031450307477/img/0tyw3myh.cce.jpg",
- "extract": "789849",
- "status": "active",
- "timestamp": 12995,
- "created": "2012-03-16T11:06:47.3170000",
- "creator": "ac:495",
- "creator_name": "Paul",
- "url": "http:\/\/www.allocine.com/"
- }
- }, {
- "id": "ac:3639",
- "begin": 164000,
- "end": 164000,
- "timecode": 0,
- "content": {
- "data": "edtgefvtdtevd dhevdgvbed debzdgbyezgbdyhebzyd bhd ehdbyhebyhddbhegzvdgevd ghdvegvdgezvdg devtgdvgezvd gbvdgevzgdvzegd gedvgezvd #vodkaster #allocine #universcine"
- },
- "media": "cinecast:Bamako",
- "tags": ["#vodkaster", "#allocine", "#universcine"],
- "type": "cinecast:UserAnnotation",
- "meta": {
- "mediaid": 1,
- "thumbnail": "/users/02/7/7/4/Z20110103142031450307477/img/0tyw3myh.cce.jpg",
- "extract": "789849",
- "status": "active",
- "timestamp": 12999,
- "created": "2012-03-16T11:14:14.7930000",
- "creator": "ac:495",
- "creator_name": "Paul",
- "url": "http:\/\/www.allocine.com/"
- }
- }, {
- "id": "ac:3640",
- "begin": 154000,
- "end": 154000,
- "timecode": 0,
- "content": {
- "data": "tegvdge"
- },
- "media": "cinecast:Bamako",
- "tags": [],
- "type": "cinecast:UserAnnotation",
- "meta": {
- "mediaid": 1,
- "thumbnail": "/users/02/7/7/4/Z20110103142031450307477/img/0tyw3myh.cce.jpg",
- "extract": "789849",
- "status": "active",
- "timestamp": 13003,
- "created": "2012-03-16T11:14:30.0930000",
- "creator": "ac:495",
- "creator_name": "Paul",
- "url": "http:\/\/www.allocine.com/"
- }
- }, {
- "id": "ac:3641",
- "begin": 177000,
- "end": 177000,
- "timecode": 0,
- "content": {
- "data": "test #vodkaster"
- },
- "media": "cinecast:Bamako",
- "tags": ["#vodkaster"],
- "type": "cinecast:UserAnnotation",
- "meta": {
- "mediaid": 1,
- "thumbnail": "/users/02/7/7/4/Z20110103142031450307477/img/0tyw3myh.cce.jpg",
- "extract": "789849",
- "status": "active",
- "timestamp": 13004,
- "created": "2012-03-16T11:27:56.9200000",
- "creator": "ac:495",
- "creator_name": "Paul",
- "url": "http:\/\/www.allocine.com/"
- }
- }, {
- "id": "ac:3642",
- "begin": 434000,
- "end": 434000,
- "timecode": 0,
- "content": {
- "data": "fgsdkjfgfsdkjgfkjgfjksdgjkkjgfkjsg"
- },
- "media": "cinecast:Bamako",
- "tags": [],
- "type": "cinecast:UserAnnotation",
- "meta": {
- "mediaid": 1,
- "thumbnail": "/users/02/5/4/4/Z20101124101755407924445/img/02kehkqh.re1.jpg",
- "extract": "789849",
- "status": "active",
- "timestamp": 13006,
- "created": "2012-03-16T11:49:33.0770000",
- "creator": "ac:513",
- "creator_name": "Jacques",
- "url": "http:\/\/www.allocine.com/"
- }
- }, {
- "id": "ac:3643",
- "begin": 177000,
- "end": 177000,
- "timecode": 0,
- "content": {
- "data": "tetsd dgzydg"
- },
- "media": "cinecast:Bamako",
- "tags": [],
- "type": "cinecast:UserAnnotation",
- "meta": {
- "mediaid": 1,
- "thumbnail": "/users/02/8/6/4/Z20010705122316617847468/img/1178887619_singe.jpg",
- "extract": "789849",
- "status": "active",
- "timestamp": 13007,
- "created": "2012-03-16T12:50:38.3100000",
- "creator": "ac:3",
- "creator_name": "Pierre",
- "url": "http:\/\/www.allocine.com/"
- }
- }, {
- "id": "ac:3644",
- "begin": 177000,
- "end": 177000,
- "timecode": 0,
- "content": {
- "data": "coucou"
- },
- "media": "cinecast:Bamako",
- "tags": [],
- "type": "cinecast:UserAnnotation",
- "meta": {
- "mediaid": 1,
- "thumbnail": "/users/02/4/2/5/Z20090108105245410444524/img/io54r5is.0qi.jpg",
- "extract": "789849",
- "status": "active",
- "timestamp": 13008,
- "created": "2012-03-16T13:37:48.3600000",
- "creator": "ac:382",
- "creator_name": "Martin",
- "url": "http:\/\/www.allocine.com/"
- }
- }, {
- "id": "ac:10806",
- "begin": 120000,
- "end": 120000,
- "timecode": 0,
- "content": {
- "data": "tetzfdtfzd"
- },
- "media": "cinecast:Bamako",
- "tags": [],
- "type": "cinecast:UserAnnotation",
- "meta": {
- "mediaid": 1,
- "thumbnail": "/users/02/7/7/4/Z20110103142031450307477/img/0tyw3myh.cce.jpg",
- "extract": "789849",
- "status": "active",
- "timestamp": 20201,
- "created": "2012-03-19T14:26:17.4870000",
- "creator": "ac:495",
- "creator_name": "Paul",
- "url": "http:\/\/www.allocine.com/"
- }
- }, {
- "id": "cinecast:789808",
- "type": "cinecast:MovieExtract",
- "media": "cinecast:Bamako",
- "meta": {
- "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34952\/25592345-4-fre-FR\/34952-Generique-de-debut-et-preparation-a-l-audience1_reference.jpg",
- "creator": "Vodkaster",
- "created": "1970-01-01T01:00:00+01:00"
- },
- "begin": 0,
- "end": 180000,
- "content": {
- "data": "G\u00e9n\u00e9rique de d\u00e9but et pr\u00e9paration \u00e0 l'audience"
- }
- }, {
- "id": "cinecast:789812",
- "type": "cinecast:MovieExtract",
- "media": "cinecast:Bamako",
- "meta": {
- "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34953\/25592424-3-fre-FR\/34953-Debut-de-l-audience1_reference.jpg",
- "creator": "Vodkaster",
- "created": "1970-01-01T01:00:00+01:00"
- },
- "begin": 180000,
- "end": 284000,
- "content": {
- "data": "D\u00e9but de l'audience"
- }
- }, {
- "id": "cinecast:789816",
- "type": "cinecast:MovieExtract",
- "media": "cinecast:Bamako",
- "meta": {
- "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34954\/25592478-3-fre-FR\/34954-Fin-du-spectacle-et-reprise-de-l-audience1_reference.jpg",
- "creator": "Vodkaster",
- "created": "1970-01-01T01:00:00+01:00"
- },
- "begin": 404000,
- "end": 579000,
- "content": {
- "data": "Fin du spectacle et reprise de l'audience"
- }
- }, {
- "id": "cinecast:789818",
- "type": "cinecast:MovieExtract",
- "media": "cinecast:Bamako",
- "meta": {
- "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34955\/25592528-3-fre-FR\/34955-Corruption-et-seduction1_reference.jpg",
- "creator": "Vodkaster",
- "created": "1970-01-01T01:00:00+01:00"
- },
- "begin": 579000,
- "end": 676000,
- "content": {
- "data": "Corruption et s\u00e9duction"
- }
- }, {
- "id": "cinecast:789820",
- "type": "cinecast:MovieExtract",
- "media": "cinecast:Bamako",
- "meta": {
- "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34956\/25592566-2-fre-FR\/34956-Des-chiffres-africains-calamiteux1_reference.jpg",
- "creator": "Vodkaster",
- "created": "1970-01-01T01:00:00+01:00"
- },
- "begin": 676000,
- "end": 797000,
- "content": {
- "data": "Des chiffres africains calamiteux"
- }
- }, {
- "id": "cinecast:789822",
- "type": "cinecast:MovieExtract",
- "media": "cinecast:Bamako",
- "meta": {
- "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34957\/25592606-2-fre-FR\/34957-un-ideal-de-societe-inadaptee1_reference.jpg",
- "creator": "Vodkaster",
- "created": "1970-01-01T01:00:00+01:00"
- },
- "begin": 797000,
- "end": 977000,
- "content": {
- "data": "un id\u00e9al de soci\u00e9t\u00e9 inadapt\u00e9e"
- }
- }, {
- "id": "cinecast:789824",
- "type": "cinecast:MovieExtract",
- "media": "cinecast:Bamako",
- "meta": {
- "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34958\/25592668-2-fre-FR\/34958-Supercherie-du-G81_reference.jpg",
- "creator": "Vodkaster",
- "created": "1970-01-01T01:00:00+01:00"
- },
- "begin": 977000,
- "end": 1143000,
- "content": {
- "data": "\"Supercherie\" du G8 ?"
- }
- }, {
- "id": "cinecast:789825",
- "type": "cinecast:MovieExtract",
- "media": "cinecast:Bamako",
- "meta": {
- "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34959\/25592703-2-fre-FR\/34959-C-est-un-debat-qui-depasse-l-Afrique1_reference.jpg",
- "creator": "Vodkaster",
- "created": "1970-01-01T01:00:00+01:00"
- },
- "begin": 1143000,
- "end": 1276000,
- "content": {
- "data": "C'est un d\u00e9bat qui d\u00e9passe l'Afrique"
- }
- }, {
- "id": "cinecast:789839",
- "type": "cinecast:MovieExtract",
- "media": "cinecast:Bamako",
- "meta": {
- "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34960\/25592937-2-fre-FR\/34960-Ce-monde-est-ouvert-aux-blancs-mais-pas-aux-noirs1_reference.jpg",
- "creator": "Vodkaster",
- "created": "1970-01-01T01:00:00+01:00"
- },
- "begin": 1276000,
- "end": 1456000,
- "content": {
- "data": "Ce monde est ouvert aux blancs mais pas aux noirs"
- }
- }, {
- "id": "cinecast:789849",
- "type": "cinecast:MovieExtract",
- "media": "cinecast:Bamako",
- "meta": {
- "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34961\/25593042-2-fre-FR\/34961-Standby1_reference.jpg",
- "creator": "Vodkaster",
- "created": "1970-01-01T01:00:00+01:00"
- },
- "begin": 1456000,
- "end": 1590000,
- "content": {
- "data": "Standby"
- }
- }, {
- "id": "cinecast:789854",
- "type": "cinecast:MovieExtract",
- "media": "cinecast:Bamako",
- "meta": {
- "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34963\/25593121-2-fre-FR\/34963-Expose-du-periple1_reference.jpg",
- "creator": "Vodkaster",
- "created": "1970-01-01T01:00:00+01:00"
- },
- "begin": 1590000,
- "end": 1761000,
- "content": {
- "data": "Expos\u00e9 du p\u00e9riple"
- }
- }, {
- "id": "cinecast:789874",
- "type": "cinecast:MovieExtract",
- "media": "cinecast:Bamako",
- "meta": {
- "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34967\/25593375-2-fre-FR\/34967-Expose-du-periple-21_reference.jpg",
- "creator": "Vodkaster",
- "created": "1970-01-01T01:00:00+01:00"
- },
- "begin": 1761000,
- "end": 1901000,
- "content": {
- "data": "Expos\u00e9 du p\u00e9riple 2"
- }
- }, {
- "id": "cinecast:789878",
- "type": "cinecast:MovieExtract",
- "media": "cinecast:Bamako",
- "meta": {
- "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34968\/25593421-2-fre-FR\/34968-L-audience-est-suspendue1_reference.jpg",
- "creator": "Vodkaster",
- "created": "1970-01-01T01:00:00+01:00"
- },
- "begin": 1901000,
- "end": 2081000,
- "content": {
- "data": "L'audience est suspendue"
- }
- }, {
- "id": "cinecast:789880",
- "type": "cinecast:MovieExtract",
- "media": "cinecast:Bamako",
- "meta": {
- "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34969\/25593461-2-fre-FR\/34969-Activites-et-problemes-du-soir1_reference.jpg",
- "creator": "Vodkaster",
- "created": "1970-01-01T01:00:00+01:00"
- },
- "begin": 2081000,
- "end": 2134000,
- "content": {
- "data": "Activit\u00e9s et probl\u00e8mes du soir"
- }
- }, {
- "id": "cinecast:789884",
- "type": "cinecast:MovieExtract",
- "media": "cinecast:Bamako",
- "meta": {
- "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34970\/25593533-4-fre-FR\/34970-Death-in-Tumbuktu-11_reference.jpg",
- "creator": "Vodkaster",
- "created": "1970-01-01T01:00:00+01:00"
- },
- "begin": 2134000,
- "end": 2301000,
- "content": {
- "data": "Death in Tumbuktu 1"
- }
- }, {
- "id": "cinecast:789888",
- "type": "cinecast:MovieExtract",
- "media": "cinecast:Bamako",
- "meta": {
- "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34971\/25593579-2-fre-FR\/34971-Death-in-Tumbuktu-21_reference.jpg",
- "creator": "Vodkaster",
- "created": "1970-01-01T01:00:00+01:00"
- },
- "begin": 2301000,
- "end": 2457000,
- "content": {
- "data": "Death in Tumbuktu 2"
- }
- }, {
- "id": "cinecast:789891",
- "type": "cinecast:MovieExtract",
- "media": "cinecast:Bamako",
- "meta": {
- "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34972\/25593626-3-fre-FR\/34972-Une-vie-et-un-couple-precaires1_reference.jpg",
- "creator": "Vodkaster",
- "created": "1970-01-01T01:00:00+01:00"
- },
- "begin": 2457000,
- "end": 2624000,
- "content": {
- "data": "Une vie et un couple pr\u00e9caires"
- }
- }, {
- "id": "cinecast:789896",
- "type": "cinecast:MovieExtract",
- "media": "cinecast:Bamako",
- "meta": {
- "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34973\/25593677-3-fre-FR\/34973-Un-mariage-interrompt-l-audience1_reference.jpg",
- "creator": "Vodkaster",
- "created": "1970-01-01T01:00:00+01:00"
- },
- "begin": 2624000,
- "end": 2763000,
- "content": {
- "data": "Un mariage interrompt l'audience"
- }
- }, {
- "id": "cinecast:789901",
- "type": "cinecast:MovieExtract",
- "media": "cinecast:Bamako",
- "meta": {
- "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34974\/25593734-2-fre-FR\/34974-L-Afrique-n-a-t-elle-plus-aucun-moyen-financier1_reference.jpg",
- "creator": "Vodkaster",
- "created": "1970-01-01T01:00:00+01:00"
- },
- "begin": 2763000,
- "end": 2903000,
- "content": {
- "data": "L'Afrique n'a-t-elle plus aucun moyen financier ?"
- }
- }, {
- "id": "cinecast:789904",
- "type": "cinecast:MovieExtract",
- "media": "cinecast:Bamako",
- "meta": {
- "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34975\/25593779-2-fre-FR\/34975-BM-ET-FMI-les-seuls-coupables1_reference.jpg",
- "creator": "Vodkaster",
- "created": "1970-01-01T01:00:00+01:00"
- },
- "begin": 2903000,
- "end": 3056000,
- "content": {
- "data": "BM ET FMI : les seuls coupables ?"
- }
- }, {
- "id": "cinecast:789906",
- "type": "cinecast:MovieExtract",
- "media": "cinecast:Bamako",
- "meta": {
- "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34976\/25593821-2-fre-FR\/34976-Reflexion-sur-le-role-des-banques1_reference.jpg",
- "creator": "Vodkaster",
- "created": "1970-01-01T01:00:00+01:00"
- },
- "begin": 3056000,
- "end": 3110000,
- "content": {
- "data": "R\u00e9flexion sur le r\u00f4le des banques"
- }
- }, {
- "id": "cinecast:789911",
- "type": "cinecast:MovieExtract",
- "media": "cinecast:Bamako",
- "meta": {
- "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34978\/25593906-2-fre-FR\/34978-Absence-d-ambassade-d-Israel-preuve-de-l-anti-developpement1_reference.jpg",
- "creator": "Vodkaster",
- "created": "1970-01-01T01:00:00+01:00"
- },
- "begin": 3110000,
- "end": 3202000,
- "content": {
- "data": "Absence d'ambassade d'Isra\u00ebl = preuve de l'anti-d\u00e9veloppement ?"
- }
- }, {
- "id": "cinecast:789914",
- "type": "cinecast:MovieExtract",
- "media": "cinecast:Bamako",
- "meta": {
- "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34979\/25593951-2-fre-FR\/34979-Colonialisme-latent1_reference.jpg",
- "creator": "Vodkaster",
- "created": "1970-01-01T01:00:00+01:00"
- },
- "begin": 3202000,
- "end": 3359000,
- "content": {
- "data": "Colonialisme latent"
- }
- }, {
- "id": "cinecast:789917",
- "type": "cinecast:MovieExtract",
- "media": "cinecast:Bamako",
- "meta": {
- "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34981\/25594026-2-fre-FR\/34981-Colonialisme-latent-21_reference.jpg",
- "creator": "Vodkaster",
- "created": "1970-01-01T01:00:00+01:00"
- },
- "begin": 3359000,
- "end": 3411000,
- "content": {
- "data": "Colonialisme latent 2"
- }
- }, {
- "id": "cinecast:789919",
- "type": "cinecast:MovieExtract",
- "media": "cinecast:Bamako",
- "meta": {
- "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34982\/25594093-2-fre-FR\/34982-Colonialisme-latent-31_reference.jpg",
- "creator": "Vodkaster",
- "created": "1970-01-01T01:00:00+01:00"
- },
- "begin": 3522000,
- "end": 3573000,
- "content": {
- "data": "Colonialisme latent 3"
- }
- }, {
- "id": "cinecast:789921",
- "type": "cinecast:MovieExtract",
- "media": "cinecast:Bamako",
- "meta": {
- "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34983\/25594133-2-fre-FR\/34983-Sermon-du-pasteur1_reference.jpg",
- "creator": "Vodkaster",
- "created": "1970-01-01T01:00:00+01:00"
- },
- "begin": 3573000,
- "end": 3722000,
- "content": {
- "data": "Sermon du pasteur"
- }
- }, {
- "id": "cinecast:789925",
- "type": "cinecast:MovieExtract",
- "media": "cinecast:Bamako",
- "meta": {
- "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34985\/25594213-2-fre-FR\/34985-Standby-21_reference.jpg",
- "creator": "Vodkaster",
- "created": "1970-01-01T01:00:00+01:00"
- },
- "begin": 3722000,
- "end": 3807000,
- "content": {
- "data": "Standby 2"
- }
- }, {
- "id": "cinecast:789927",
- "type": "cinecast:MovieExtract",
- "media": "cinecast:Bamako",
- "meta": {
- "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34986\/25594280-2-fre-FR\/34986-Samba-Diakite1_reference.jpg",
- "creator": "Vodkaster",
- "created": "1970-01-01T01:00:00+01:00"
- },
- "begin": 3807000,
- "end": 3981000,
- "content": {
- "data": "Samba Diakit\u00e9"
- }
- }, {
- "id": "cinecast:789928",
- "type": "cinecast:MovieExtract",
- "media": "cinecast:Bamako",
- "meta": {
- "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34987\/25594315-2-fre-FR\/34987-Audience-et-contre-audience1_reference.jpg",
- "creator": "Vodkaster",
- "created": "1970-01-01T01:00:00+01:00"
- },
- "begin": 3981000,
- "end": 4033000,
- "content": {
- "data": "Audience et contre-audience"
- }
- }, {
- "id": "cinecast:789929",
- "type": "cinecast:MovieExtract",
- "media": "cinecast:Bamako",
- "meta": {
- "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34988\/25594350-3-fre-FR\/34988-Theorie-du-complot1_reference.jpg",
- "creator": "Vodkaster",
- "created": "1970-01-01T01:00:00+01:00"
- },
- "begin": 4033000,
- "end": 4197000,
- "content": {
- "data": "Th\u00e9orie du complot"
- }
- }, {
- "id": "cinecast:789931",
- "type": "cinecast:MovieExtract",
- "media": "cinecast:Bamako",
- "meta": {
- "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34989\/25594417-3-fre-FR\/34989-Reponse-a-la-theorie-du-complot1_reference.jpg",
- "creator": "Vodkaster",
- "created": "1970-01-01T01:00:00+01:00"
- },
- "begin": 4197000,
- "end": 4358000,
- "content": {
- "data": "R\u00e9ponse \u00e0 la th\u00e9orie du complot"
- }
- }, {
- "id": "cinecast:789933",
- "type": "cinecast:MovieExtract",
- "media": "cinecast:Bamako",
- "meta": {
- "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34990\/25594484-2-fre-FR\/34990-Recit-d-un-reve1_reference.jpg",
- "creator": "Vodkaster",
- "created": "1970-01-01T01:00:00+01:00"
- },
- "begin": 4358000,
- "end": 4443000,
- "content": {
- "data": "R\u00e9cit d'un r\u00eave"
- }
- }, {
- "id": "cinecast:789934",
- "type": "cinecast:MovieExtract",
- "media": "cinecast:Bamako",
- "meta": {
- "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34991\/25594519-2-fre-FR\/34991-Aucune-preuve-qui-soutienne-la-theorie-du-complot1_reference.jpg",
- "creator": "Vodkaster",
- "created": "1970-01-01T01:00:00+01:00"
- },
- "begin": 4443000,
- "end": 4545000,
- "content": {
- "data": "Aucune preuve qui soutienne la th\u00e9orie du complot"
- }
- }, {
- "id": "cinecast:789940",
- "type": "cinecast:MovieExtract",
- "media": "cinecast:Bamako",
- "meta": {
- "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34992\/25594575-2-fre-FR\/34992-Triste-soiree1_reference.jpg",
- "creator": "Vodkaster",
- "created": "1970-01-01T01:00:00+01:00"
- },
- "begin": 4545000,
- "end": 4620000,
- "content": {
- "data": "Triste soir\u00e9e"
- }
- }, {
- "id": "cinecast:789941",
- "type": "cinecast:MovieExtract",
- "media": "cinecast:Bamako",
- "meta": {
- "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34993\/25594610-2-fre-FR\/34993-Le-tissu-social-est-il-detruit1_reference.jpg",
- "creator": "Vodkaster",
- "created": "1970-01-01T01:00:00+01:00"
- },
- "begin": 4620000,
- "end": 4729000,
- "content": {
- "data": "Le tissu social est-il d\u00e9truit ?"
- }
- }, {
- "id": "cinecast:789945",
- "type": "cinecast:MovieExtract",
- "media": "cinecast:Bamako",
- "meta": {
- "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34994\/25594660-2-fre-FR\/34994-Plaidoirie-de-Maitre-Rappaport1_reference.jpg",
- "creator": "Vodkaster",
- "created": "1970-01-01T01:00:00+01:00"
- },
- "begin": 4729000,
- "end": 4908000,
- "content": {
- "data": "Plaidoirie de Ma\u00eetre Rappaport"
- }
- }, {
- "id": "cinecast:790160",
- "type": "cinecast:MovieExtract",
- "media": "cinecast:Bamako",
- "meta": {
- "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/35018\/25597011-3-fre-FR\/35018-Plaidoirie-de-Maitre-Rappaport-21_reference.jpg",
- "creator": "Vodkaster",
- "created": "1970-01-01T01:00:00+01:00"
- },
- "begin": 4908000,
- "end": 5081000,
- "content": {
- "data": "Plaidoirie de Ma\u00eetre Rappaport 2"
- }
- }, {
- "id": "cinecast:790173",
- "type": "cinecast:MovieExtract",
- "media": "cinecast:Bamako",
- "meta": {
- "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/35020\/25597155-2-fre-FR\/35020-Chanter-pour-se-faire-entendre1_reference.jpg",
- "creator": "Vodkaster",
- "created": "1970-01-01T01:00:00+01:00"
- },
- "begin": 5082000,
- "end": 5262000,
- "content": {
- "data": "Chanter pour se faire entendre"
- }
- }, {
- "id": "cinecast:790194",
- "type": "cinecast:MovieExtract",
- "media": "cinecast:Bamako",
- "meta": {
- "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/35021\/25597543-3-fre-FR\/35021-Plaidoirie-de-Maitre-William-Bourdon1_reference.jpg",
- "creator": "Vodkaster",
- "created": "1970-01-01T01:00:00+01:00"
- },
- "begin": 5262000,
- "end": 5434000,
- "content": {
- "data": "Plaidoirie de Ma\u00eetre William Bourdon"
- }
- }, {
- "id": "cinecast:790201",
- "type": "cinecast:MovieExtract",
- "media": "cinecast:Bamako",
- "meta": {
- "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/35022\/25597618-3-fre-FR\/35022-Plaidoirie-de-Maitre-William-Bourdon-21_reference.jpg",
- "creator": "Vodkaster",
- "created": "1970-01-01T01:00:00+01:00"
- },
- "begin": 5434000,
- "end": 5588000,
- "content": {
- "data": "Plaidoirie de Ma\u00eetre William Bourdon 2"
- }
- }, {
- "id": "cinecast:790207",
- "type": "cinecast:MovieExtract",
- "media": "cinecast:Bamako",
- "meta": {
- "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/35023\/25597704-3-fre-FR\/35023-Plaidoirie-de-Wiliam-Bourdon-41_reference.jpg",
- "creator": "Vodkaster",
- "created": "1970-01-01T01:00:00+01:00"
- },
- "begin": 5768000,
- "end": 5824000,
- "content": {
- "data": "Plaidoirie de Wiliam Bourdon 4"
- }
- }, {
- "id": "cinecast:790210",
- "type": "cinecast:MovieExtract",
- "media": "cinecast:Bamako",
- "meta": {
- "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/35024\/25597774-3-fre-FR\/35024-Plaidoirie-de-Aissata-Tall-Sall1_reference.jpg",
- "creator": "Vodkaster",
- "created": "1970-01-01T01:00:00+01:00"
- },
- "begin": 5824000,
- "end": 5985000,
- "content": {
- "data": "Plaidoirie de A\u00efssata Tall Sall"
- }
- }, {
- "id": "cinecast:790212",
- "type": "cinecast:MovieExtract",
- "media": "cinecast:Bamako",
- "meta": {
- "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/35025\/25597812-3-fre-FR\/35025-Plaidoirie-de-Aissata-Tall-Sall-21_reference.jpg",
- "creator": "Vodkaster",
- "created": "1970-01-01T01:00:00+01:00"
- },
- "begin": 5985000,
- "end": 6081000,
- "content": {
- "data": "Plaidoirie de A\u00efssata Tall Sall 2"
- }
- }, {
- "id": "cinecast:790215",
- "type": "cinecast:MovieExtract",
- "media": "cinecast:Bamako",
- "meta": {
- "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/35026\/25597857-3-fre-FR\/35026-Interlude-musical1_reference.jpg",
- "creator": "Vodkaster",
- "created": "1970-01-01T01:00:00+01:00"
- },
- "begin": 6081000,
- "end": 6245000,
- "content": {
- "data": "Interlude musical"
- }
- }, {
- "id": "cinecast:790217",
- "type": "cinecast:MovieExtract",
- "media": "cinecast:Bamako",
- "meta": {
- "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/35027\/25597895-2-fre-FR\/35027-SPOILER-Suicide1_reference.jpg",
- "creator": "Vodkaster",
- "created": "1970-01-01T01:00:00+01:00"
- },
- "begin": 6245000,
- "end": 6311000,
- "content": {
- "data": "SPOILER - Suicide"
- }
- }, {
- "id": "cinecast:790218",
- "type": "cinecast:MovieExtract",
- "media": "cinecast:Bamako",
- "meta": {
- "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/35028\/25597930-2-fre-FR\/35028-Funerailles1_reference.jpg",
- "creator": "Vodkaster",
- "created": "1970-01-01T01:00:00+01:00"
- },
- "begin": 6311000,
- "end": 6430000,
- "content": {
- "data": "Fun\u00e9railles"
- }
- }, {
- "id": "cinecast:790219",
- "type": "cinecast:MovieExtract",
- "media": "cinecast:Bamako",
- "meta": {
- "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/35029\/25597965-2-fre-FR\/35029-Documentaire-sur-les-funerailles1_reference.jpg",
- "creator": "Vodkaster",
- "created": "1970-01-01T01:00:00+01:00"
- },
- "begin": 6430000,
- "end": 6539000,
- "content": {
- "data": "Documentaire sur les fun\u00e9railles"
- }
- }, {
- "id": "cinecast:790220",
- "type": "cinecast:MovieExtract",
- "media": "cinecast:Bamako",
- "meta": {
- "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/35030\/25598000-2-fre-FR\/35030-Generique-de-fin-11_reference.jpg",
- "creator": "Vodkaster",
- "created": "1970-01-01T01:00:00+01:00"
- },
- "begin": 6539000,
- "end": 6659000,
- "content": {
- "data": "G\u00e9n\u00e9rique de fin 1"
- }
- }, {
- "id": "cinecast:790221",
- "type": "cinecast:MovieExtract",
- "media": "cinecast:Bamako",
- "meta": {
- "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/35031\/25598035-2-fre-FR\/35031-Generique-de-fin-21_reference.jpg",
- "creator": "Vodkaster",
- "created": "1970-01-01T01:00:00+01:00"
- },
- "begin": 6659000,
- "end": 6725000,
- "content": {
- "data": "G\u00e9n\u00e9rique de fin 2"
- }
- }
- ],
- "meta": {
- "id": "cinecast:Bamako",
- "created": "2012-03-19T17:15:22.4921496Z",
- "creator": "AlloCine"
- },
- "format": "http://advene.org/ns/cinelab/",
- "imports": [
- {
- "id": "cinecast",
- "url": "http://cinecast.fr/festival/configuration.json"
- }
- ]
-}
\ No newline at end of file
--- a/test/integration/allocine_dossier_independant/allocine_test/data_cinecast.xml Tue Apr 03 20:30:12 2012 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,197 +0,0 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<AcVision>
-<AcVisionVideo refType="mediatheme"
-ref="18644642"
-refTitle="La Minute"
-cmedia="19299288"
-videoTitle="La Minute N°1033 - Mardi 17 janvier 2012"
-mediaType="show"
-genre=""
-urlGen="/video/emissions/laminute/episode/?cmedia=19299288"
-ld_path="http://b.fr.mediaplayer.allocine.fr/nmedia/18/64/46/42/19299288_minute_2012_01_17_l_001.flv"
-md_path="http://h.fr.mediaplayer.allocine.fr/nmedia/18/64/46/42/19299288_minute_2012_01_17_m_001.flv"
-hd_path="http://hd.fr.mediaplayer.allocine.fr/nmedia/18/64/46/42/19299288_minute_2012_01_17_sd_001.flv"
-xt_title="19299288_la_minute_emission_allocinetv"
-thumb=""
-urlFiche="laminute_home"
-/>
-<AcVisionVideoSlides>
-<AcVisionVideoSlide title="La Minute N°1043 - Mardi 31 janvier 2012"
-thumb="/c_100_80/medias/nmedia/18/64/46/42/19303868_minute_2012_01_31.jpg"
-link="/video/emissions/laminute/episode/?cmedia=19303868" />
-<AcVisionVideoSlide title="La Minute N°1042 - Lundi 30 janvier 2012"
-thumb="/c_100_80/medias/nmedia/18/64/46/42/19303866_minute_2012_01_30.jpg"
-link="/video/emissions/laminute/episode/?cmedia=19303866" />
-<AcVisionVideoSlide title="La Minute N°1041 - Samedi 28 janvier 2012"
-thumb="/c_100_80/medias/nmedia/18/64/46/42/19303864_minute_2012_01_28.jpg"
-link="/video/emissions/laminute/episode/?cmedia=19303864" />
-<AcVisionVideoSlide title="La Minute N°1040 - Jeudi 26 janvier 2012"
-thumb="/c_100_80/medias/nmedia/18/64/46/42/19303192_minute_2012_01_26.jpg"
-link="/video/emissions/laminute/episode/?cmedia=19303192" />
-<AcVisionVideoSlide title="La Minute N°1039 - Mercredi 25 janvier 2012"
-thumb="/c_100_80/medias/nmedia/18/64/46/42/19302927_minute_2012_01_25.jpg"
-link="/video/emissions/laminute/episode/?cmedia=19302927" />
-<AcVisionVideoSlide title="La Minute N°1038 - Mardi 24 janvier 2012"
-thumb="/c_100_80/medias/nmedia/18/64/46/42/19300902_minute_2012_01_24.jpg"
-link="/video/emissions/laminute/episode/?cmedia=19300902" />
-<AcVisionVideoSlide title="La Minute N°1037 - Lundi 23 janvier 2012"
-thumb="/c_100_80/medias/nmedia/18/64/46/42/19300590_minute_2012_01_23.jpg"
-link="/video/emissions/laminute/episode/?cmedia=19300590" />
-<AcVisionVideoSlide title="La Minute N°1036 - Vendredi 20 janvier 2012"
-thumb="/c_100_80/medias/nmedia/18/64/46/42/19300162_minute_2012_01_20.jpg"
-link="/video/emissions/laminute/episode/?cmedia=19300162" />
-<AcVisionVideoSlide title="La Minute N°1035 - Jeudi 19 janvier 2012"
-thumb="/c_100_80/medias/nmedia/18/64/46/42/19299668_minute_2012_01_19.jpg"
-link="/video/emissions/laminute/episode/?cmedia=19299668" />
-<AcVisionVideoSlide title="La Minute N°1034 - Mercredi 18 janvier 2012"
-thumb="/c_100_80/medias/nmedia/18/64/46/42/19299358_minute_2012_01_18.jpg"
-link="/video/emissions/laminute/episode/?cmedia=19299358" />
-<AcVisionVideoSlide title="La Minute N°1032 - Lundi 16 janvier 2012"
-thumb="/c_100_80/medias/nmedia/18/64/46/42/19298693_minute_2012_01_16.jpg"
-link="/video/emissions/laminute/episode/?cmedia=19298693" />
-<AcVisionVideoSlide title="La Minute N°1031 - Vendredi 13 janvier 2012"
-thumb="/c_100_80/medias/nmedia/18/64/46/42/19298503_minute_2012_01_13.jpg"
-link="/video/emissions/laminute/episode/?cmedia=19298503" />
-<AcVisionVideoSlide title="La Minute N°1030 - Jeudi 12 janvier 2012"
-thumb="/c_100_80/medias/nmedia/18/64/46/42/19298131_minute_2012_01_12.jpg"
-link="/video/emissions/laminute/episode/?cmedia=19298131" />
-
-<AcVisionVideoSlide title="La Minute N°1029 - Mercredi 11 janvier 2012"
-thumb="/c_100_80/medias/nmedia/18/64/46/42/19296197_minute_2012_01_11.jpg"
-link="/video/emissions/laminute/episode/?cmedia=19296197" />
-<AcVisionVideoSlide title="La Minute N°1028 - Mardi 10 janvier 2012"
-thumb="/c_100_80/medias/nmedia/18/64/46/42/19290943_minute_2012_01_10.jpg"
-link="/video/emissions/laminute/episode/?cmedia=19290943" />
-</AcVisionVideoSlides>
-<AcVisionSkin skinSource="allocine_test/skin_fr.swf">
-<clip nameId="titleTopPostRoll">
-<label>
-<![CDATA[AlloCiné présente: | Cliquez ici pour en savoir plus]]>
-</label>
-</clip>
-<clip nameId="mcAddPostRoll" layer1="McAddPostRoll" x="0" y="0">
-<label>
-<![CDATA[Vidéo suivante dans|secondes]]>
-</label>
-</clip>
-<clip nameId="bgAddPostRoll" layer1="BgAddPostRoll" y="20"/>
-<clip nameId="pixAddPostRoll" y="20"/>
-<clip nameId="titleAddPostRoll" y="30" x="100"/>
-
-<clip nameId="accountAddPostRoll" x="10" y="2"/>
-<clip nameId="fondNavPlayer" layer1="FondNavPlayer" width="760" height="36"/>
-<clip nameId="soundVolume" x="77" y="13" width="36" height="36" layer3="SoundVolumeLayer1" layer2="SoundVolumeLayer2" layer1="SoundVolumeLayer3">
-<info>
-<![CDATA[Modifier le volume de la vidéo]]>
-</info>
-</clip>
-<clip nameId="cutSound" x="55" y="13" stateOn="BtCutSoundOn" stateOff="BtCutSoundOff" stateClickOff="BtCutSoundClickOff" stateClickOn="BtCutSoundClickOn">
-<info>
-<![CDATA[Couper le son de la vidéo]]>
-</info>
-</clip>
-<clip nameId="puceTimeLine" stateOn="PuceTimeLineOn" stateOff="PuceTimeLineOff"/>
-<clip nameId="btPlay" x="4" y="11" width="42" height="22" stateOn="BtPlayOn" stateOff="BtPlayOff"/>
-<clip nameId="btPause" x="4" y="11" width="42" height="22" stateOn="BtPauseOn" stateOff="BtPauseOff"/>
-<clip nameId="btReplay2" x="4" y="11" width="42" height="22" stateOn="BtReplay2On" stateOff="BtReplay2Off" />
-<clip nameId="btBigPlay" stateOn="BtBigPlayOn" stateOff="BtBigPlayOff"/>
-
-<clip nameId="btHd" x="553" y="11" stateOn="BtHdOn" stateOff="BtHdOff" stateClickOn="BtHdClickOn">
-<info>
-<![CDATA[Changer la qualité de la vidéo]]>
-</info>
-</clip>
-<clip nameId="btMenu" x="626" y="11" stateOn="BtMenuOn" stateOff="BtMenuOff"/>
-<clip nameId="btMarque" link="www.allocine.fr" linkTarget="_blank" x="688" y="16" stateOn="BtMarqueOn" stateOff="BtMarqueOff">
-<info>
-<![CDATA[Se rendre sur allocine.fr]]>
-</info>
-</clip>
-<clip nameId="btFullScreen" x="593" y="11" stateOn="BtFullScreenOn" stateOff="BtFullScreenOff" stateClickOn="BtFullScreenClickOn" stateClickOff="BtFullScreenClickOff">
-<info>
-<![CDATA[Mettre la vidéo en plein écran]]>
-</info>
-</clip>
-<clip nameId="textTimer" x="120" y="13" color="0x444444"/>
-
-<clip nameId="menuSubtitle" x="330" y="-2" color="0x9ea6b8"/>
-<clip nameId="menuFlow" x="230" y="-2" color="0x9ea6b8"/>
-<clip nameId="textTitle" x="215" y="13" color="0x005ea8" />
-<clip nameId="btClose" stateOn="BtCloseOn" stateOff="BtCloseOff"/>
-<clip nameId="logo" layer1="Logo" x="0" y="5"/>
-<clip nameId="timeLine" x="2" y="2" round="false" width="756" height="5" color1="0xD6D6D6" color2="0x898989" color3="0x005ea8"/>
-<clip nameId="btSearch" x="507" y="12" width="103" height="32" stateOn="BtSearchOn" stateOff="BtSearchOff">
-<label>
-<![CDATA[<b>Recherche</b>]]>
-</label>
-</clip>
-<clip nameId="searchEngine">
-<label>
-<![CDATA[/recherche/?q=|&x=73&y=14&rub=0]]>
-</label>
-</clip>
-<clip nameId="btCopy" x="360" width="73" height="30" stateOn="BtCopyOn" stateOff="BtCopyOff">
-
-<label>
-<![CDATA[<b>Copier</b>]]>
-</label>
-</clip>
-<clip nameId="mcShare">
-<label>
-<![CDATA[Permalien :]]>
-</label>
-</clip>
-<clip nameId="mcBlog">
-<label>
-<![CDATA[Lecteur exportable :|allocine_blog]]>
-</label>
-</clip>
-<clip nameId="btScrollRight" stateOn="BtScrollRightOn" stateOff="BtScrollRightOff"/>
-<clip nameId="btScrollLeft" stateOn="BtScrollLeftOn" stateOff="BtScrollLeftOff"/>
-<clip nameId="btReplay" type="navCenter" action="replayHandler" y="115" stateOn="BtReplayOn" stateOff="BtReplayOff">
-
-<label>
-<![CDATA[<b>REJOUER</b>]]>
-</label>
-</clip>
-<clip nameId="btShare" type="navCenter" action="shareHandler" x="110" y="115" stateOn="BtShareOn" stateOff="BtShareOff">
-<label>
-<![CDATA[<b>PARTAGER</b>]]>
-</label>
-</clip>
-<clip nameId="btBlog" type="navCenter" action="blogHandler" x="220 " y="115" stateOn="BtBlogOn" stateOff="BtBlogOff">
-<label>
-<![CDATA[<b>SUR MON BLOG</b>]]>
-</label>
-</clip>
-<clip nameId="btVideoSim" type="navCenter" action="videoSimHandler" x="330" y="115" stateOn="BtVideoSimOn" stateOff="BtVideoSimOff">
-<label>
-<![CDATA[<b>VIDÉOS <br>SIMILAIRES</b>]]>
-
-</label>
-</clip>
-<clip nameId="titleEndScreen" >
-<label>
-<![CDATA[<b>Choisissez votre prochaine vidéo </b>]]>
-</label>
-</clip>
-<clip nameId="textError" >
-<label>
-<![CDATA[<b>Erreur : cette vidéo n'est pas disponible.</b>]]>
-</label>
-</clip>
-<clip nameId="errorAdBlock" >
-<label>
-<![CDATA[Cette vidéo ne se lance pas ?<br>Vous avez probablement activé une extension comme AdBlock dans votre navigateur. Merci de la désactiver et de recharger la page afin de lire cette vidéo.<br>Si votre problème persiste, n’hésitez pas à <b><a href='http://allocine.uservoice.com/forums/30575-allocin-v6-probl-mes-et-erreurs'>nous contacter</a></b> !]]>
-</label>
-</clip>
-
-</AcVisionSkin>
-<services>
-<!--service className="McXitiService" nameService="xiti" file="services/xitiService.swf" pathConfig="http://www.allocine.fr/Modules/video/xml/XiTiTag.xml" /-->
-<service className="McVastService" nameService="vast" file="services/vastService.swf" pathConfig="http://smart.allocine.fr/call/pubx/10936/[part]/7292/S/[timestamp]/[target]" >
-<![CDATA[<b>Publicité</b> : votre vidéo commence dans | secondes]]>
-</service>
-<!---->
-</services>
-</AcVision>
\ No newline at end of file
--- a/test/integration/allocine_dossier_independant/css/LdtPlayer.css Tue Apr 03 20:30:12 2012 +0200
+++ b/test/integration/allocine_dossier_independant/css/LdtPlayer.css Fri Apr 06 16:49:32 2012 +0200
@@ -144,212 +144,11 @@
height:0px;
display:none
}
-
-/* player */
-.Ldt-controler {
- font-size: 10px;
- background:url('img-cinecast/controlbarbgd.png') repeat-x transparent ;
- height: 34px;
-}
-
-.Ldt-LeftPlayerControls {
- float:left;
-}
-
-.Ldt-RightPlayerControls {
- float: right;
-}
-
-.Ldt-Ctrl-button {
- float: left;
- width: 30px; height: 25px;
- background: url('img-cinecast/player-sprites.png');
- cursor: pointer;
-}
-
-.Ldt-Ctrl-spacer {
- float: left; width: 2px; background: url(img-cinecast/controlbarspacer.png); height: 34px;
-}
-
-.Ldt-CtrlPlay {
- margin: 4px 15px;
-}
-
-.Ldt-CtrlPlay-PlayState {
- background-position: 0 0;
-}
-
-.Ldt-CtrlPlay-PlayState:hover {
- background-position: 0 -25px;
-}
-
-.Ldt-CtrlPlay-PlayState:active {
- background-position: 0 -50px;
-}
-
-.Ldt-CtrlPlay-PauseState {
- background-position: -30px 0;
-}
-
-.Ldt-CtrlPlay-PauseState:hover {
- background-position: -30px -25px;
-}
-
-.Ldt-CtrlPlay-PauseState:active {
- background-position: -30px -50px;
-}
-
-
-.Ldt-CtrlAnnotate {
- margin: 4px 2px;
- background-position: -60px 0;
-}
-
-.Ldt-CtrlAnnotate:hover {
- background-position: -60px -25px;
-}
-
-.Ldt-CtrlAnnotate:active {
- background-position: -60px -50px;
-}
-
-.Ldt-CtrlSearch {
- margin: 4px 2px;
- background-position: -90px 0;
-}
-
-.Ldt-CtrlSearch:hover {
- background-position: -90px -25px;
-}
-
-.Ldt-CtrlSearch:active {
- background-position: -90px -50px;
-}
-
-.LdtSearch {
- display: none;
- width: 165px;
- height: 25px;
- border: 1px;
- border-color: #CFCFCF;
- float: left;
- text-align: center;
-}
-
-.Ldt-Time {
- float: left;
- margin: 8px 5px;
- font-size: 12px;
- font-family: Arial, Verdana, sans-serif;
- color: #ffffff;
-}
-
-.Ldt-ElapsedTime {
- float: left;
-}
-
-.Ldt-TimeSeparator {
- margin: 0 4px;
- float: left;
-}
-
-.Ldt-TotalTime {
- float: left;
-}
-
-.Ldt-CtrlSound {
- margin: 4px 2px;
-}
-
-.Ldt-CtrlSound-Full {
- background-position: -120px 0;
-}
-
-.Ldt-CtrlSound-Full:hover {
- background-position: -120px -25px;
-}
-
-.Ldt-CtrlSound-Full:active {
- background-position: -120px -50px;
-}
-
-.Ldt-CtrlSound-Mute {
- background-position: -150px 0;
-}
-
-.Ldt-CtrlSound-Mute:hover {
- background-position: -150px -25px;
-}
-
-.Ldt-CtrlSound-Mute:active {
- background-position: -150px -50px;
-}
-
-.Ldt-CtrlSound-Half {
- background-position: -180px 0;
-}
-
-.Ldt-CtrlSound-Half:hover {
- background-position: -180px -25px;
-}
-
-.Ldt-CtrlSound-Half:active {
- background-position: -180px -50px;
-}
-
-.Ldt-Ctrl-Volume-Control {
- display: none;
- position: absolute;
- background:url('img-cinecast/controlbarbgd.png') repeat-x transparent ;
- height: 34px;
- width: 100px; top: 30px; right: 0; z-index: 100;
- padding: 0 2px;
-}
-
-.Ldt-Ctrl-Volume-Bar {
- height: 5px; margin: 13px 3px 0; background: #cccccc; border: 1px solid #999999; border-radius: 2px;
-}
-
-.Ldt-Ctrl-Volume-Cursor {
- position: absolute; top: 6px; width: 6px; height: 19px; background: #a8a8a8; border: 1px solid #999999; border-radius: 2px;
- cursor: pointer;
-}
-
-.Ldt-Ctrl-Volume-Cursor:hover {
- background: #cccccc;
-}
-
-.Ldt-Ctrl-Volume-Cursor.ui-draggable-dragging {
- background: #999999;
-}
.Ldt-cleaner {
clear:both;
}
-/* Arrow Widget */
-.Ldt-arrowWidget {
- position: relative;
-
- height:16px;
- width:27px;
- margin-bottom: -3px;
- z-index: 4;
- left: 0%;
-}
-
-.Ldt-arrowLeftEdge {
- background:url('imgs/left_edge_arrow.png') no-repeat scroll 0 0 transparent ;
-}
-
-.Ldt-arrowCenter {
- background:url('imgs/arrow.png') no-repeat scroll 0 0 transparent ;
-}
-
-.Ldt-arrowRightEdge {
- background:url('imgs/right_edge_arrow.png') no-repeat scroll 0 0 transparent ;
-}
-
.cleaner {
clear:both;
}
@@ -407,53 +206,7 @@
max-width: 140px; max-height: 70px; margin: 0 20px;
}
-/* slider */
-.Ldt-SliderMinimized {
- height: 6px;
-}
-.Ldt-SliderMaximized {
- height: 11px;
-}
-
-.Ldt-sliderElementMinimized {
- width: 100%;
- height: 5px;
-}
-
-.Ldt-sliderElementMaximized {
- width: 100%;
- height: 10px;
-}
-
-.Ldt-sliderBackground {
- background-color: #333333;
- position: absolute;
- z-index: 2;
- bottom: 1px;
- width: 100%;
- height: 5px;
-
-}
-
-.Ldt-sliderForeground {
- background-color: #747474;
- z-index: 2;
- width: 0px;
- position: absolute;
- bottom: 1px;
- height: 5px;
-}
-
-.Ldt-sliderPositionMarker {
- position: absolute;
- z-index: 100;
- background: url('img-cinecast/sliderpos.png');
- height: 10px !important;
- width: 10px !important;
- bottom: 0;
- cursor: pointer;
-}
/* sparkline widget */
.Ldt-sparklineWidget {
@@ -677,7 +430,6 @@
}
.Ldt-AnnotationsList-li {
- cursor: pointer;
float: left; width: 100%; clear: both;
margin: 2px 0; padding: 2px 0;
position: relative;
@@ -693,6 +445,10 @@
text-decoration: none;
}
+.Ldt-AnnotationsListWidget a:hover {
+ text-decoration: underline;
+}
+
.Ldt-AnnotationsList-Thumbnail {
border: none;
float: left;
@@ -712,17 +468,18 @@
.Ldt-AnnotationsList-Title {
font-size: 13px;
margin: 0 0 2px 80px;
-}
-
-.Ldt-AnnotationsList-Title a {
color: #ffffff;
}
+
.Ldt-AnnotationsList-Description {
- color: #dddddd;
font-style: italic;
margin: 0 0 2px 80px;
}
+.Ldt-AnnotationsList-Description a {
+ color: #dddddd;
+}
+
.Ldt-AnnotationsList-Tags {
float: left; clear: both; padding: 0; margin: 2px 0 0 80px; list-style: none;
}
@@ -741,7 +498,7 @@
}
.Ldt-createAnnotation-moar-keywordz {
- float: right; font-size: 13px; color: #ffffff; text-shadow: 1px 1px 1px #000000;
+ float: right; font-size: 13px; color: #ffffff; text-shadow: 1px 1px 1px #000000; cursor: pointer;
width: 140px; height: 23px; background: url(img-cinecast/moar.png); border: none; margin: 0 15px;
}
--- a/test/integration/allocine_dossier_independant/js/LdtPlayer-release.js Tue Apr 03 20:30:12 2012 +0200
+++ b/test/integration/allocine_dossier_independant/js/LdtPlayer-release.js Fri Apr 06 16:49:32 2012 +0200
@@ -996,7 +996,7 @@
"'")+",'"}).replace(d.evaluate||null,function(a,b){return"');"+b.replace(/\\'/g,"'").replace(/[\r\n\t]/g," ")+";__p.push('"}).replace(/\r/g,"\\r").replace(/\n/g,"\\n").replace(/\t/g,"\\t")+"');}return __p.join('');",e=new Function("obj","_",d);return c?e(c,b):function(a){return e.call(this,a,b)}};var n=function(a){this._wrapped=a};b.prototype=n.prototype;var u=function(a,c){return c?b(a).chain():a},J=function(a,c){n.prototype[a]=function(){var a=i.call(arguments);H.call(a,this._wrapped);return u(c.apply(b,
a),this._chain)}};b.mixin(b);j("pop,push,reverse,shift,sort,splice,unshift".split(","),function(a){var b=k[a];n.prototype[a]=function(){b.apply(this._wrapped,arguments);return u(this._wrapped,this._chain)}});j(["concat","join","slice"],function(a){var b=k[a];n.prototype[a]=function(){return u(b.apply(this._wrapped,arguments),this._chain)}});n.prototype.chain=function(){this._chain=true;return this};n.prototype.value=function(){return this._wrapped}}).call(this);
/* main file */
-
+// Why is it called main ? It only loads the libs !
if ( window.IriSP === undefined && window.__IriSP === undefined ) {
/**
@@ -1016,23 +1016,39 @@
IriSP._ = window._.noConflict();
IriSP.underscore = IriSP._;
-IriSP.loadLibs = function( libs, config, metadata_url, callback ) {
+IriSP.getLib = function(lib) {
+ return (
+ IriSP.libFiles.useCdn && typeof IriSP.libFiles.cdn[lib] == "string"
+ ? IriSP.libFiles.cdn[lib]
+ : (
+ typeof IriSP.libFiles.locations[lib] == "string"
+ ? IriSP.libFiles.locations[lib]
+ : (
+ typeof IriSP.libFiles.inDefaultDir[lib] == "string"
+ ? IriSP.libFiles.defaultDir + IriSP.libFiles.inDefaultDir[lib]
+ : null
+ )
+ )
+ )
+}
+
+IriSP.loadLibs = function( config, metadata_url, callback ) {
// Localize jQuery variable
IriSP.jQuery = null;
- var $L = $LAB.script(libs.jQuery).script(libs.swfObject).wait()
- .script(libs.jQueryUI);
+ var $L = $LAB.script(IriSP.getLib("jQuery")).script(IriSP.getLib("swfObject")).wait()
+ .script(IriSP.getLib("jQueryUI"));
if (config.player.type === "jwplayer" || config.player.type === "allocine") {
// load our popcorn.js lookalike
- $L.script(libs.jwplayer);
+ $L.script(IriSP.getLib("jwplayer"));
} else {
// load the real popcorn
- $L.script(libs.popcorn).script(libs["popcorn.code"]);
+ $L.script(IriSP.getLib("popcorn")).script(IriSP.getLib("popcorn.code"));
if (config.player.type === "youtube") {
- $L.script(libs["popcorn.youtube"]);
+ $L.script(IriSP.getLib("popcorn.youtube"));
}
if (config.player.type === "vimeo")
- $L.script(libs["popcorn.vimeo"]);
+ $L.script(IriSP.getLib("popcorn.vimeo"));
/* do nothing for html5 */
}
@@ -1042,10 +1058,10 @@
if (config.gui.widgets[idx].type === "PolemicWidget" ||
config.gui.widgets[idx].type === "StackGraphWidget" ||
config.gui.widgets[idx].type === "SparklineWidget") {
- $L.script(libs.raphael);
+ $L.script(IriSP.getLib("raphael"));
}
if (config.gui.widgets[idx].type === "TraceWidget") {
- $L.script(libs.tracemanager)
+ $L.script(IriSP.getLib("tracemanager"))
}
}
@@ -1053,7 +1069,7 @@
/*
for (var idx in config.modules) {
if (config.modules[idx].type === "PolemicWidget")
- $L.script(libs.raphaelJs);
+ $L.script(IriSP.getLib("raphaelJs"));
}
*/
@@ -1063,7 +1079,7 @@
var css_link_jquery = IriSP.jQuery( "<link>", {
rel: "stylesheet",
type: "text/css",
- href: libs.cssjQueryUI,
+ href: IriSP.getLib("cssjQueryUI"),
'class': "dynamic_css"
} );
var css_link_custom = IriSP.jQuery( "<link>", {
@@ -1089,9 +1105,9 @@
IriSP.annotation_template = "{{! template for an annotation displayed in a segmentWidget }}<div title='{{divTitle}}' id='{{id}}' class='Ldt-iri-chapter Ldt-TraceMe' style='left: {{startPixel}}px; width: {{pxWidth}}px; background-color:{{hexa_color}};' data-seek='{{seekPlace}}' thumbnail-url='{{thumbnailUrl}}' ></div>";
IriSP.annotationWidget_template = "{{! template for the annotation widget }}<div class='Ldt-AnnotationsWidget'> <!-- ugly div because we want to have a double border --> <div class='Ldt-Annotation-DoubleBorder'> <div class='Ldt-AnnotationContent'> <div class='Ldt-AnnotationShareIcons'> <a target='_blank' class='Ldt-fbShare Ldt-TraceMe' title='{{i10n.share_on}} Facebook'></a> <a target='_blank' class='Ldt-TwShare Ldt-TraceMe' title='{{i10n.share_on}} Twitter'></a> <a target='_blank' class='Ldt-GplusShare Ldt-TraceMe' title='{{i10n.share_on}} Google+'></a> </div> <div class='Ldt-SaTitle'></div> <div class='Ldt-SaDescription'></div> <div class='Ldt-SaKeywords'></div> </div> </div></div>";
IriSP.annotation_loading_template = "{{! template shown while the annotation widget is loading }}<div id='Ldt-load-container'><div id='Ldt-loader'> </div> Chargement... </div>";
-IriSP.annotationsListWidget_template = "{{! template for the annotation list widget }}<div class='Ldt-AnnotationsListWidget'> <ul class='Ldt-AnnotationsList-ul'> {{#annotations}} <li id='Ldt-Annotation-li-{{id}}' class='Ldt-AnnotationsList-li Ldt-TraceMe'> <img class='Ldt-AnnotationsList-Thumbnail' src='{{thumbnail}}' /> <div class='Ldt-AnnotationsList-Duration'> <span class='Ldt-AnnotationsList-Begin'>{{begin}}</span> <span class='Ldt-AnnotationsList-TcSeparator'>-</span> <span class='Ldt-AnnotationsList-End'>{{end}}</span> </div> <div class='Ldt-AnnotationsList-Title'> {{! if the url is not present, it means that the annotation exists in the current project }} {{^url}} <a href='#id={{id}}'> {{/url}} {{! otherwise link to url }} {{#url}} <a href='{{url}}'> {{/url}} {{title}} </a> </div> <div class='Ldt-AnnotationsList-Description'> {{desc}} </div> {{#tags.length}} <ul class='Ldt-AnnotationsList-Tags'> {{#tags}} <li class='Ldt-AnnotationsList-Tag-Li'> <div class='Ldt-AnnotationsList-Tag-Div'>{{.}}</div> </li> {{/tags}} </ul> {{/tags.length}} </li> {{/annotations}} </ul></div>";
+IriSP.annotationsListWidget_template = "{{! template for the annotation list widget }}<div class='Ldt-AnnotationsListWidget'> <ul class='Ldt-AnnotationsList-ul'> {{#annotations}} <li id='Ldt-Annotation-li-{{id}}' class='Ldt-AnnotationsList-li Ldt-TraceMe'> {{^url}} <a href='#id={{id}}'> {{/url}} {{! otherwise link to url }} {{#url}} <a href='{{url}}'> {{/url}} <img class='Ldt-AnnotationsList-Thumbnail' src='{{thumbnail}}' /> </a> <div class='Ldt-AnnotationsList-Duration'> <span class='Ldt-AnnotationsList-Begin'>{{begin}}</span> <span class='Ldt-AnnotationsList-TcSeparator'>-</span> <span class='Ldt-AnnotationsList-End'>{{end}}</span> </div> <div class='Ldt-AnnotationsList-Title'> {{! if the url is not present, it means that the annotation exists in the current project }} {{title}} </div> <div class='Ldt-AnnotationsList-Description'> {{^url}} <a href='#id={{id}}'> {{/url}} {{! otherwise link to url }} {{#url}} <a href='{{url}}'> {{/url}} {{desc}} </a> </div> {{#tags.length}} <ul class='Ldt-AnnotationsList-Tags'> {{#tags}} <li class='Ldt-AnnotationsList-Tag-Li'> <div class='Ldt-AnnotationsList-Tag-Div'>{{.}}</div> </li> {{/tags}} </ul> {{/tags.length}} </li> {{/annotations}} </ul></div>";
IriSP.arrowWidget_template = "<div class='Ldt-arrowWidget Ldt-arrowLeftEdge'></div>";
-IriSP.createAnnotationWidget_template = "{{! template for the annotation creation widget }}<div class='Ldt-createAnnotationWidget'> <!-- ugly div because we want to have a double border --> <div class='Ldt-createAnnotation-DoubleBorder'> <div class='Ldt-createAnnotation-screen Ldt-createAnnotation-startScreen'> <div style='margin-bottom: 7px; overflow: auto;'> <div class='Ldt-createAnnotation-Title'></div> <div class='Ldt-createAnnotation-TimeFrame'></div> {{^cinecast_version}} <div class='Ldt-createAnnotation-Minimize Ldt-TraceMe' title='Cancel'></div> {{/cinecast_version}} </div> <div class='Ldt-createAnnotation-Container'> {{#show_from_field}} <label>{{l10n.your_name}} : </label><input class='Ldt-createAnnotation-userName Ldt-TraceMe' value='{{user_name}}' /> {{/show_from_field}} <textarea class='Ldt-createAnnotation-Description Ldt-TraceMe'></textarea> <div class='Ldt-createAnnotation-userAvatar Ldt-TraceMe'> {{^user_avatar}} <img src='https://si0.twimg.com/sticky/default_profile_images/default_profile_1_normal.png'></img> {{/user_avatar}} {{#user_avatar}} <img src='{{ user_avatar }}'></img> {{/user_avatar}} </div> <div class='Ldt-createAnnotation-profileArrow'></div> </div> <button class='Ldt-createAnnotation-submitButton Ldt-TraceMe'>{{l10n.submit}}</button> {{#keywords.length}} <div class='Ldt-createAnnotation-btnblock Ldt-createAnnotation-keywords'> <label>{{l10n.add_keywords}} :</label> <ul class='Ldt-floatList'> {{#keywords}} <li><button class='Ldt-createAnnotation-keyword-button Ldt-TraceMe'>{{.}}</button></li> {{/keywords}} </ul> </div> {{#random_keywords}} <button class='Ldt-createAnnotation-moar-keywordz'>{{l10n.moar_tagz}}</button> {{/random_keywords}} {{/keywords.length}} {{#polemic_mode}} {{#polemics.length}} <div class='Ldt-createAnnotation-btnblock Ldt-createAnnotation-polemics'> <label>{{l10n.add_polemic_keywords}} :</label> <ul class='Ldt-floatList'> {{#polemics}} <li><button class='Ldt-createAnnotation-polemic-{{className}} Ldt-createAnnotation-polemic-button Ldt-TraceMe'>{{keyword}}</button></li> {{/polemics}} </ul> </div> {{/polemics.length}} {{/polemic_mode}} </div> <div class='Ldt-createAnnotation-screen Ldt-createAnnotation-waitScreen' style='display: none; text-align: center'> <div class='Ldt-createAnnotation-spinner'></div> {{l10n.wait_while_processed}} </div> <div class='Ldt-createAnnotation-screen Ldt-createAnnotation-errorScreen' style='display: none; text-align: center'> <div class='Ldt-createAnnotation-Minimize' title='Hide'></div> {{l10n.error_while_contacting}} </div> <div class='Ldt-createAnnotation-screen Ldt-createAnnotation-endScreen' style='display: none'> <div class='Ldt-createAnnotation-Minimize' title='Hide'></div> {{l10n.annotation_saved}} <br> {{^disable_share}} {{l10n.share_annotation}} <div style='margin-top: 12px; text-align: center;'> <a target='_blank' class='Ldt-createAnnotation-endScreen-TweetLink Ldt-TraceMe'></a> <a target='_blank' class='Ldt-createAnnotation-endScreen-FbLink Ldt-TraceMe'></a> <a target='_blank' class='Ldt-createAnnotation-endScreen-GplusLink Ldt-TraceMe'></a> </div> {{/disable_share}} </div> <div class='Ldt-floatClear'></div> </div></div>";
+IriSP.createAnnotationWidget_template = "{{! template for the annotation creation widget }}<div class='Ldt-createAnnotationWidget'> <!-- ugly div because we want to have a double border --> <div class='Ldt-createAnnotation-DoubleBorder'> <div class='Ldt-createAnnotation-screen Ldt-createAnnotation-startScreen'> <div style='margin-bottom: 7px; overflow: auto;'> <div class='Ldt-createAnnotation-Title'></div> <div class='Ldt-createAnnotation-TimeFrame'></div> {{^cinecast_version}} <div class='Ldt-createAnnotation-Minimize Ldt-TraceMe' title='Cancel'></div> {{/cinecast_version}} </div> <div class='Ldt-createAnnotation-Container'> {{#show_from_field}} <label>{{l10n.your_name}} : </label><input class='Ldt-createAnnotation-userName Ldt-TraceMe' value='{{user_name}}' /> {{/show_from_field}} <textarea class='Ldt-createAnnotation-Description Ldt-TraceMe'></textarea> <div class='Ldt-createAnnotation-userAvatar Ldt-TraceMe'> {{^user_avatar}} <img src='https://si0.twimg.com/sticky/default_profile_images/default_profile_1_normal.png'></img> {{/user_avatar}} {{#user_avatar}} <img src='{{ user_avatar }}'></img> {{/user_avatar}} </div> <div class='Ldt-createAnnotation-profileArrow'></div> </div> <button class='Ldt-createAnnotation-submitButton Ldt-TraceMe'>{{l10n.submit}}</button> {{#tags.length}} <div class='Ldt-createAnnotation-btnblock Ldt-createAnnotation-keywords'> <label>{{l10n.add_keywords}} :</label> <ul class='Ldt-floatList'> {{#tags}} <li><button class='Ldt-createAnnotation-keyword-button Ldt-TraceMe' tag-id='{{id}}'>{{meta.description}}</button></li> {{/tags}} </ul> </div> {{#random_tags}} <button class='Ldt-createAnnotation-moar-keywordz'>{{l10n.more_tags}}</button> {{/random_tags}} {{/tags.length}} {{#polemic_mode}} {{#polemics.length}} <div class='Ldt-createAnnotation-btnblock Ldt-createAnnotation-polemics'> <label>{{l10n.add_polemic_keywords}} :</label> <ul class='Ldt-floatList'> {{#polemics}} <li><button class='Ldt-createAnnotation-polemic-{{className}} Ldt-createAnnotation-polemic-button Ldt-TraceMe'>{{keyword}}</button></li> {{/polemics}} </ul> </div> {{/polemics.length}} {{/polemic_mode}} </div> <div class='Ldt-createAnnotation-screen Ldt-createAnnotation-waitScreen' style='display: none; text-align: center'> <div class='Ldt-createAnnotation-spinner'></div> {{l10n.wait_while_processed}} </div> <div class='Ldt-createAnnotation-screen Ldt-createAnnotation-errorScreen' style='display: none; text-align: center'> <div class='Ldt-createAnnotation-Minimize' title='Hide'></div> {{l10n.error_while_contacting}} </div> <div class='Ldt-createAnnotation-screen Ldt-createAnnotation-endScreen' style='display: none'> <div class='Ldt-createAnnotation-Minimize' title='Hide'></div> {{l10n.annotation_saved}} <br> {{^disable_share}} {{l10n.share_annotation}} <div style='margin-top: 12px; text-align: center;'> <a target='_blank' class='Ldt-createAnnotation-endScreen-TweetLink Ldt-TraceMe'></a> <a target='_blank' class='Ldt-createAnnotation-endScreen-FbLink Ldt-TraceMe'></a> <a target='_blank' class='Ldt-createAnnotation-endScreen-GplusLink Ldt-TraceMe'></a> </div> {{/disable_share}} </div> <div class='Ldt-floatClear'></div> </div></div>";
IriSP.createAnnotation_errorMessage_template = "<p class='Ldt-createAnnotation-errorMessage'> {{l10n.empty_annotation}}</p>";
IriSP.loading_template = "<div id='Ldt-loader' style='width: {{width}}px; height: {{height}}px;'>{{l10n.loading_wait}}</div>";
IriSP.overlay_marker_template = "{{! the template for the small bars which is z-indexed over our segment widget }}<div class='Ldt-SegmentPositionMarker' style='background-color: #F7268E;'></div>";
@@ -1556,15 +1572,16 @@
this._callbacks = {};
};
-IriSP.DataLoader.prototype.get = function(url, callback) {
-
- var base_url = url.split("&")[0]
+IriSP.DataLoader.prototype.get = function(url, callback, force_reload) {
+ var base_url = url.split("&")[0];
+ if (typeof force_reload != "undefined" && force_reload && this._cache.hasOwnProperty(base_url)) {
+ delete this._cache[base_url]
+ }
if (this._cache.hasOwnProperty(base_url)) {
callback(this._cache[base_url]);
} else {
if (!this._callbacks.hasOwnProperty(base_url)) {
- this._callbacks[base_url] = [];
- this._callbacks[base_url].push(callback);
+ this._callbacks[base_url] = [callback];
/* we need a closure because this gets lost when it's called back */
// uncomment you don't want to use caching.
@@ -1577,6 +1594,7 @@
for (i = 0; i < this._callbacks[base_url].length; i++) {
this._callbacks[base_url][i](this._cache[base_url]);
}
+ delete this._callbacks[base_url];
};
/* automagically choose between json and jsonp */
@@ -1614,8 +1632,11 @@
IriSP.Serializer.prototype.currentMedia = function() {
};
-IriSP.Serializer.prototype.sync = function(callback) {
- callback.call(this, this._data);
+IriSP.Serializer.prototype.getDuration = function() {
+};
+
+IriSP.Serializer.prototype.sync = function(callback) {
+ this._DataLoader.get(this._url, callback, force_refresh);
};
IriSP.SerializerFactory = function(DataLoader) {
@@ -1648,157 +1669,145 @@
return undefined;
}
};
-/* site.js - all our site-dependent config : player chrome, cdn locations, etc...*/
-
-IriSP.defaults = {};
-
-/* these objects are filled by configureDefaults. The function doesn't overwrite
- defaults that were originally defined by the user.
-*/
-IriSP.lib = {};
-
-/* We need to define those so that the individual settings can be overwritten */
-IriSP.widgetsDefaults = {};
-
-IriSP.paths = {};
-
-IriSP.libdir = "/metadataplayer/src/js/libs/";
-IriSP.jwplayer_swf_path = "../test/libs/player.swf";
-IriSP.platform_url = "http://192.168.56.101/pf";
-IriSP.default_templates_vars = { };
-
-IriSP.language = 'fr';
-
-/** ugly ugly ugly ugly - returns an object defining
- the paths to the libs
- We need it that way cause it's called at runtime by
- IriSP.configureDefaults.
-*/
-IriSP.defaults.lib = function(libdir) {
- if (IriSP.null_or_undefined(libdir))
- libdir = IriSP.libdir;
-
- return {
-// jQuery : "http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.js",
- jQuery : libdir + "jquery.min.js",
-// jQueryUI : "http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.17/jquery-ui.js",
- jQueryUI : libdir + "jquery-ui.min.js",
-// jQueryToolTip : "http://cdn.jquerytools.org/1.2.4/all/jquery.tools.min.js",
- jQueryToolTip : libdir + "jquery.tools.min.js",
-// swfObject : "http://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js",
- swfObject : libdir + "swfobject.js",
-// cssjQueryUI : "http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.4/themes/base/jquery-ui.css",
- cssjQueryUI : libdir + "jquery-ui.css",
- popcorn : libdir + "popcorn.js",
- jwplayer : libdir + "jwplayer.js",
- popcornReplacement: libdir + "pop.js",
- raphael: libdir + "raphael.js",
- jquery_sparkline: libdir + "jquery.sparkline.js",
- "popcorn.mediafragment" : libdir + "popcorn.mediafragment.js",
- "popcorn.code" : libdir + "popcorn.code.js",
- "popcorn.jwplayer": libdir + "popcorn.jwplayer.js",
- "popcorn.youtube": libdir + "popcorn.youtube.js",
- "tracemanager": libdir + "tracemanager.js"
- };
-};
-
-//Configuration for the player and utility functions.
-// No need to have them configured at runtime
-IriSP.config = {};
-
-IriSP.config.shortener = {
- // function to call to shorten an url.
- //shortening_function : IriSP.platform_shorten_url
-};
-
-IriSP.defaults.widgetsDefaults = function(platform_url) {
- if (IriSP.null_or_undefined(platform_url))
- platform_url = IriSP.platform_url;
-
- return {
- "LayoutManager" : {spacer_div_height : "0px" },
- "PlayerWidget" : {},
- "AnnotationsWidget": {
- "share_text" : "I'm watching ",
- "fb_link" : "http://www.facebook.com/share.php?u=",
- "tw_link" : "http://twitter.com/home?status=",
- "gplus_link" : ""
- },
-
+IriSP.language = 'en';
+
+IriSP.libFiles = {
+ defaultDir : "js/libs/",
+ inDefaultDir : {
+ jQuery : "jquery.min.js",
+ jQueryUI : "jquery-ui.min.js",
+ jQueryToolTip : "jquery.tools.min.js",
+ swfObject : "swfobject.js",
+ cssjQueryUI : "jquery-ui.css",
+ popcorn : "popcorn.js",
+ jwplayer : "jwplayer.js",
+ raphael : "raphael.js",
+ "popcorn.mediafragment" : "popcorn.mediafragment.js",
+ "popcorn.code" : "popcorn.code.js",
+ "popcorn.jwplayer" : "popcorn.jwplayer.js",
+ "popcorn.youtube" : "popcorn.youtube.js",
+ "tracemanager" : "tracemanager.js"
+ },
+ locations : {
+ // use to define locations outside defautl_dir
+ },
+ cdn : {
+ jQueryUI : "http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.17/jquery-ui.js",
+ jQueryToolTip : "http://cdn.jquerytools.org/1.2.4/all/jquery.tools.min.js",
+ swfObject : "http://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js",
+ cssjQueryUI : "http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.4/themes/base/jquery-ui.css"
+ },
+ useCdn : false
+}
+
+IriSP.widgetsDefaults = {
+ "LayoutManager" : {
+ spacer_div_height : 0
+ },
+ "PlayerWidget" : {
+
+ },
+ "AnnotationsWidget" : {
+ "share_text" : "I'm watching "
+ },
"TweetsWidget" : {
default_profile_picture : "https://si0.twimg.com/sticky/default_profile_images/default_profile_1_normal.png",
- tweet_display_period: 10000 // how long do we show a tweet ?
-
+ tweet_display_period : 10000 // how long do we show a tweet ?
},
"SliderWidget" : {
- minimize_period: 850 // how long does the slider stays maximized after the user leaves the zone ?
+ minimize_period : 850 // how long does the slider stays maximized after the user leaves the zone ?
+ },
+ "SegmentsWidget" : {
+ cinecast_version : false
},
"createAnnotationWidget" : {
- keywords: ["#amateur", "#digital-studies"],
- polemic_mode: true, /* enable polemics ? */
- /* polemics - the corresponding class names defined in the css should be for instance :
- Ldt-createAnnotation-polemic-positive for positive
- Ldt-createAnnotation-polemic-equalequal for equalequal, etc.
- */
- polemics: [ { "className" : "positive", "keyword" : "++" }, { "className" : "negative", "keyword" : "--" }, { "className" : "reference", "keyword" : "==" }, { "className" : "question", "keyword" : "??" } ],
- cinecast_version: false, /* put to false to enable the platform version, true for the festival cinecast one. */
-
+ tags : [
+ {
+ "id" : "digitalstudies",
+ "meta" : {
+ "description" : "#digital-studies"
+ }
+ },
+ {
+ "id" : "amateur",
+ "meta" : {
+ "description" : "#amateur"
+ },
+ }
+ ],
+ remote_tags : false,
+ random_tags : false,
+ show_from_field : false,
+ polemic_mode : true, /* enable polemics ? */
+ polemics : [{
+ "className" : "positive",
+ "keyword" : "++"
+ }, {
+ "className" : "negative",
+ "keyword" : "--"
+ }, {
+ "className" : "reference",
+ "keyword" : "=="
+ }, {
+ "className" : "question",
+ "keyword" : "??"
+ }],
+ cinecast_version : false, /* put to false to enable the platform version, true for the festival cinecast one. */
+
/* where does the widget PUT the annotations - this is a mustache template. id refers to the id of the media ans is filled
- by the widget.
- */
- api_endpoint_template: platform_url + "/ldtplatform/api/ldt/annotations/{{id}}.json",
- api_method: "PUT"
+ by the widget.
+ */
+ api_endpoint_template : "", // platform_url + "/ldtplatform/api/ldt/annotations/{{id}}.json",
+ api_method : "PUT"
},
"SparklineWidget" : {
- column_width: 10 // the width of a column in pixels.
- },
- "Main" : {
- autoplay: true
+ lineColor : "#7492b4",
+ fillColor : "#aeaeb8",
+ lineWidth : 2
},
"AnnotationsListWidget" : {
- ajax_mode: true, /* use ajax to get information about the annotations.
- if set to false, only search in the annotations for the
- current project. */
+ ajax_mode : true, /* use ajax to get information about the annotations.
+ if set to false, only search in the annotations for the
+ current project. */
/* the platform generates some funky urls. We replace them afterwards to point to the
- correct place - this setting will probably be overwritten by the platform
- implementers.
- Note that the player has to replace the variables between {{ and }} by its own values.
- */
- ajax_url: platform_url + "/ldtplatform/api/ldt/segments/{media}/{begin}/{end}",
-
- ajax_granularity: 10000, /* how much ms should we look before and after the
- current timecode */
-
- default_thumbnail: "/metadataplayer/src/css/imgs/video_sequence.png",
-
- project_url: platform_url + "/ldtplatform/ldt/front/player/" /* the beginning
- of a link to the
- new front */
- }
- };
-};
-
-/*
-Override this if you want to change the info the player receives about the user.
-It's typically overrided in server-side templates with user-specific data.
-*/
-IriSP.defaults.user = function() { return {
- "name" : "Anonymous user",
- "avatar" : IriSP.paths.imgs + "/user_default_icon.png"
+ correct place - this setting will probably be overwritten by the platform
+ implementers.
+ Note that the player has to replace the variables between {{ and }} by its own values.
+ */
+ ajax_url : "", //platform_url + "/ldtplatform/api/ldt/segments/{{media}}/{{begin}}/{{end}}",
+ ajax_granularity : 10000, /* how much ms should we look before and after the current timecode */
+ default_thumbnail : "http://ldt.iri.centrepompidou.fr/static/site/ldt/css/imgs/video_sequence.png",
+ project_url : "", //platform_url + "/ldtplatform/ldt/front/player/"
+ /* the beginning of a link to the new front */
+ cinecast_version : false,
+ refresh_interval : 10000
+ },
+ "StackGraphWidget" : {
+ defaultcolor : "#585858",
+ tags : [
+ {
+ "keywords" : [ "++" ],
+ "description" : "positif",
+ "color" : "#1D973D"
+ },
+ {
+ "keywords" : [ "--" ],
+ "description" : "negatif",
+ "color" : "#CE0A15"
+ },
+ {
+ "keywords" : [ "==" ],
+ "description" : "reference",
+ "color" : "#C5A62D"
+ },
+ {
+ "keywords" : [ "??" ],
+ "description" : "question",
+ "color" : "#036AAE"
+ }
+ ],
+ streamgraph : false
}
-};
-
-
-IriSP.defaults.paths = {
-// "imgs": "/tweetlive/res/metadataplayer/src/css/imgs"
- "imgs": "/metadataplayer/src/css/imgs"
-};
-
-
-IriSP.defaults.default_templates_vars = function() {
- return {
- "img_dir" : IriSP.paths.imgs
- };
}/* the widget classes and definitions */
/**
@@ -1858,24 +1867,28 @@
this.selector.attr("widget-type", this._config.type);
}
-};
-
-// This functions checks for configuration options
-
-IriSP.Widget.prototype.checkOption = function(_name, _default) {
- this[_name] = (
- typeof this._config[_name] != "undefined"
- ? this._config[_name]
- : (
- (typeof IriSP.widgetsDefaults[this._config.type] != "undefined" && IriSP.widgetsDefaults[this._config.type][_name] != "undefined")
- ? IriSP.widgetsDefaults[this._config.type][_name]
- : (
- typeof _default != "undefined"
- ? _default
- : null
- )
- )
- )
+ // Parsing Widget Defaults
+ var _this = this;
+
+ if (typeof config.type == "string" && typeof IriSP.widgetsDefaults[config.type] == "object") {
+ IriSP._(IriSP.widgetsDefaults[config.type]).each(function(_v, _k) {
+ if (typeof config[_k] != "undefined") {
+ _this[_k] = config[_k];
+ } else {
+ _this[_k] = _v;
+ }
+ });
+ }
+
+};
+
+
+IriSP.Widget.prototype.currentMedia = function() {
+ return this._serializer.currentMedia();
+}
+
+IriSP.Widget.prototype.getDuration = function() {
+ return this._serializer.getDuration();
}
/**
@@ -1969,7 +1982,7 @@
this._widgets.push([widgetName, newDiv]);
var divTempl = "<div id='{{id}}' style='width: {{width}}px; position: relative; clear: both;'></div";
- var spacerTempl = "<div id='{{spacer_id}}' style='width: {{width}}px; position: relative; height: {{spacer_div_height}};'></div";
+ var spacerTempl = "<div id='{{spacer_id}}' style='width: {{width}}px; position: relative; height: {{spacer_div_height}}px;'></div";
var divCode = Mustache.to_html(divTempl, {id: newDiv, width: this._width});
var spacerCode = Mustache.to_html(spacerTempl, {spacer_id: spacerDiv, width: this._width,
@@ -2221,46 +2234,10 @@
return widget;
};
-/** Go through the defaults to set a reasonable value */
-IriSP.configureDefaults = function(libdir, platform_url) {
- /* the defaults configuration is messy and complicated. There are two things to know :
- - we want to allow overwriting of defaults - that's why we have IriSP.widgetDefaults
- and IriSP.defaults.widgetDefaults. The first is filled by the embedder and then fleshed out
- with the contents of the first. We use underscore.defaults for that, but there's one problem with
- this function : it doesn't work recursively.
- - we need to compute some values at runtime instead of at compile time
- */
-
- IriSP.lib = IriSP.underscore.defaults(IriSP.lib, IriSP.defaults.lib(libdir));
-
- /* get the factory defaults for the widgets and merge them with the default the user
- may have defined
- */
- var factory_defaults = IriSP.defaults.widgetsDefaults(platform_url);
- for(var widget in factory_defaults) {
-
- /* create the object if it doesn't exists */
- if (IriSP.null_or_undefined(IriSP.widgetsDefaults[widget]))
- IriSP.widgetsDefaults[widget] = {};
-
- IriSP.widgetsDefaults[widget] = IriSP.underscore.defaults(IriSP.widgetsDefaults[widget], factory_defaults[widget]);
- }
-
- IriSP.paths = IriSP.underscore.defaults(IriSP.paths, IriSP.defaults.paths);
- IriSP.default_templates_vars = IriSP.underscore.defaults(IriSP.default_templates_vars,
- IriSP.defaults.default_templates_vars());
-
- if (IriSP.null_or_undefined(IriSP.user))
- IriSP.user = {};
-
- IriSP.user = IriSP.underscore.defaults(IriSP.user, IriSP.defaults.user());
-};
-
/** single point of entry for the metadataplayer */
-IriSP.initPlayer = function(config, metadata_url, libdir, platform_url) {
+IriSP.initPlayer = function(config, metadata_url) {
document.getElementById(config.gui.container).innerHTML = IriSP.templToHTML(IriSP.loading_template, config.gui);
- IriSP.configureDefaults(libdir, platform_url);
- IriSP.loadLibs(IriSP.lib, config, metadata_url,
+ IriSP.loadLibs(config, metadata_url,
function() {
var layoutManager = new IriSP.LayoutManager(config.gui);
@@ -2384,14 +2361,26 @@
? options.directVideoPath
: IriSP.get_aliased(IriSP.__jsonMetadata["medias"][0], ["href","url"])
);
+ var _flashVars = {
+ "streamFMS" : true,
+ "adVast" : false,
+ "lg" : "fr_cinecast",
+ "autoPlay" : options.autoPlay,
+ "directVideoTitle" : "",
+ "urlAcData" : options.urlAcData,
+ "directVideoPath" : _videoUrl,
+ "host" : "http://allocine.fr"
+ }
- var fv = "streamFMS=true&adVast=false&lg=fr_cinecast&autoPlay=" + options.autoPlay + "&directVideoTitle=&urlAcData=" + options.urlAcData + "&directVideoPath=" + _videoUrl + "&host=http://allocine.fr";
-// console.log("fv = " + fv);
+ if (typeof IriSP.__jsonMetadata["medias"][0].meta == "object" && typeof IriSP.__jsonMetadata["medias"][0].meta.subtitles == "string") {
+ _flashVars.subTitlePath = IriSP.__jsonMetadata["medias"][0].meta.subtitles;
+ }
+
var params = {
"allowScriptAccess" : "always",
"wmode": "opaque",
- "flashvars" : fv,
+ "flashvars" : IriSP.jQuery.param(_flashVars),
"allowfullscreen" : true
};
var atts = {
@@ -2763,11 +2752,6 @@
IriSP.Widget.call(this, Popcorn, config, Serializer);
this.__counter = 0;
this.__oldList = [];
-
- this.checkOption('ajax_mode');
- this.checkOption('project_url');
- this.checkOption('default_thumbnail');
- this.checkOption("cinecast_version", false);
this.searchRe = null;
this._ajax_cache = [];
var _this = this;
@@ -2794,7 +2778,7 @@
IriSP.AnnotationsListWidget.prototype.searchHandler = function(searchString) {
this.searchRe = (searchString && searchString.length) ? IriSP.regexpFromText(searchString) : null;
- if (this.ajax_mode) {
+ if (this.ajax_mode && !this.cinecast_version) {
var _this = this,
_annotations = (
this.searchRe === null
@@ -2824,17 +2808,21 @@
this.selector.html(_html);
+ this.selector.find('.Ldt-AnnotationsList-Tag-Li').click(function() {
+ _this._Popcorn.trigger("IriSP.search.triggeredSearch", IriSP.jQuery(this).text().trim());
+ })
+
if (this.searchRe !== null) {
this.selector.find(".Ldt-AnnotationsList-Title a, .Ldt-AnnotationsList-Description")
.each(function() {
var _$ = IriSP.jQuery(this);
- _$.html(_$.text().replace(_this.searchRe, '<span class="Ldt-AnnotationsList-highlight">$1</span>'))
+ _$.html(_$.text().trim().replace(_this.searchRe, '<span class="Ldt-AnnotationsList-highlight">$1</span>'))
})
}
};
IriSP.AnnotationsListWidget.prototype.transformAnnotation = function(a) {
- var _this = this
+ var _this = this;
return {
"id" : a.id,
"title": this.cinecast_version ? IriSP.get_aliased(a.meta, ['creator_name', 'creator']) : a.content.title,
@@ -2843,6 +2831,7 @@
"end" : IriSP.msToTime(a.end),
"thumbnail" : (typeof a.meta == "object" && typeof a.meta.thumbnail == "string") ? a.meta.thumbnail : this.default_thumbnail,
"url" : (typeof a.meta == "object" && typeof a.meta.url == "string") ? a.meta.url : null,
+ "created_at" :(typeof a.meta == "object" && typeof a.meta.created == "string") ? Date.parse(a.meta.created.replace(/^(\d{4})-(\d{2})-(\d{2})T(\d{2}\:\d{2}\:\d{2}).*$/,"$2/$3/$1 $4 UTC+0000")) : null,
"tags": typeof a.tags == "object"
? IriSP.underscore(a.tags)
.chain()
@@ -2901,7 +2890,6 @@
this._Popcorn.trigger("IriSP.search.noMatchFound");
}
}
-
list = IriSP.underscore(list)
.chain()
.sortBy(function(_o) {
@@ -2909,16 +2897,16 @@
})
.first(10)
.sortBy(function(_o) {
- return (typeof _o.is_new != "undefined" && _o.is_new ? -1 : _o.iterator);
+ return (_this.cinecast_version ? - _o.created_at : _o.iterator);
})
.value();
-
var idList = IriSP.underscore.pluck(list, "id").sort();
- if (!IriSP.underscore.isEqual(this.__oldList, idList) || typeof(force_redraw) !== "undefined") {
+ if (!IriSP.underscore.isEqual(this.__oldList, idList) || this.lastSearch !== this.searchRe || typeof(force_redraw) !== "undefined") {
this.do_redraw(list);
this.__oldList = idList;
+ this.lastSearch = this.searchRe;
}
/* save for next call */
@@ -2937,15 +2925,13 @@
}
- /* the platform gives us a special url - of the type : http://path/{media}/{begin}/{end}
+ /* the platform gives us a special url - of the type : http://path/{{media}}/{{begin}}/{{end}}
we double the braces using regexps and we feed it to mustache to build the correct url
we have to do that because the platform only knows at run time what view it's displaying.
*/
- var platf_url = IriSP.widgetsDefaults.AnnotationsListWidget.ajax_url
- .replace(/\{/g, '{{').replace(/\}/g, '}}');
- var media_id = this._serializer.currentMedia()["id"];
- var duration = this._serializer.getDuration();
+ var media_id = this.currentMedia()["id"];
+ var duration = this.getDuration();
var begin_timecode = (Math.floor(tcode) - 300) * 1000;
if (begin_timecode < 0)
@@ -2955,7 +2941,7 @@
if (end_timecode > duration)
end_timecode = duration;
- var templ = Mustache.to_html(platf_url, {media: media_id, begin: begin_timecode,
+ var templ = Mustache.to_html(this.ajax_url, {media: media_id, begin: begin_timecode,
end: end_timecode});
/* we create on the fly a serializer to get the ajax */
@@ -2976,7 +2962,7 @@
*/
var l = [];
- var media = this._serializer.currentMedia()["id"];
+ var media = this.currentMedia()["id"];
for (i = 0; i < annotations.length; i++) {
var obj = this.transformAnnotation(annotations[i])
@@ -3009,13 +2995,30 @@
var _this = this;
- if (!this.ajax_mode) {
+ if (!this.ajax_mode || this.cinecast_version) {
var _throttled = IriSP.underscore.throttle(function() {
_this.drawList();
}, 1500);
_throttled();
this._Popcorn.listen("IriSP.createAnnotationWidget.addedAnnotation", _throttled);
this._Popcorn.listen("timeupdate", _throttled);
+ if (this.cinecast_version) {
+ window.setInterval(function() {
+ var _tmpSerializer = new IriSP.JSONSerializer(IriSP.__dataloader, _this._config.metadata.src, true);
+ _tmpSerializer.sync(function(json) {
+ IriSP.underscore(json.annotations).each(function(_a) {
+ var _j = _this.annotations_ids.indexOf(_a.id);
+ if (_j == -1) {
+ _this._serializer._data.annotations.push(_a);
+ _this.annotations_ids.push(_a.id);
+ } else {
+ _this._serializer._data.annotations[_j] = _a;
+ }
+ _throttled();
+ });
+ }, true); // true is for force_refresh
+ },this.refresh_interval);
+ }
} else {
/* update the widget when the video has finished loading and when it's seeked and paused */
this._Popcorn.listen("seeked", IriSP.wrap(this, this.ajaxRedraw));
@@ -3059,7 +3062,7 @@
var keywords = "";
var begin = +annotation.begin / 1000;
var end = +annotation.end / 1000;
- var duration = this._serializer.getDuration();
+ var duration = this.getDuration();
var tags = "";
var title_templ = "{{title}} - ( {{begin}} - {{end}} )";
@@ -3091,15 +3094,10 @@
this.selector.find(".Ldt-SaKeywords").text(tags);
// update sharing buttons
- var defaults = IriSP.widgetsDefaults.AnnotationsWidget;
- var text = defaults.share_text;
- var fb_link = defaults.fb_link;
- var tw_link = defaults.tw_link;
- var gplus_link = defaults.gplus_link;
var url = document.location.href + "#id=" + annotation.id;
- this.selector.find(".Ldt-fbShare").attr("href", IriSP.mkFbUrl(url, text));
- this.selector.find(".Ldt-TwShare").attr("href", IriSP.mkTweetUrl(url, text));
- this.selector.find(".Ldt-GplusShare").attr("href", IriSP.mkGplusUrl(url, text));
+ this.selector.find(".Ldt-fbShare").attr("href", IriSP.mkFbUrl(url, this.share_text));
+ this.selector.find(".Ldt-TwShare").attr("href", IriSP.mkTweetUrl(url, this.share_text));
+ this.selector.find(".Ldt-GplusShare").attr("href", IriSP.mkGplusUrl(url, this.share_text));
};
IriSP.AnnotationsWidget.prototype.clearWidget = function() {
@@ -3213,7 +3211,7 @@
var begin = (+ currentAnnotation.begin) / 1000;
var end = (+ currentAnnotation.end) / 1000;
- var duration = this._serializer.getDuration() / 1000;
+ var duration = this.getDuration() / 1000;
var middle_time = (begin + end) / 2;
var percents = middle_time / duration;
@@ -3275,7 +3273,7 @@
"annotation_saved": "Thank you, your annotation has been saved.",
"share_annotation": "Would you like to share it on social networks ?",
"share_on": "Share on",
- "moar_tags": "More tags"
+ "more_tags": "More tags"
},
"fr": {
"submit": "Envoyer",
@@ -3289,7 +3287,7 @@
"annotation_saved": "Merci, votre annotation a été enregistrée.",
"share_annotation": "Souhaitez-vous la partager sur les réseaux sociaux ?",
"share_on": "Partager sur",
- "moar_tagz": "Plus de mots-clés"
+ "more_tags": "Plus de mots-clés"
}
}
);
@@ -3297,16 +3295,6 @@
IriSP.createAnnotationWidget = function(Popcorn, config, Serializer) {
IriSP.Widget.call(this, Popcorn, config, Serializer);
this._hidden = true;
-
- this.checkOption("keywords");
- this.checkOption("polemic_mode", true);
- this.checkOption("polemics");
- this.checkOption("cinecast_version", false);
- this.checkOption("api_endpoint_template");
- this.checkOption("show_from_field", true);
- this.checkOption("api_method");
- this.checkOption("random_keywords");
- this.checkOption("disable_share", false);
if (!IriSP.null_or_undefined(IriSP.user)) {
if (!IriSP.null_or_undefined(IriSP.user.avatar)) {
@@ -3335,11 +3323,9 @@
IriSP.createAnnotationWidget.prototype.draw = function() {
var _this = this;
- if (typeof this._config.remote_keywords != "undefined" && typeof this._config.remote_keywords) {
- IriSP.jQuery.getJSON(this._config.remote_keywords, function(_json) {
- _this.keywords = IriSP.underscore(_json.tags).map(function(_tag) {
- return _tag.meta.description;
- });
+ if (typeof this.remote_tags == "object") {
+ IriSP.jQuery.getJSON((typeof this.remote_tags.alias == "string" ? this.remote_tags.alias : this.remote_tags.url), function(_json) {
+ _this.tags = _json.tags;
_this.drawCallback();
});
} else {
@@ -3361,11 +3347,11 @@
this.showStartScreen();
}
- if (this.random_keywords) {
+ if (this.random_tags) {
this.selector.find(".Ldt-createAnnotation-keywords li").hide();
- this.showMoarTagz();
+ this.showMoreTags();
this.selector.find('.Ldt-createAnnotation-moar-keywordz').click(function() {
- _this.showMoarTagz();
+ _this.showMoreTags();
})
}
// Add onclick event to both polemic and keywords buttons
@@ -3378,7 +3364,10 @@
// js_mod is a custom event because there's no simple way to test for a js
// change in a textfield.
this.selector.find(".Ldt-createAnnotation-Description")
- .bind("propertychange keyup input paste click js_mod", IriSP.wrap(this, this.handleTextChanges));
+ .bind("propertychange keyup input paste click js_mod", IriSP.wrap(this, this.handleTextChanges))
+ .keyup(function(_e) {
+ console.log(_e);
+ });
/* the cinecast version of the player is supposed to pause when the user clicks on the button */
@@ -3439,8 +3428,8 @@
}
};
-IriSP.createAnnotationWidget.prototype.showMoarTagz = function() {
- for (var j=0; j < this.random_keywords; j++) {
+IriSP.createAnnotationWidget.prototype.showMoreTags = function() {
+ for (var j=0; j < this.random_tags; j++) {
var _jq = this.selector.find(".Ldt-createAnnotation-keywords li:hidden");
if (_jq.length > 1) {
IriSP.jQuery(_jq[Math.floor(_jq.length*Math.random())]).show();
@@ -3489,7 +3478,7 @@
// block the arrow.
this._Popcorn.trigger("IriSP.ArrowWidget.blockArrow");
- var duration = this._serializer.getDuration();
+ var duration = this.getDuration();
var currentChapter = this._serializer.currentChapitre(currentTime);
@@ -3648,23 +3637,28 @@
IriSP.createAnnotationWidget.prototype.sendLdtData = function(contents, callback) {
var _this = this;
- var apiJson = {annotations : [{}], meta: {}};
+ var apiJson = {
+ format : "http://advene.org/ns/cinelab/",
+ annotations : [
+ {}
+ ],
+ meta: {}};
var annotation = apiJson.annotations[0];
- annotation.media = this._serializer.currentMedia()["id"];
+ annotation.media = this.currentMedia()["id"];
if (this.cinecast_version) {
annotation.begin = Math.round(this._Popcorn.currentTime() * 1000);
annotation.end = annotation.begin;
} else {
- var duration = this._serializer.getDuration();
+ var duration = this.getDuration();
annotation.begin = +((duration * (this.sliceLeft / 100)).toFixed(0));
annotation.end = +((duration * ((this.sliceWidth + this.sliceLeft) / 100)).toFixed(0));
}
// boundary checks
annotation.begin = Math.max(0, annotation.begin);
- annotation.end = Math.min(this._serializer.getDuration(), annotation.end);
+ annotation.end = Math.min(this.getDuration(), annotation.end);
annotation.type = ( this.cinecast_version ? "cinecast:UserAnnotation" : ( this._serializer.getContributions() || "" ));
if (typeof(annotation.type) === "undefined")
@@ -3699,19 +3693,28 @@
meta.created = Date().toString();
- // All #hashtags are added to tags
- var _tags = contents.toLowerCase().match(/#[^#\s]+\b/gim) || [];
- this.selector.find('.Ldt-createAnnotation-keyword-button').each(function() {
- var _tx = IriSP.jQuery(this).text(),
- _rx = IriSP.regexpFromText(_tx);
+ var _tags = [];
+ IriSP._(this.tags).each(function(_v) {
+ var _rx = IriSP.regexpFromText(_v.meta.description);
if (_rx.test(contents)) {
- _tags.push(_tx.toLowerCase())
+ _tags.push(_v.id);
}
});
-
+
+ if (typeof this.remote_tags == "object") {
+ _tags = IriSP._(_tags).map(function(_t) {
+ return _this.remote_tags.id + ':' + _t
+ });
+ if (typeof apiJson.imports == "undefined") {
+ apiJson.imports = [];
+ }
+ apiJson.imports.push({
+ "id" : this.remote_tags.id,
+ "url" : this.remote_tags.url
+ })
+ }
annotation.tags = IriSP.underscore.uniq(_tags);
-
var jsonString = JSON.stringify(apiJson);
var project_id = this._serializer._data.meta.id;
@@ -3756,6 +3759,7 @@
_this._serializer._data.annotations.push(annotation);
_this._Popcorn.trigger("IriSP.createAnnotationWidget.addedAnnotation", annotation);
+ this.selector.find(".Ldt-createAnnotation-Description").val("");
callback(annotation);
}),
error:
@@ -3909,7 +3913,7 @@
}
// we get it at each call because it may change.
- var duration = this._serializer.getDuration() / 1000;
+ var duration = this.getDuration() / 1000;
var totalTime = IriSP.secondsToTime(duration);
var elapsedTime = IriSP.secondsToTime(this._Popcorn.currentTime());
@@ -4117,7 +4121,7 @@
var lineSize = this.width; // timeline pixel width
var nbrframes = lineSize/frameSize; // frame numbers
var numberOfTweet = 0; // number of tweet overide later
- var duration = this._serializer.getDuration(); // timescale width
+ var duration = this.getDuration(); // timescale width
var frameLength = lineSize / frameSize; // frame timescale
var timeline;
var colors = new Array("","#1D973D","#036AAE","#CE0A15","#C5A62D","#585858");
@@ -4451,7 +4455,7 @@
IriSP.PolemicWidget.prototype.sliderUpdater = function() {
var time = +this._Popcorn.currentTime();
- var duration = this._serializer.getDuration();
+ var duration = this.getDuration();
this.paperSlider.attr("width", time * (this.width / (duration / 1000)));
@@ -4523,7 +4527,6 @@
this._Popcorn.listen("IriSP.search.closed", function() { self.searchFieldClosedHandler.call(self); });
this._Popcorn.listen("IriSP.search.cleared", function() { self.searchFieldClearedHandler.call(self); });
- this.checkOption("cinecast_version");
this.defaultColors = ["#1f77b4","#aec7e8","#ff7f0e","#ffbb78","#2ca02c","#98df8a","#d62728","#ff9896","#9467bd","#c5b0d5","#8c564b","#c49c94","#e377c2","#f7b6d2","#7f7f7f","#c7c7c7","#bcbd22","#dbdb8d","#17becf","#9edae5"]
};
@@ -4540,7 +4543,7 @@
this.positionMarker = this.selector.find(".Ldt-SegmentPositionMarker");
this._Popcorn.listen("timeupdate", IriSP.wrap(this, this.positionUpdater));
- var duration = this._serializer.getDuration();
+ var duration = this.getDuration();
if (this.cinecast_version) {
var segments_annotations = IriSP.underscore.filter(
@@ -4707,7 +4710,7 @@
};
IriSP.SegmentsWidget.prototype.positionUpdater = function() {
- var duration = this._serializer.getDuration() / 1000;
+ var duration = this.getDuration() / 1000;
var time = this._Popcorn.currentTime();
//var position = ((time / duration) * 100).toFixed(2);
var position = ((time / duration) * 100).toFixed(2);
@@ -4934,7 +4937,7 @@
var time = this._Popcorn.currentTime();
- var duration = this._serializer.getDuration() / 1000;
+ var duration = this.getDuration() / 1000;
var percents = time / duration;
/* we do these complicated calculations to center exactly
@@ -4974,7 +4977,7 @@
var width = this.sliderBackground.width();
var relX = event.pageX - parentOffset.left;
- var duration = this._serializer.getDuration() / 1000;
+ var duration = this.getDuration() / 1000;
var newTime = ((relX / width) * duration).toFixed(2);
this._Popcorn.currentTime(newTime);
@@ -4987,7 +4990,7 @@
var width = this.sliderBackground.width();
var relX = event.pageX - parentOffset.left;
- var duration = this._serializer.getDuration() / 1000;
+ var duration = this.getDuration() / 1000;
var newTime = ((relX / width) * duration).toFixed(2);
this._Popcorn.currentTime(newTime);
@@ -5015,7 +5018,7 @@
IriSP.SliderWidget.prototype.mouseOutHandler = function(event) {
this.timeOutId = window.setTimeout(IriSP.wrap(this, this.minimizeOnTimeout),
- IriSP.widgetsDefaults.SliderWidget.minimize_period);
+ this.minimize_period);
};
IriSP.SliderWidget.prototype.minimizeOnTimeout = function(event) {
@@ -5044,7 +5047,7 @@
var width = this.sliderBackground.width();
var relX = event.originalEvent.pageX - parentOffset.left;
- var duration = this._serializer.getDuration() / 1000;
+ var duration = this.getDuration() / 1000;
var newTime = ((relX / width) * duration).toFixed(2);
this._Popcorn.currentTime(newTime);
@@ -5058,9 +5061,6 @@
this._oldAnnotation = null;
this._results = [];
- this.lineColor = this._config.lineColor || "#7492b4";
- this.fillColor = this._config.fillColor || "#aeaeb8";
- this.lineWidth = this._config.lineWidth || 2;
this.slices = this._config.slices || Math.floor(this.width/20);
if (!this.width) {
this.width = this.selector.width();
@@ -5072,7 +5072,6 @@
if (this._config.background) {
this.selector.css("background", this._config.background);
}
- this.checkOption('cinecast_version');
};
@@ -5084,7 +5083,7 @@
/** draw the sparkline using jquery sparkline */
IriSP.SparklineWidget.prototype.draw = function() {
- this.duration = this._serializer.getDuration();
+ this.duration = this.getDuration();
this.paper = new Raphael(this.selector[0], this.width, this.height);
var _this = this;
@@ -5111,7 +5110,7 @@
_sliceDuration = Math.floor( this.duration / this.slices),
_results = _(_.range(this.slices)).map(function(_i) {
return _(_annotations).filter(function(_a){
- return (_a.begin <= (1 + _i) * _sliceDuration) && (_a.end >= _i * _sliceDuration) && (!_this.cinecast_version || _a.type == "cinecast:UserAnnotation")
+ return (_a.begin <= (1 + _i) * _sliceDuration) && (_a.end >= _i * _sliceDuration)
}).length;
});
}
@@ -5204,53 +5203,23 @@
IriSP.StackGraphWidget.prototype = new IriSP.Widget();
IriSP.StackGraphWidget.prototype.draw = function() {
- var _ = IriSP._,
- _defaultTags = [
- {
- "keywords" : [ "++" ],
- "description" : "positif",
- "color" : "#1D973D"
- },
- {
- "keywords" : [ "--" ],
- "description" : "negatif",
- "color" : "#CE0A15"
- },
- {
- "keywords" : [ "==" ],
- "description" : "reference",
- "color" : "#C5A62D"
- },
- {
- "keywords" : [ "??" ],
- "description" : "question",
- "color" : "#036AAE"
- }
- ],
- _defaultDefColor = "#585858";
+ var _ = IriSP._;
this.height = this._config.height || 50;
this.width = this.selector.width();
- this.isStreamGraph = this._config.streamgraph || false;
- this.sliceCount = this._config.slices || ~~(this.width/(this.isStreamGraph ? 20 : 5));
- this.tagconf = (this._config.tags
- ? this._config.tags
- : _defaultTags);
- IriSP._(this.tagconf).each(function(_a) {
+ this.slices = this._config.slices || ~~(this.width/(this.streamgraph ? 20 : 5));
+ _(this.tags).each(function(_a) {
_a.regexp = new RegExp(_(_a.keywords).map(function(_k) {
return _k.replace(/([\W])/gm,'\\$1');
}).join("|"),"im")
});
- this.defaultcolorconf = (this._config.defaultcolor
- ? this._config.defaultcolor
- : _defaultDefColor);
this.paper = new Raphael(this.selector[0], this.width, this.height);
this.groups = [];
- this.duration = this._serializer.getDuration();
+ this.duration = this.getDuration();
var _annotationType = this._serializer.getTweets(),
- _sliceDuration = ~~ ( this.duration / this.sliceCount),
+ _sliceDuration = ~~ ( this.duration / this.slices),
_annotations = this._serializer._data.annotations,
- _groupedAnnotations = _(_.range(this.sliceCount)).map(function(_i) {
+ _groupedAnnotations = _(_.range(this.slices)).map(function(_i) {
return _(_annotations).filter(function(_a){
return (_a.begin <= (1 + _i) * _sliceDuration) && (_a.end >= _i * _sliceDuration)
});
@@ -5259,25 +5228,25 @@
return _g.length
}).length,
_scale = this.height / _max,
- _width = this.width / this.sliceCount,
+ _width = this.width / this.slices,
_showTitle = !this._config.excludeTitle,
_showDescription = !this._config.excludeDescription;
- var _paths = _(this.tagconf).map(function() {
+ var _paths = _(this.tags).map(function() {
return [];
});
_paths.push([]);
- for (var i = 0; i < this.sliceCount; i++) {
+ for (var i = 0; i < this.slices; i++) {
var _group = _groupedAnnotations[i];
if (_group) {
- var _vol = _(this.tagconf).map(function() {
+ var _vol = _(this.tags).map(function() {
return 0;
});
for (var j = 0; j < _group.length; j++){
var _txt = (_showTitle ? _group[j].content.title : '') + ' ' + (_showDescription ? _group[j].content.description : '')
- var _tags = _(this.tagconf).map(function(_tag) {
+ var _tags = _(this.tags).map(function(_tag) {
return (_txt.search(_tag.regexp) == -1 ? 0 : 1)
}),
_nbtags = _(_tags).reduce(function(_a,_b) {
@@ -5295,20 +5264,20 @@
_nbneutre = _group.length - _nbtags,
_h = _nbneutre * _scale,
_base = this.height - _h;
- if (!this.isStreamGraph) {
+ if (!this.streamgraph) {
this.paper.rect(i * _width, _base, _width - 1, _h ).attr({
"stroke" : "none",
- "fill" : this.defaultcolorconf
+ "fill" : this.defaultcolor
});
}
_paths[0].push(_base);
- for (var j = 0; j < this.tagconf.length; j++) {
+ for (var j = 0; j < this.tags.length; j++) {
_h = _vol[j] * _scale;
_base = _base - _h;
- if (!this.isStreamGraph) {
+ if (!this.streamgraph) {
this.paper.rect(i * _width, _base, _width - 1, _h ).attr({
"stroke" : "none",
- "fill" : this.tagconf[j].color
+ "fill" : this.tags[j].color
});
}
_paths[j+1].push(_base);
@@ -5320,13 +5289,13 @@
for (var j = 0; j < _paths.length; j++) {
_paths[j].push(this.height);
}
- this.groups.push(_(this.tagconf).map(function() {
+ this.groups.push(_(this.tags).map(function() {
return 0;
}));
}
}
- if (this.isStreamGraph) {
+ if (this.streamgraph) {
for (var j = _paths.length - 1; j >= 0; j--) {
var _d = _(_paths[j]).reduce(function(_memo, _v, _k) {
return _memo + ( _k
@@ -5335,7 +5304,7 @@
},'') + 'L' + this.width + ' ' + _paths[j][_paths[j].length - 1] + 'L' + this.width + ' ' + this.height + 'L0 ' + this.height;
this.paper.path(_d).attr({
"stroke" : "none",
- "fill" : (j ? this.tagconf[j-1].color : this.defaultcolorconf)
+ "fill" : (j ? this.tags[j-1].color : this.defaultcolor)
});
}
}
@@ -5361,7 +5330,7 @@
_this.updateTooltip(_e);
// Trace
var relX = _e.pageX - _this.selector.offset().left;
- var _duration = _this._serializer.getDuration();
+ var _duration = _this.getDuration();
var _time = parseInt((relX / _this.width) * _duration);
_this._Popcorn.trigger("IriSP.TraceWidget.MouseEvents", {
"widget" : "StackGraphWidget",
@@ -5402,10 +5371,10 @@
};
IriSP.StackGraphWidget.prototype.updateTooltip = function(event) {
- var _segment = Math.max(0,Math.min(this.groups.length - 1, Math.floor(this.sliceCount * (event.pageX - this.selector.offset().left)/this.width))),
+ var _segment = Math.max(0,Math.min(this.groups.length - 1, Math.floor(this.slices * (event.pageX - this.selector.offset().left)/this.width))),
_valeurs = this.groups[_segment],
- _width = this.width / this.sliceCount,
- _html = '<ul style="list-style: none; margin: 0; padding: 0;">' + IriSP._(this.tagconf).map(function(_tag, _i) {
+ _width = this.width / this.slices,
+ _html = '<ul style="list-style: none; margin: 0; padding: 0;">' + IriSP._(this.tags).map(function(_tag, _i) {
return '<li style="clear: both;"><span style="float: left; width: 10px; height: 10px; margin: 2px; background: '
+ _tag.color
+ ';"></span>'
@@ -5415,7 +5384,7 @@
+ '</li>';
}).join('') + '</ul>';
this.TooltipWidget._shown = false; // Vraiment, on ne peut pas ouvrir le widget s'il n'est pas encore ouvert ?
- this.TooltipWidget.show('','',(_segment + .5)* this.width / this.sliceCount, 0);
+ this.TooltipWidget.show('','',(_segment + .5)* this.width / this.slices, 0);
this.TooltipWidget.selector.find(".tip").html(_html);
this.rectangleFocus.attr({
"x" : _segment * _width,
@@ -5729,7 +5698,7 @@
var title = IriSP.formatTweet(annotation.content.title);
var img = annotation.content.img.src;
if (typeof(img) === "undefined" || img === "" || img === "None") {
- img = IriSP.widgetsDefaults.TweetsWidget.default_profile_picture;
+ img = this.default_profile_picture;
}
var imageMarkup = IriSP.templToHTML("<img src='{{src}}' alt='user image'></img>",
@@ -5773,7 +5742,7 @@
this.drawTweet(annotation);
var time = this._Popcorn.currentTime();
- this._timeoutId = window.setTimeout(IriSP.wrap(this, this.clearPanel), IriSP.widgetsDefaults.TweetsWidget.tweet_display_period);
+ this._timeoutId = window.setTimeout(IriSP.wrap(this, this.clearPanel), this.tweet_display_period);
};
@@ -5872,7 +5841,7 @@
/** load JSON-cinelab data and also sort the annotations by start time
@param callback function to call when the data is ready.
*/
-IriSP.JSONSerializer.prototype.sync = function(callback) {
+IriSP.JSONSerializer.prototype.sync = function(callback, force_refresh) {
/* we don't have to do much because jQuery handles json for us */
var self = this;
@@ -5894,14 +5863,22 @@
}
callback(data);
};
-
- this._DataLoader.get(this._url, fn);
+ this._DataLoader.get(this._url, fn, force_refresh);
};
/** @return the metadata about the media being read FIXME: always return the first media. */
IriSP.JSONSerializer.prototype.currentMedia = function() {
- return this._data.medias[0]; /* FIXME: don't hardcode it */
-};
+ return (typeof this._data.medias == "object" && this._data.medias.length) ? this._data.medias[0] : IriSP.__jsonMetadata.medias[0];
+};
+
+IriSP.JSONSerializer.prototype.getDuration = function() {
+ var _m = this.currentMedia();
+ if (_m === null || typeof _m.meta == "undefined") {
+ return 0;
+ }
+ return +(IriSP.get_aliased(_m.meta, ["dc:duration", "duration"]) || 0);
+}
+
/** searches for an annotation which matches title, description and keyword
"" matches any field.
@@ -6283,8 +6260,4 @@
val = this.getId("Publ");
return val;
-};
-
-IriSP.JSONSerializer.prototype.getDuration = function() {
- return +(IriSP.get_aliased(this.currentMedia().meta, ["dc:duration", "duration"]) || 0);
-}
+};
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/integration/allocine_dossier_independant/json_examples/annotations.json Fri Apr 06 16:49:32 2012 +0200
@@ -0,0 +1,142 @@
+{
+ "format": "http:\/\/advene.org\/ns\/cinelab\/",
+ "imports": [
+ {
+ "id": "cinecast",
+ "url": "http:\/\/festival.cinecast.fr\/configuration.json"
+ }, {
+ "id": "medias",
+ "url": "http:\/\/festival.cinecast.fr\/medias.json"
+ }, {
+ "id": "extracts",
+ "url": "http:\/\/festival.cinecast.fr\/movie-extracts.json"
+ }
+ ],
+ "meta": {
+ "creator": "Vodkaster",
+ "created": "2012-04-04T16:21:02+02:00"
+ },
+ "annotations": [
+ {
+ "id": "ac-12",
+ "type": "cinecast:UserAnnotation",
+ "media": "cinecast-bamako",
+ "meta": {
+ "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34956\/25592566-2-fre-FR\/34956-Des-chiffres-africains-calamiteux1_reference.jpg",
+ "creator": "login",
+ "created": "2012-03-09T16:21:28+01:00",
+ "extract": "789820"
+ },
+ "begin": 678000,
+ "end": 678000,
+ "content": {
+ "data": "eeeee"
+ }
+ }, {
+ "id": "ac-13",
+ "type": "cinecast:UserAnnotation",
+ "media": "cinecast-bamako",
+ "meta": {
+ "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34954\/25592478-3-fre-FR\/34954-Fin-du-spectacle-et-reprise-de-l-audience1_reference.jpg",
+ "creator": "login",
+ "created": "2012-03-09T16:31:43+01:00",
+ "extract": "789816"
+ },
+ "begin": 519000,
+ "end": 519000,
+ "content": {
+ "data": "8minute38 #mot-clef"
+ }
+ }, {
+ "id": "ac-21",
+ "type": "cinecast:UserAnnotation",
+ "media": "cinecast-bamako",
+ "meta": {
+ "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34961\/25593042-2-fre-FR\/34961-Standby1_reference.jpg",
+ "creator": "login",
+ "created": "2012-03-09T18:09:22+01:00",
+ "extract": "789849"
+ },
+ "begin": 177000,
+ "end": 177000,
+ "content": {
+ "data": "addadad #faux-raccord #mot-clef"
+ }
+ }, {
+ "id": "ac-22",
+ "type": "cinecast:UserAnnotation",
+ "media": "cinecast-bamako",
+ "meta": {
+ "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34961\/25593042-2-fre-FR\/34961-Standby1_reference.jpg",
+ "creator": "login",
+ "created": "2012-03-12T10:31:04+01:00",
+ "extract": "789849"
+ },
+ "begin": 177000,
+ "end": 177000,
+ "content": {
+ "data": "ddddddddddddd"
+ }
+ }, {
+ "id": "ac-6",
+ "type": "cinecast:UserAnnotation",
+ "media": "cinecast-bamako",
+ "meta": {
+ "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34952\/25592345-4-fre-FR\/34952-Generique-de-debut-et-preparation-a-l-audience1_reference.jpg",
+ "creator": "login",
+ "created": "2012-03-09T15:19:25+01:00",
+ "extract": "789808"
+ },
+ "begin": 7000,
+ "end": 7000,
+ "content": {
+ "data": "aaaa #mot-clef"
+ }
+ }, {
+ "id": "ac-7",
+ "type": "cinecast:UserAnnotation",
+ "media": "cinecast-bamako",
+ "meta": {
+ "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34952\/25592345-4-fre-FR\/34952-Generique-de-debut-et-preparation-a-l-audience1_reference.jpg",
+ "creator": "login",
+ "created": "2012-03-09T15:35:35+01:00",
+ "extract": "789808"
+ },
+ "begin": 120000,
+ "end": 120000,
+ "content": {
+ "data": "test"
+ }
+ }, {
+ "id": "ac-8",
+ "type": "cinecast:UserAnnotation",
+ "media": "cinecast-bamako",
+ "meta": {
+ "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34952\/25592345-4-fre-FR\/34952-Generique-de-debut-et-preparation-a-l-audience1_reference.jpg",
+ "creator": "login",
+ "created": "2012-03-09T15:42:35+01:00",
+ "extract": "789808"
+ },
+ "begin": 64000,
+ "end": 64000,
+ "content": {
+ "data": "test 1"
+ }
+ }, {
+ "id": "vk-11",
+ "type": "cinecast:UserAnnotation",
+ "media": "cinecast-bamako",
+ "meta": {
+ "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/entre-les-murs\/13226\/19768606-6-fre-FR\/13226-Rentree-des-classes1_reference.jpg",
+ "creator": "hugo",
+ "created": "2012-04-01T00:00:00+02:00",
+ "extract": "246390"
+ },
+ "begin": 335189,
+ "end": 335189,
+ "content": {
+ "data": " #europe"
+ }
+ }
+ ]
+}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/integration/allocine_dossier_independant/json_examples/extracts.json Fri Apr 06 16:49:32 2012 +0200
@@ -0,0 +1,705 @@
+{
+ "format": "http:\/\/advene.org\/ns\/cinelab\/",
+ "imports": [
+ {
+ "id": "cinecast",
+ "url": "http:\/\/festival.cinecast.fr\/configuration.json"
+ }, {
+ "id": "medias",
+ "url": "http:\/\/festival.cinecast.fr\/medias.json"
+ }
+ ],
+ "meta": {
+ "creator": "Vodkaster",
+ "created": "2012-04-04T16:21:41+02:00"
+ },
+ "annotations": [
+ {
+ "id": "789808",
+ "type": "cinecast:MovieExtract",
+ "media": "medias:bamako",
+ "meta": {
+ "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34952\/25592345-4-fre-FR\/34952-Generique-de-debut-et-preparation-a-l-audience1_reference.jpg",
+ "creator": "Vodkaster",
+ "created": "1970-01-01T01:00:00+01:00"
+ },
+ "begin": 0,
+ "end": 180000,
+ "content": {
+ "data": "G\u00e9n\u00e9rique de d\u00e9but et pr\u00e9paration \u00e0 l'audience"
+ }
+ }, {
+ "id": "789812",
+ "type": "cinecast:MovieExtract",
+ "media": "medias:bamako",
+ "meta": {
+ "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34953\/25592424-3-fre-FR\/34953-Debut-de-l-audience1_reference.jpg",
+ "creator": "Vodkaster",
+ "created": "1970-01-01T01:00:00+01:00"
+ },
+ "begin": 180000,
+ "end": 284000,
+ "content": {
+ "data": "D\u00e9but de l'audience"
+ }
+ }, {
+ "id": "789816",
+ "type": "cinecast:MovieExtract",
+ "media": "medias:bamako",
+ "meta": {
+ "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34954\/25592478-3-fre-FR\/34954-Fin-du-spectacle-et-reprise-de-l-audience1_reference.jpg",
+ "creator": "Vodkaster",
+ "created": "1970-01-01T01:00:00+01:00"
+ },
+ "begin": 404000,
+ "end": 579000,
+ "content": {
+ "data": "Fin du spectacle et reprise de l'audience"
+ }
+ }, {
+ "id": "789818",
+ "type": "cinecast:MovieExtract",
+ "media": "medias:bamako",
+ "meta": {
+ "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34955\/25592528-3-fre-FR\/34955-Corruption-et-seduction1_reference.jpg",
+ "creator": "Vodkaster",
+ "created": "1970-01-01T01:00:00+01:00"
+ },
+ "begin": 579000,
+ "end": 676000,
+ "content": {
+ "data": "Corruption et s\u00e9duction"
+ }
+ }, {
+ "id": "789820",
+ "type": "cinecast:MovieExtract",
+ "media": "medias:bamako",
+ "meta": {
+ "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34956\/25592566-2-fre-FR\/34956-Des-chiffres-africains-calamiteux1_reference.jpg",
+ "creator": "Vodkaster",
+ "created": "1970-01-01T01:00:00+01:00"
+ },
+ "begin": 676000,
+ "end": 797000,
+ "content": {
+ "data": "Des chiffres africains calamiteux"
+ }
+ }, {
+ "id": "789822",
+ "type": "cinecast:MovieExtract",
+ "media": "medias:bamako",
+ "meta": {
+ "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34957\/25592606-3-fre-FR\/34957-Un-ideal-de-societe-inadaptee1_reference.jpg",
+ "creator": "Vodkaster",
+ "created": "1970-01-01T01:00:00+01:00"
+ },
+ "begin": 797000,
+ "end": 977000,
+ "content": {
+ "data": "Un id\u00e9al de soci\u00e9t\u00e9 inadapt\u00e9e"
+ }
+ }, {
+ "id": "789824",
+ "type": "cinecast:MovieExtract",
+ "media": "medias:bamako",
+ "meta": {
+ "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34958\/25592668-2-fre-FR\/34958-Supercherie-du-G81_reference.jpg",
+ "creator": "Vodkaster",
+ "created": "1970-01-01T01:00:00+01:00"
+ },
+ "begin": 977000,
+ "end": 1143000,
+ "content": {
+ "data": "\"Supercherie\" du G8 ?"
+ }
+ }, {
+ "id": "789825",
+ "type": "cinecast:MovieExtract",
+ "media": "medias:bamako",
+ "meta": {
+ "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34959\/25592703-2-fre-FR\/34959-C-est-un-debat-qui-depasse-l-Afrique1_reference.jpg",
+ "creator": "Vodkaster",
+ "created": "1970-01-01T01:00:00+01:00"
+ },
+ "begin": 1143000,
+ "end": 1276000,
+ "content": {
+ "data": "C'est un d\u00e9bat qui d\u00e9passe l'Afrique"
+ }
+ }, {
+ "id": "789839",
+ "type": "cinecast:MovieExtract",
+ "media": "medias:bamako",
+ "meta": {
+ "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34960\/25592937-2-fre-FR\/34960-Ce-monde-est-ouvert-aux-blancs-mais-pas-aux-noirs1_reference.jpg",
+ "creator": "Vodkaster",
+ "created": "1970-01-01T01:00:00+01:00"
+ },
+ "begin": 1276000,
+ "end": 1456000,
+ "content": {
+ "data": "Ce monde est ouvert aux blancs mais pas aux noirs"
+ }
+ }, {
+ "id": "789849",
+ "type": "cinecast:MovieExtract",
+ "media": "medias:bamako",
+ "meta": {
+ "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34961\/25593042-2-fre-FR\/34961-Standby1_reference.jpg",
+ "creator": "Vodkaster",
+ "created": "1970-01-01T01:00:00+01:00"
+ },
+ "begin": 1456000,
+ "end": 1590000,
+ "content": {
+ "data": "Standby"
+ }
+ }, {
+ "id": "789854",
+ "type": "cinecast:MovieExtract",
+ "media": "medias:bamako",
+ "meta": {
+ "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34963\/25593121-2-fre-FR\/34963-Expose-du-periple1_reference.jpg",
+ "creator": "Vodkaster",
+ "created": "1970-01-01T01:00:00+01:00"
+ },
+ "begin": 1590000,
+ "end": 1761000,
+ "content": {
+ "data": "Expos\u00e9 du p\u00e9riple"
+ }
+ }, {
+ "id": "789874",
+ "type": "cinecast:MovieExtract",
+ "media": "medias:bamako",
+ "meta": {
+ "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34967\/25593375-2-fre-FR\/34967-Expose-du-periple-21_reference.jpg",
+ "creator": "Vodkaster",
+ "created": "1970-01-01T01:00:00+01:00"
+ },
+ "begin": 1761000,
+ "end": 1901000,
+ "content": {
+ "data": "Expos\u00e9 du p\u00e9riple 2"
+ }
+ }, {
+ "id": "789878",
+ "type": "cinecast:MovieExtract",
+ "media": "medias:bamako",
+ "meta": {
+ "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34968\/25593421-2-fre-FR\/34968-L-audience-est-suspendue1_reference.jpg",
+ "creator": "Vodkaster",
+ "created": "1970-01-01T01:00:00+01:00"
+ },
+ "begin": 1901000,
+ "end": 2081000,
+ "content": {
+ "data": "L'audience est suspendue"
+ }
+ }, {
+ "id": "789880",
+ "type": "cinecast:MovieExtract",
+ "media": "medias:bamako",
+ "meta": {
+ "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34969\/25593461-2-fre-FR\/34969-Activites-et-problemes-du-soir1_reference.jpg",
+ "creator": "Vodkaster",
+ "created": "1970-01-01T01:00:00+01:00"
+ },
+ "begin": 2081000,
+ "end": 2134000,
+ "content": {
+ "data": "Activit\u00e9s et probl\u00e8mes du soir"
+ }
+ }, {
+ "id": "789884",
+ "type": "cinecast:MovieExtract",
+ "media": "medias:bamako",
+ "meta": {
+ "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34970\/25593533-4-fre-FR\/34970-Death-in-Tumbuktu-11_reference.jpg",
+ "creator": "Vodkaster",
+ "created": "1970-01-01T01:00:00+01:00"
+ },
+ "begin": 2134000,
+ "end": 2301000,
+ "content": {
+ "data": "Death in Tumbuktu 1"
+ }
+ }, {
+ "id": "789888",
+ "type": "cinecast:MovieExtract",
+ "media": "medias:bamako",
+ "meta": {
+ "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34971\/25593579-2-fre-FR\/34971-Death-in-Tumbuktu-21_reference.jpg",
+ "creator": "Vodkaster",
+ "created": "1970-01-01T01:00:00+01:00"
+ },
+ "begin": 2301000,
+ "end": 2457000,
+ "content": {
+ "data": "Death in Tumbuktu 2"
+ }
+ }, {
+ "id": "789891",
+ "type": "cinecast:MovieExtract",
+ "media": "medias:bamako",
+ "meta": {
+ "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34972\/25593626-3-fre-FR\/34972-Une-vie-et-un-couple-precaires1_reference.jpg",
+ "creator": "Vodkaster",
+ "created": "1970-01-01T01:00:00+01:00"
+ },
+ "begin": 2457000,
+ "end": 2624000,
+ "content": {
+ "data": "Une vie et un couple pr\u00e9caires"
+ }
+ }, {
+ "id": "789896",
+ "type": "cinecast:MovieExtract",
+ "media": "medias:bamako",
+ "meta": {
+ "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34973\/25593677-3-fre-FR\/34973-Un-mariage-interrompt-l-audience1_reference.jpg",
+ "creator": "Vodkaster",
+ "created": "1970-01-01T01:00:00+01:00"
+ },
+ "begin": 2624000,
+ "end": 2763000,
+ "content": {
+ "data": "Un mariage interrompt l'audience"
+ }
+ }, {
+ "id": "789901",
+ "type": "cinecast:MovieExtract",
+ "media": "medias:bamako",
+ "meta": {
+ "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34974\/25593734-2-fre-FR\/34974-L-Afrique-n-a-t-elle-plus-aucun-moyen-financier1_reference.jpg",
+ "creator": "Vodkaster",
+ "created": "1970-01-01T01:00:00+01:00"
+ },
+ "begin": 2763000,
+ "end": 2903000,
+ "content": {
+ "data": "L'Afrique n'a-t-elle plus aucun moyen financier ?"
+ }
+ }, {
+ "id": "789904",
+ "type": "cinecast:MovieExtract",
+ "media": "medias:bamako",
+ "meta": {
+ "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34975\/25593779-2-fre-FR\/34975-BM-ET-FMI-les-seuls-coupables1_reference.jpg",
+ "creator": "Vodkaster",
+ "created": "1970-01-01T01:00:00+01:00"
+ },
+ "begin": 2903000,
+ "end": 3056000,
+ "content": {
+ "data": "BM ET FMI : les seuls coupables ?"
+ }
+ }, {
+ "id": "789906",
+ "type": "cinecast:MovieExtract",
+ "media": "medias:bamako",
+ "meta": {
+ "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34976\/25593821-2-fre-FR\/34976-Reflexion-sur-le-role-des-banques1_reference.jpg",
+ "creator": "Vodkaster",
+ "created": "1970-01-01T01:00:00+01:00"
+ },
+ "begin": 3056000,
+ "end": 3110000,
+ "content": {
+ "data": "R\u00e9flexion sur le r\u00f4le des banques"
+ }
+ }, {
+ "id": "789911",
+ "type": "cinecast:MovieExtract",
+ "media": "medias:bamako",
+ "meta": {
+ "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34978\/25593906-2-fre-FR\/34978-Absence-d-ambassade-d-Israel-preuve-de-l-anti-developpement1_reference.jpg",
+ "creator": "Vodkaster",
+ "created": "1970-01-01T01:00:00+01:00"
+ },
+ "begin": 3110000,
+ "end": 3202000,
+ "content": {
+ "data": "Absence d'ambassade d'Isra\u00ebl = preuve de l'anti-d\u00e9veloppement ?"
+ }
+ }, {
+ "id": "789914",
+ "type": "cinecast:MovieExtract",
+ "media": "medias:bamako",
+ "meta": {
+ "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34979\/25593951-2-fre-FR\/34979-Colonialisme-latent1_reference.jpg",
+ "creator": "Vodkaster",
+ "created": "1970-01-01T01:00:00+01:00"
+ },
+ "begin": 3202000,
+ "end": 3359000,
+ "content": {
+ "data": "Colonialisme latent"
+ }
+ }, {
+ "id": "789917",
+ "type": "cinecast:MovieExtract",
+ "media": "medias:bamako",
+ "meta": {
+ "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34981\/25594026-2-fre-FR\/34981-Colonialisme-latent-21_reference.jpg",
+ "creator": "Vodkaster",
+ "created": "1970-01-01T01:00:00+01:00"
+ },
+ "begin": 3359000,
+ "end": 3411000,
+ "content": {
+ "data": "Colonialisme latent 2"
+ }
+ }, {
+ "id": "789919",
+ "type": "cinecast:MovieExtract",
+ "media": "medias:bamako",
+ "meta": {
+ "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34982\/25594093-2-fre-FR\/34982-Colonialisme-latent-31_reference.jpg",
+ "creator": "Vodkaster",
+ "created": "1970-01-01T01:00:00+01:00"
+ },
+ "begin": 3522000,
+ "end": 3573000,
+ "content": {
+ "data": "Colonialisme latent 3"
+ }
+ }, {
+ "id": "789921",
+ "type": "cinecast:MovieExtract",
+ "media": "medias:bamako",
+ "meta": {
+ "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34983\/25594133-2-fre-FR\/34983-Sermon-du-pasteur1_reference.jpg",
+ "creator": "Vodkaster",
+ "created": "1970-01-01T01:00:00+01:00"
+ },
+ "begin": 3573000,
+ "end": 3722000,
+ "content": {
+ "data": "Sermon du pasteur"
+ }
+ }, {
+ "id": "789925",
+ "type": "cinecast:MovieExtract",
+ "media": "medias:bamako",
+ "meta": {
+ "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34985\/25594213-2-fre-FR\/34985-Standby-21_reference.jpg",
+ "creator": "Vodkaster",
+ "created": "1970-01-01T01:00:00+01:00"
+ },
+ "begin": 3722000,
+ "end": 3807000,
+ "content": {
+ "data": "Standby 2"
+ }
+ }, {
+ "id": "789927",
+ "type": "cinecast:MovieExtract",
+ "media": "medias:bamako",
+ "meta": {
+ "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34986\/25594280-2-fre-FR\/34986-Samba-Diakite1_reference.jpg",
+ "creator": "Vodkaster",
+ "created": "1970-01-01T01:00:00+01:00"
+ },
+ "begin": 3807000,
+ "end": 3981000,
+ "content": {
+ "data": "Samba Diakit\u00e9"
+ }
+ }, {
+ "id": "789928",
+ "type": "cinecast:MovieExtract",
+ "media": "medias:bamako",
+ "meta": {
+ "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34987\/25594315-2-fre-FR\/34987-Audience-et-contre-audience1_reference.jpg",
+ "creator": "Vodkaster",
+ "created": "1970-01-01T01:00:00+01:00"
+ },
+ "begin": 3981000,
+ "end": 4033000,
+ "content": {
+ "data": "Audience et contre-audience"
+ }
+ }, {
+ "id": "789929",
+ "type": "cinecast:MovieExtract",
+ "media": "medias:bamako",
+ "meta": {
+ "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34988\/25594350-3-fre-FR\/34988-Theorie-du-complot1_reference.jpg",
+ "creator": "Vodkaster",
+ "created": "1970-01-01T01:00:00+01:00"
+ },
+ "begin": 4033000,
+ "end": 4197000,
+ "content": {
+ "data": "Th\u00e9orie du complot"
+ }
+ }, {
+ "id": "789931",
+ "type": "cinecast:MovieExtract",
+ "media": "medias:bamako",
+ "meta": {
+ "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34989\/25594417-3-fre-FR\/34989-Reponse-a-la-theorie-du-complot1_reference.jpg",
+ "creator": "Vodkaster",
+ "created": "1970-01-01T01:00:00+01:00"
+ },
+ "begin": 4197000,
+ "end": 4358000,
+ "content": {
+ "data": "R\u00e9ponse \u00e0 la th\u00e9orie du complot"
+ }
+ }, {
+ "id": "789933",
+ "type": "cinecast:MovieExtract",
+ "media": "medias:bamako",
+ "meta": {
+ "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34990\/25594484-2-fre-FR\/34990-Recit-d-un-reve1_reference.jpg",
+ "creator": "Vodkaster",
+ "created": "1970-01-01T01:00:00+01:00"
+ },
+ "begin": 4358000,
+ "end": 4443000,
+ "content": {
+ "data": "R\u00e9cit d'un r\u00eave"
+ }
+ }, {
+ "id": "789934",
+ "type": "cinecast:MovieExtract",
+ "media": "medias:bamako",
+ "meta": {
+ "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34991\/25594519-2-fre-FR\/34991-Aucune-preuve-qui-soutienne-la-theorie-du-complot1_reference.jpg",
+ "creator": "Vodkaster",
+ "created": "1970-01-01T01:00:00+01:00"
+ },
+ "begin": 4443000,
+ "end": 4545000,
+ "content": {
+ "data": "Aucune preuve qui soutienne la th\u00e9orie du complot"
+ }
+ }, {
+ "id": "789940",
+ "type": "cinecast:MovieExtract",
+ "media": "medias:bamako",
+ "meta": {
+ "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34992\/25594575-2-fre-FR\/34992-Triste-soiree1_reference.jpg",
+ "creator": "Vodkaster",
+ "created": "1970-01-01T01:00:00+01:00"
+ },
+ "begin": 4545000,
+ "end": 4620000,
+ "content": {
+ "data": "Triste soir\u00e9e"
+ }
+ }, {
+ "id": "789941",
+ "type": "cinecast:MovieExtract",
+ "media": "medias:bamako",
+ "meta": {
+ "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34993\/25594610-2-fre-FR\/34993-Le-tissu-social-est-il-detruit1_reference.jpg",
+ "creator": "Vodkaster",
+ "created": "1970-01-01T01:00:00+01:00"
+ },
+ "begin": 4620000,
+ "end": 4729000,
+ "content": {
+ "data": "Le tissu social est-il d\u00e9truit ?"
+ }
+ }, {
+ "id": "789945",
+ "type": "cinecast:MovieExtract",
+ "media": "medias:bamako",
+ "meta": {
+ "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34994\/25594660-2-fre-FR\/34994-Plaidoirie-de-Maitre-Rappaport1_reference.jpg",
+ "creator": "Vodkaster",
+ "created": "1970-01-01T01:00:00+01:00"
+ },
+ "begin": 4729000,
+ "end": 4908000,
+ "content": {
+ "data": "Plaidoirie de Ma\u00eetre Rappaport"
+ }
+ }, {
+ "id": "790160",
+ "type": "cinecast:MovieExtract",
+ "media": "medias:bamako",
+ "meta": {
+ "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/35018\/25597011-3-fre-FR\/35018-Plaidoirie-de-Maitre-Rappaport-21_reference.jpg",
+ "creator": "Vodkaster",
+ "created": "1970-01-01T01:00:00+01:00"
+ },
+ "begin": 4908000,
+ "end": 5081000,
+ "content": {
+ "data": "Plaidoirie de Ma\u00eetre Rappaport 2"
+ }
+ }, {
+ "id": "790173",
+ "type": "cinecast:MovieExtract",
+ "media": "medias:bamako",
+ "meta": {
+ "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/35020\/25597155-2-fre-FR\/35020-Chanter-pour-se-faire-entendre1_reference.jpg",
+ "creator": "Vodkaster",
+ "created": "1970-01-01T01:00:00+01:00"
+ },
+ "begin": 5082000,
+ "end": 5262000,
+ "content": {
+ "data": "Chanter pour se faire entendre"
+ }
+ }, {
+ "id": "790194",
+ "type": "cinecast:MovieExtract",
+ "media": "medias:bamako",
+ "meta": {
+ "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/35021\/25597543-3-fre-FR\/35021-Plaidoirie-de-Maitre-William-Bourdon1_reference.jpg",
+ "creator": "Vodkaster",
+ "created": "1970-01-01T01:00:00+01:00"
+ },
+ "begin": 5262000,
+ "end": 5434000,
+ "content": {
+ "data": "Plaidoirie de Ma\u00eetre William Bourdon"
+ }
+ }, {
+ "id": "790201",
+ "type": "cinecast:MovieExtract",
+ "media": "medias:bamako",
+ "meta": {
+ "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/35022\/25597618-3-fre-FR\/35022-Plaidoirie-de-Maitre-William-Bourdon-21_reference.jpg",
+ "creator": "Vodkaster",
+ "created": "1970-01-01T01:00:00+01:00"
+ },
+ "begin": 5434000,
+ "end": 5588000,
+ "content": {
+ "data": "Plaidoirie de Ma\u00eetre William Bourdon 2"
+ }
+ }, {
+ "id": "790207",
+ "type": "cinecast:MovieExtract",
+ "media": "medias:bamako",
+ "meta": {
+ "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/35023\/25597704-3-fre-FR\/35023-Plaidoirie-de-Wiliam-Bourdon-41_reference.jpg",
+ "creator": "Vodkaster",
+ "created": "1970-01-01T01:00:00+01:00"
+ },
+ "begin": 5768000,
+ "end": 5824000,
+ "content": {
+ "data": "Plaidoirie de Wiliam Bourdon 4"
+ }
+ }, {
+ "id": "790210",
+ "type": "cinecast:MovieExtract",
+ "media": "medias:bamako",
+ "meta": {
+ "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/35024\/25597774-3-fre-FR\/35024-Plaidoirie-de-Aissata-Tall-Sall1_reference.jpg",
+ "creator": "Vodkaster",
+ "created": "1970-01-01T01:00:00+01:00"
+ },
+ "begin": 5824000,
+ "end": 5985000,
+ "content": {
+ "data": "Plaidoirie de A\u00efssata Tall Sall"
+ }
+ }, {
+ "id": "790212",
+ "type": "cinecast:MovieExtract",
+ "media": "medias:bamako",
+ "meta": {
+ "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/35025\/25597812-3-fre-FR\/35025-Plaidoirie-de-Aissata-Tall-Sall-21_reference.jpg",
+ "creator": "Vodkaster",
+ "created": "1970-01-01T01:00:00+01:00"
+ },
+ "begin": 5985000,
+ "end": 6081000,
+ "content": {
+ "data": "Plaidoirie de A\u00efssata Tall Sall 2"
+ }
+ }, {
+ "id": "790215",
+ "type": "cinecast:MovieExtract",
+ "media": "medias:bamako",
+ "meta": {
+ "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/35026\/25597857-3-fre-FR\/35026-Interlude-musical1_reference.jpg",
+ "creator": "Vodkaster",
+ "created": "1970-01-01T01:00:00+01:00"
+ },
+ "begin": 6081000,
+ "end": 6245000,
+ "content": {
+ "data": "Interlude musical"
+ }
+ }, {
+ "id": "790217",
+ "type": "cinecast:MovieExtract",
+ "media": "medias:bamako",
+ "meta": {
+ "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/35027\/25597895-2-fre-FR\/35027-SPOILER-Suicide1_reference.jpg",
+ "creator": "Vodkaster",
+ "created": "1970-01-01T01:00:00+01:00"
+ },
+ "begin": 6245000,
+ "end": 6311000,
+ "content": {
+ "data": "SPOILER - Suicide"
+ }
+ }, {
+ "id": "790218",
+ "type": "cinecast:MovieExtract",
+ "media": "medias:bamako",
+ "meta": {
+ "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/35028\/25597930-2-fre-FR\/35028-Funerailles1_reference.jpg",
+ "creator": "Vodkaster",
+ "created": "1970-01-01T01:00:00+01:00"
+ },
+ "begin": 6311000,
+ "end": 6430000,
+ "content": {
+ "data": "Fun\u00e9railles"
+ }
+ }, {
+ "id": "790219",
+ "type": "cinecast:MovieExtract",
+ "media": "medias:bamako",
+ "meta": {
+ "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/35029\/25597965-2-fre-FR\/35029-Documentaire-sur-les-funerailles1_reference.jpg",
+ "creator": "Vodkaster",
+ "created": "1970-01-01T01:00:00+01:00"
+ },
+ "begin": 6430000,
+ "end": 6539000,
+ "content": {
+ "data": "Documentaire sur les fun\u00e9railles"
+ }
+ }, {
+ "id": "790220",
+ "type": "cinecast:MovieExtract",
+ "media": "medias:bamako",
+ "meta": {
+ "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/35030\/25598000-2-fre-FR\/35030-Generique-de-fin-11_reference.jpg",
+ "creator": "Vodkaster",
+ "created": "1970-01-01T01:00:00+01:00"
+ },
+ "begin": 6539000,
+ "end": 6659000,
+ "content": {
+ "data": "G\u00e9n\u00e9rique de fin 1"
+ }
+ }, {
+ "id": "790221",
+ "type": "cinecast:MovieExtract",
+ "media": "medias:bamako",
+ "meta": {
+ "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/35031\/25598035-2-fre-FR\/35031-Generique-de-fin-21_reference.jpg",
+ "creator": "Vodkaster",
+ "created": "1970-01-01T01:00:00+01:00"
+ },
+ "begin": 6659000,
+ "end": 6725000,
+ "content": {
+ "data": "G\u00e9n\u00e9rique de fin 2"
+ }
+ }
+ ]
+}
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/integration/allocine_dossier_independant/json_examples/media.json Fri Apr 06 16:49:32 2012 +0200
@@ -0,0 +1,26 @@
+{
+ "format": "http:\/\/advene.org\/ns\/cinelab\/",
+ "imports": [
+ {
+ "id": "cinecast",
+ "url": "http:\/\/festival.cinecast.fr\/configuration.json"
+ }
+ ],
+ "medias": [
+ {
+ "id": "bamako",
+ "url": "rtmpe:\/\/cp41629.edgefcs.net\/ondemand\/mp4:ondemand\/nmedia\/cinecast\/Bamako700.m4v",
+ "meta": {
+ "title": "Bamako",
+ "duration": 6725000,
+ "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/42851-1-fre-FR\/Bamako3_reference.jpg",
+ "directors": "Abderrahmane Sissako",
+ "actors": "A\u00efssa Ma\u00efga, Ti\u00e9coura Traor\u00e9, Ma\u00efmouna H\u00e9l\u00e8ne Diarra",
+ "nationalities": "FR",
+ "production_year": "2006",
+ "version": "VOST",
+ "synopsis": "Mel\u00e9 est une chanteuse de bar et son mari, Chaka, au ch\u00f4mage s'enfonce dans le silence. Malgr\u00e9 une fille qui les unit, leur couple s'\u00e9miette petit \u00e0 petit. Ils vivent dans une maison qu'ils partagent avec plusieurs familles. Dans la cour, se tient un \u00e9tonnant \u00e9v\u00e9nement\u00a0: le proc\u00e8s de la soci\u00e9t\u00e9 civile africaine contre la Banque mondiale et le FMI\u00a0!"
+ }
+ }
+ ]
+}
\ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/integration/allocine_dossier_independant/json_examples/movie32.json Fri Apr 06 16:49:32 2012 +0200
@@ -0,0 +1,1607 @@
+{
+ "medias": [
+ {
+ "id": "medias:c-est-dur-d-etre-aime-par-des-cons",
+ "url": "rtmpe://cp41629.edgefcs.net/ondemand/mp4:ondemand/nmedia/cinecast/C_Est_Dur_D_Etre_Aime_Par_Des_Cons700.m4v",
+ "meta": {
+ "mediaid": 32,
+ "actors": ["Philippe Val", "Elisabeth Badinter", "François Bayrou"],
+ "directors": ["Daniel Leconte"],
+ "nationalities": ["FR"],
+ "duration": 6140000,
+ "productionYear": "2008",
+ "synopsis": "Pour avoir reproduit les douze caricatures danoises ayant déclenché la colère des musulmans aux quatre coins du monde, Philippe Val, le patron de Charlie Hebdo, journal satirique français, est assigné en justice. Un procès hors norme que Daniel Leconte suit en temps réel.",
+ "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/17519400-1-fre-FR/C-est-dur-d-etre-aime-par-des-cons_reference.jpg",
+ "title": "C\u0027est dur d\u0027être aimé par des cons",
+ "version": "VOST"
+ }
+ }
+ ],
+ "annotation_types": {
+ "id": "UserAnnotation",
+ "meta": {
+ "description": "Annotation made during the Cinecast Festival."
+ }
+ },
+ "annotations": [
+ {
+ "id": "cinecast:785050",
+ "begin": 0,
+ "end": 144000,
+ "content": {
+ "data": "Postulat"
+ },
+ "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
+ "type": "cinecast:MovieExtract",
+ "meta": {
+ "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34390/25528462-2-fre-FR/34390-Postulat1_reference.jpg",
+ "created": "2012-04-05T12:11:33.9040725+02:00",
+ "creator": "Allociné"
+ }
+ }, {
+ "id": "cinecast:785052",
+ "begin": 144000,
+ "end": 201000,
+ "content": {
+ "data": "Licenciement. Charlie Hebdo prend le relais"
+ },
+ "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
+ "type": "cinecast:MovieExtract",
+ "meta": {
+ "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34391/25528502-4-fre-FR/34391-Licenciement.-Charlie-Hebdo-prend-le-relais1_reference.jpg",
+ "created": "2012-04-05T12:11:33.9040725+02:00",
+ "creator": "Allociné"
+ }
+ }, {
+ "id": "cinecast:250895",
+ "begin": 201000,
+ "end": 284000,
+ "content": {
+ "data": "Le fameux dessin"
+ },
+ "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
+ "type": "cinecast:MovieExtract",
+ "meta": {
+ "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/13800/19810874-5-fre-FR/13800-Le-fameux-dessin1_reference.jpg",
+ "created": "2012-04-05T12:11:33.9040725+02:00",
+ "creator": "Allociné"
+ }
+ }, {
+ "id": "cinecast:785081",
+ "begin": 284000,
+ "end": 450000,
+ "content": {
+ "data": "Denis Jeambar"
+ },
+ "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
+ "type": "cinecast:MovieExtract",
+ "meta": {
+ "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34394/25528804-2-fre-FR/34394-Denis-Jeambar1_reference.jpg",
+ "created": "2012-04-05T12:11:33.9040725+02:00",
+ "creator": "Allociné"
+ }
+ }, {
+ "id": "cinecast:785082",
+ "begin": 450000,
+ "end": 482000,
+ "content": {
+ "data": "Mosquée de Paris contre Charlie Hebdo"
+ },
+ "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
+ "type": "cinecast:MovieExtract",
+ "meta": {
+ "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34395/25528839-2-fre-FR/34395-Mosquee-de-Paris-contre-Charlie-Hebdo1_reference.jpg",
+ "created": "2012-04-05T12:11:33.9040725+02:00",
+ "creator": "Allociné"
+ }
+ }, {
+ "id": "cinecast:785086",
+ "begin": 482000,
+ "end": 561000,
+ "content": {
+ "data": "Générique"
+ },
+ "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
+ "type": "cinecast:MovieExtract",
+ "meta": {
+ "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34396/25528916-2-fre-FR/34396-Generique1_reference.jpg",
+ "created": "2012-04-05T12:11:33.9040725+02:00",
+ "creator": "Allociné"
+ }
+ }, {
+ "id": "cinecast:785092",
+ "begin": 561000,
+ "end": 685000,
+ "content": {
+ "data": "Proposition de débat"
+ },
+ "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
+ "type": "cinecast:MovieExtract",
+ "meta": {
+ "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34397/25529005-3-fre-FR/34397-Proposition-de-debat1_reference.jpg",
+ "created": "2012-04-05T12:11:33.9040725+02:00",
+ "creator": "Allociné"
+ }
+ }, {
+ "id": "cinecast:785095",
+ "begin": 685000,
+ "end": 761000,
+ "content": {
+ "data": "Annonce du procès"
+ },
+ "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
+ "type": "cinecast:MovieExtract",
+ "meta": {
+ "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34398/25529048-3-fre-FR/34398-Annonce-du-proces1_reference.jpg",
+ "created": "2012-04-05T12:11:33.9040725+02:00",
+ "creator": "Allociné"
+ }
+ }, {
+ "id": "cinecast:785099",
+ "begin": 761000,
+ "end": 936000,
+ "content": {
+ "data": "Les témoins de Charlie Hebdo"
+ },
+ "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
+ "type": "cinecast:MovieExtract",
+ "meta": {
+ "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34399/25529108-3-fre-FR/34399-Les-temoins-de-Charlie-Hebdo1_reference.jpg",
+ "created": "2012-04-05T12:11:33.9040725+02:00",
+ "creator": "Allociné"
+ }
+ }, {
+ "id": "cinecast:785101",
+ "begin": 936000,
+ "end": 973000,
+ "content": {
+ "data": "Le témoin mystère"
+ },
+ "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
+ "type": "cinecast:MovieExtract",
+ "meta": {
+ "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34400/25529146-3-fre-FR/34400-Le-temoin-mystere1_reference.jpg",
+ "created": "2012-04-05T12:11:33.9040725+02:00",
+ "creator": "Allociné"
+ }
+ }, {
+ "id": "cinecast:246119",
+ "begin": 973000,
+ "end": 1075000,
+ "content": {
+ "data": "Ce procès est une insulte raciste"
+ },
+ "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
+ "type": "cinecast:MovieExtract",
+ "meta": {
+ "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/13181/19766309-7-fre-FR/13181-Ce-proces-est-une-insulte-raciste1_reference.jpg",
+ "created": "2012-04-05T12:11:33.9040725+02:00",
+ "creator": "Allociné"
+ }
+ }, {
+ "id": "cinecast:785106",
+ "begin": 1075000,
+ "end": 1132000,
+ "content": {
+ "data": "Rire de tout"
+ },
+ "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
+ "type": "cinecast:MovieExtract",
+ "meta": {
+ "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34403/25529269-2-fre-FR/34403-Rire-de-tout1_reference.jpg",
+ "created": "2012-04-05T12:11:33.9040725+02:00",
+ "creator": "Allociné"
+ }
+ }, {
+ "id": "cinecast:785109",
+ "begin": 1132000,
+ "end": 1275000,
+ "content": {
+ "data": "La Une"
+ },
+ "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
+ "type": "cinecast:MovieExtract",
+ "meta": {
+ "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34405/25529346-3-fre-FR/34405-La-Une1_reference.jpg",
+ "created": "2012-04-05T12:11:33.9040725+02:00",
+ "creator": "Allociné"
+ }
+ }, {
+ "id": "cinecast:289950",
+ "begin": 1275000,
+ "end": 1341000,
+ "content": {
+ "data": "Exercer son droit"
+ },
+ "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
+ "type": "cinecast:MovieExtract",
+ "meta": {
+ "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/18268/20232789-7-fre-FR/18268-Exercer-son-droit1_reference.jpg",
+ "created": "2012-04-05T12:11:33.9040725+02:00",
+ "creator": "Allociné"
+ }
+ }, {
+ "id": "cinecast:785113",
+ "begin": 1341000,
+ "end": 1438000,
+ "content": {
+ "data": "Les enjeux"
+ },
+ "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
+ "type": "cinecast:MovieExtract",
+ "meta": {
+ "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34407/25529451-3-fre-FR/34407-Les-enjeux1_reference.jpg",
+ "created": "2012-04-05T12:11:33.9040725+02:00",
+ "creator": "Allociné"
+ }
+ }, {
+ "id": "cinecast:785118",
+ "begin": 1438000,
+ "end": 1562000,
+ "content": {
+ "data": "JT 13h"
+ },
+ "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
+ "type": "cinecast:MovieExtract",
+ "meta": {
+ "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34409/25529562-3-fre-FR/34409-JT-13h1_reference.jpg",
+ "created": "2012-04-05T12:11:33.9040725+02:00",
+ "creator": "Allociné"
+ }
+ }, {
+ "id": "cinecast:738531",
+ "begin": 1562000,
+ "end": 1640000,
+ "content": {
+ "data": "Interview à la radio avant le procès"
+ },
+ "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
+ "type": "cinecast:MovieExtract",
+ "meta": {
+ "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/30193/24841522-3-fre-FR/30193-Interview-a-la-radio-avant-le-proces1_reference.jpg",
+ "created": "2012-04-05T12:11:33.9050491+02:00",
+ "creator": "Allociné"
+ }
+ }, {
+ "id": "cinecast:785125",
+ "begin": 1640000,
+ "end": 1787000,
+ "content": {
+ "data": "Le jour du procès"
+ },
+ "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
+ "type": "cinecast:MovieExtract",
+ "meta": {
+ "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34410/25529650-3-fre-FR/34410-Le-jour-du-proces1_reference.jpg",
+ "created": "2012-04-05T12:11:33.9050491+02:00",
+ "creator": "Allociné"
+ }
+ }, {
+ "id": "cinecast:785129",
+ "begin": 1787000,
+ "end": 1954000,
+ "content": {
+ "data": "Audition de Philippe Val"
+ },
+ "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
+ "type": "cinecast:MovieExtract",
+ "meta": {
+ "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34412/25529728-3-fre-FR/34412-Audition-de-Philippe-Val1_reference.jpg",
+ "created": "2012-04-05T12:11:33.9050491+02:00",
+ "creator": "Allociné"
+ }
+ }, {
+ "id": "cinecast:785134",
+ "begin": 1954000,
+ "end": 2128000,
+ "content": {
+ "data": "Audition de Philipe Val 2ème partie"
+ },
+ "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
+ "type": "cinecast:MovieExtract",
+ "meta": {
+ "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34414/25529836-4-fre-FR/34414-Audition-de-Philipe-Val-2eme-partie1_reference.jpg",
+ "created": "2012-04-05T12:11:33.9050491+02:00",
+ "creator": "Allociné"
+ }
+ }, {
+ "id": "cinecast:785138",
+ "begin": 2128000,
+ "end": 2246000,
+ "content": {
+ "data": "L\u0027arrivée du fax"
+ },
+ "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
+ "type": "cinecast:MovieExtract",
+ "meta": {
+ "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34416/25529912-3-fre-FR/34416-L-arrivee-du-fax1_reference.jpg",
+ "created": "2012-04-05T12:11:33.9050491+02:00",
+ "creator": "Allociné"
+ }
+ }, {
+ "id": "cinecast:250520",
+ "begin": 2246000,
+ "end": 2344000,
+ "content": {
+ "data": "Lettre de soutien"
+ },
+ "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
+ "type": "cinecast:MovieExtract",
+ "meta": {
+ "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/13759/19808000-6-fre-FR/13759-Lettre-de-soutien1_reference.jpg",
+ "created": "2012-04-05T12:11:33.9050491+02:00",
+ "creator": "Allociné"
+ }
+ }, {
+ "id": "cinecast:785142",
+ "begin": 2344000,
+ "end": 2430000,
+ "content": {
+ "data": "La presse n\u0027en fera pas état"
+ },
+ "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
+ "type": "cinecast:MovieExtract",
+ "meta": {
+ "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34418/25530017-3-fre-FR/34418-La-presse-n-en-fera-pas-etat1_reference.jpg",
+ "created": "2012-04-05T12:11:33.9050491+02:00",
+ "creator": "Allociné"
+ }
+ }, {
+ "id": "cinecast:785144",
+ "begin": 2430000,
+ "end": 2564000,
+ "content": {
+ "data": "Dissolution du CFCM"
+ },
+ "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
+ "type": "cinecast:MovieExtract",
+ "meta": {
+ "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34419/25530055-3-fre-FR/34419-Dissolution-du-CFCM1_reference.jpg",
+ "created": "2012-04-05T12:11:33.9050491+02:00",
+ "creator": "Allociné"
+ }
+ }, {
+ "id": "cinecast:738542",
+ "begin": 2564000,
+ "end": 2692000,
+ "content": {
+ "data": "Mahomet : fossé d\u0027interprétation"
+ },
+ "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
+ "type": "cinecast:MovieExtract",
+ "meta": {
+ "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/30196/24841689-3-fre-FR/30196-Mahomet-fosse-d-interpretation1_reference.jpg",
+ "created": "2012-04-05T12:11:33.9050491+02:00",
+ "creator": "Allociné"
+ }
+ }, {
+ "id": "cinecast:785147",
+ "begin": 2692000,
+ "end": 2732000,
+ "content": {
+ "data": "1er retour"
+ },
+ "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
+ "type": "cinecast:MovieExtract",
+ "meta": {
+ "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34420/25530120-3-fre-FR/34420-1er-retour1_reference.jpg",
+ "created": "2012-04-05T12:11:33.9050491+02:00",
+ "creator": "Allociné"
+ }
+ }, {
+ "id": "cinecast:785149",
+ "begin": 2732000,
+ "end": 2892000,
+ "content": {
+ "data": "Une autre voix musulmane"
+ },
+ "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
+ "type": "cinecast:MovieExtract",
+ "meta": {
+ "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34421/25530158-3-fre-FR/34421-Une-autre-voix-musulmane1_reference.jpg",
+ "created": "2012-04-05T12:11:33.9050491+02:00",
+ "creator": "Allociné"
+ }
+ }, {
+ "id": "cinecast:738538",
+ "begin": 2892000,
+ "end": 2973000,
+ "content": {
+ "data": "La salle des pas perdus"
+ },
+ "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
+ "type": "cinecast:MovieExtract",
+ "meta": {
+ "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/30195/24841622-2-fre-FR/30195-La-salle-des-pas-perdus1_reference.jpg",
+ "created": "2012-04-05T12:11:33.9050491+02:00",
+ "creator": "Allociné"
+ }
+ }, {
+ "id": "cinecast:785153",
+ "begin": 2973000,
+ "end": 3144000,
+ "content": {
+ "data": "Audition du Père Lelong"
+ },
+ "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
+ "type": "cinecast:MovieExtract",
+ "meta": {
+ "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34423/25530246-3-fre-FR/34423-Audition-du-Pere-Lelong1_reference.jpg",
+ "created": "2012-04-05T12:11:33.9050491+02:00",
+ "creator": "Allociné"
+ }
+ }, {
+ "id": "cinecast:785156",
+ "begin": 3144000,
+ "end": 3177000,
+ "content": {
+ "data": "Un débat juridique ?"
+ },
+ "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
+ "type": "cinecast:MovieExtract",
+ "meta": {
+ "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34424/25530311-2-fre-FR/34424-Un-debat-juridique1_reference.jpg",
+ "created": "2012-04-05T12:11:33.9050491+02:00",
+ "creator": "Allociné"
+ }
+ }, {
+ "id": "cinecast:289961",
+ "begin": 3177000,
+ "end": 3342000,
+ "content": {
+ "data": "L\u0027audition de François Hollande"
+ },
+ "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
+ "type": "cinecast:MovieExtract",
+ "meta": {
+ "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/18270/20232882-6-fre-FR/18270-L-audition-de-Francois-Hollande1_reference.jpg",
+ "created": "2012-04-05T12:11:33.9050491+02:00",
+ "creator": "Allociné"
+ }
+ }, {
+ "id": "cinecast:785158",
+ "begin": 3342000,
+ "end": 3396000,
+ "content": {
+ "data": "Vous gênez là"
+ },
+ "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
+ "type": "cinecast:MovieExtract",
+ "meta": {
+ "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34426/25530381-2-fre-FR/34426-Vous-genez-la1_reference.jpg",
+ "created": "2012-04-05T12:11:33.9050491+02:00",
+ "creator": "Allociné"
+ }
+ }, {
+ "id": "cinecast:785160",
+ "begin": 3396000,
+ "end": 3556000,
+ "content": {
+ "data": "Audition de Denis Jeambar"
+ },
+ "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
+ "type": "cinecast:MovieExtract",
+ "meta": {
+ "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34428/25530451-3-fre-FR/34428-Audition-de-Denis-Jeambar1_reference.jpg",
+ "created": "2012-04-05T12:11:33.9050491+02:00",
+ "creator": "Allociné"
+ }
+ }, {
+ "id": "cinecast:785163",
+ "begin": 3556000,
+ "end": 3617000,
+ "content": {
+ "data": "Ils m\u0027ont torturé parce que j\u0027étais musulman"
+ },
+ "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
+ "type": "cinecast:MovieExtract",
+ "meta": {
+ "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34429/25530496-2-fre-FR/34429-Ils-m-ont-torture-parce-que-j-etais-musulman1_reference.jpg",
+ "created": "2012-04-05T12:11:33.9050491+02:00",
+ "creator": "Allociné"
+ }
+ }, {
+ "id": "cinecast:289942",
+ "begin": 3617000,
+ "end": 3772000,
+ "content": {
+ "data": "L\u0027agonie de la liberté"
+ },
+ "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
+ "type": "cinecast:MovieExtract",
+ "meta": {
+ "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/18267/20232735-8-fre-FR/18267-L-agonie-de-la-liberte1_reference.jpg",
+ "created": "2012-04-05T12:11:33.9050491+02:00",
+ "creator": "Allociné"
+ }
+ }, {
+ "id": "cinecast:785166",
+ "begin": 3772000,
+ "end": 3895000,
+ "content": {
+ "data": "Les nouveaux arrivants"
+ },
+ "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
+ "type": "cinecast:MovieExtract",
+ "meta": {
+ "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34432/25530601-4-fre-FR/34432-Les-nouveaux-arrivants1_reference.jpg",
+ "created": "2012-04-05T12:11:33.9050491+02:00",
+ "creator": "Allociné"
+ }
+ }, {
+ "id": "cinecast:258487",
+ "begin": 3895000,
+ "end": 3956000,
+ "content": {
+ "data": "La liberté de cracher"
+ },
+ "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
+ "type": "cinecast:MovieExtract",
+ "meta": {
+ "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/14525/19878658-7-fre-FR/14525-La-liberte-de-cracher1_reference.jpg",
+ "created": "2012-04-05T12:11:33.9050491+02:00",
+ "creator": "Allociné"
+ }
+ }, {
+ "id": "cinecast:785171",
+ "begin": 3956000,
+ "end": 4100000,
+ "content": {
+ "data": "L\u0027arrivée de Claude Lanzmann"
+ },
+ "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
+ "type": "cinecast:MovieExtract",
+ "meta": {
+ "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34434/25530709-2-fre-FR/34434-L-arrivee-de-Claude-Lanzmann1_reference.jpg",
+ "created": "2012-04-05T12:11:33.9050491+02:00",
+ "creator": "Allociné"
+ }
+ }, {
+ "id": "cinecast:785183",
+ "begin": 4100000,
+ "end": 4269000,
+ "content": {
+ "data": "Audition de François Bayrou"
+ },
+ "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
+ "type": "cinecast:MovieExtract",
+ "meta": {
+ "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34436/25530817-3-fre-FR/34436-Audition-de-Francois-Bayrou1_reference.jpg",
+ "created": "2012-04-05T12:11:33.9050491+02:00",
+ "creator": "Allociné"
+ }
+ }, {
+ "id": "cinecast:785189",
+ "begin": 4269000,
+ "end": 4326000,
+ "content": {
+ "data": "Vous dites un mensonge"
+ },
+ "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
+ "type": "cinecast:MovieExtract",
+ "meta": {
+ "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34438/25530899-2-fre-FR/34438-Vous-dites-un-mensonge1_reference.jpg",
+ "created": "2012-04-05T12:11:33.9050491+02:00",
+ "creator": "Allociné"
+ }
+ }, {
+ "id": "cinecast:785191",
+ "begin": 4326000,
+ "end": 4426000,
+ "content": {
+ "data": "Audition de Mohamed Sifaoui 1"
+ },
+ "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
+ "type": "cinecast:MovieExtract",
+ "meta": {
+ "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34439/25530949-2-fre-FR/34439-Audition-de-Mohamed-Sifaoui-11_reference.jpg",
+ "created": "2012-04-05T12:11:33.9050491+02:00",
+ "creator": "Allociné"
+ }
+ }, {
+ "id": "cinecast:785194",
+ "begin": 4426000,
+ "end": 4602000,
+ "content": {
+ "data": "Audition de Mohamed Sifaoui 2"
+ },
+ "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
+ "type": "cinecast:MovieExtract",
+ "meta": {
+ "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34440/25530994-2-fre-FR/34440-Audition-de-Mohamed-Sifaoui-21_reference.jpg",
+ "created": "2012-04-05T12:11:33.9050491+02:00",
+ "creator": "Allociné"
+ }
+ }, {
+ "id": "cinecast:785198",
+ "begin": 4602000,
+ "end": 4779000,
+ "content": {
+ "data": "Audition de Mohamed Sifaoui 3"
+ },
+ "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
+ "type": "cinecast:MovieExtract",
+ "meta": {
+ "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34441/25531046-2-fre-FR/34441-Audition-de-Mohamed-Sifaoui-31_reference.jpg",
+ "created": "2012-04-05T12:11:33.9050491+02:00",
+ "creator": "Allociné"
+ }
+ }, {
+ "id": "cinecast:738533",
+ "begin": 4779000,
+ "end": 4943000,
+ "content": {
+ "data": "Les caricatures de Mahomet en question"
+ },
+ "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
+ "type": "cinecast:MovieExtract",
+ "meta": {
+ "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/30194/24841560-2-fre-FR/30194-Les-caricatures-de-Mahomet-en-question1_reference.jpg",
+ "created": "2012-04-05T12:11:33.9050491+02:00",
+ "creator": "Allociné"
+ }
+ }, {
+ "id": "cinecast:785308",
+ "begin": 4943000,
+ "end": 5003000,
+ "content": {
+ "data": "La République se donne raison à elle-même"
+ },
+ "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
+ "type": "cinecast:MovieExtract",
+ "meta": {
+ "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34447/25532130-3-fre-FR/34447-La-Republique-se-donne-raison-a-elle-meme1_reference.jpg",
+ "created": "2012-04-05T12:11:33.9050491+02:00",
+ "creator": "Allociné"
+ }
+ }, {
+ "id": "cinecast:785310",
+ "begin": 5003000,
+ "end": 5076000,
+ "content": {
+ "data": "Il est mort pour la France mon grand-père"
+ },
+ "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
+ "type": "cinecast:MovieExtract",
+ "meta": {
+ "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34448/25532168-2-fre-FR/34448-Il-est-mort-pour-la-France-mon-grand-pere1_reference.jpg",
+ "created": "2012-04-05T12:11:33.9050491+02:00",
+ "creator": "Allociné"
+ }
+ }, {
+ "id": "cinecast:785315",
+ "begin": 5076000,
+ "end": 5217000,
+ "content": {
+ "data": "Plaidoirie des avocats des plaignants"
+ },
+ "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
+ "type": "cinecast:MovieExtract",
+ "meta": {
+ "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34450/25532297-2-fre-FR/34450-Plaidoirie-des-avocats-des-plaignants1_reference.jpg",
+ "created": "2012-04-05T12:11:33.9050491+02:00",
+ "creator": "Allociné"
+ }
+ }, {
+ "id": "cinecast:785320",
+ "begin": 5217000,
+ "end": 5279000,
+ "content": {
+ "data": "Caroline Fourest contre Francis Szpiner"
+ },
+ "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
+ "type": "cinecast:MovieExtract",
+ "meta": {
+ "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34451/25532383-2-fre-FR/34451-Caroline-Fourest-contre-Francis-Szpiner1_reference.jpg",
+ "created": "2012-04-05T12:11:33.9050491+02:00",
+ "creator": "Allociné"
+ }
+ }, {
+ "id": "cinecast:785324",
+ "begin": 5279000,
+ "end": 5336000,
+ "content": {
+ "data": "Plaidoirie de Richard Malka"
+ },
+ "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
+ "type": "cinecast:MovieExtract",
+ "meta": {
+ "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34452/25532445-3-fre-FR/34452-Plaidoirie-de-Richard-Malka1_reference.jpg",
+ "created": "2012-04-05T12:11:33.9050491+02:00",
+ "creator": "Allociné"
+ }
+ }, {
+ "id": "cinecast:785330",
+ "begin": 5336000,
+ "end": 5494000,
+ "content": {
+ "data": "Vous voulez une égalité de traitement ?"
+ },
+ "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
+ "type": "cinecast:MovieExtract",
+ "meta": {
+ "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34454/25532565-3-fre-FR/34454-Vous-voulez-une-egalite-de-traitement1_reference.jpg",
+ "created": "2012-04-05T12:11:33.9050491+02:00",
+ "creator": "Allociné"
+ }
+ }, {
+ "id": "cinecast:738550",
+ "begin": 5494000,
+ "end": 5564000,
+ "content": {
+ "data": "L\u0027Islam : un sort particulier"
+ },
+ "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
+ "type": "cinecast:MovieExtract",
+ "meta": {
+ "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/30199/24841820-2-fre-FR/30199-L-Islam-un-sort-particulier1_reference.jpg",
+ "created": "2012-04-05T12:11:33.9060257+02:00",
+ "creator": "Allociné"
+ }
+ }, {
+ "id": "cinecast:785336",
+ "begin": 5564000,
+ "end": 5633000,
+ "content": {
+ "data": "Un grand moment de théâtre"
+ },
+ "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
+ "type": "cinecast:MovieExtract",
+ "meta": {
+ "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34455/25532651-3-fre-FR/34455-Un-grand-moment-de-theatre1_reference.jpg",
+ "created": "2012-04-05T12:11:33.9060257+02:00",
+ "creator": "Allociné"
+ }
+ }, {
+ "id": "cinecast:785339",
+ "begin": 5633000,
+ "end": 5750000,
+ "content": {
+ "data": "Plaidoirie de Georges Kiejman"
+ },
+ "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
+ "type": "cinecast:MovieExtract",
+ "meta": {
+ "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34456/25532692-3-fre-FR/34456-Plaidoirie-de-Georges-Kiejman1_reference.jpg",
+ "created": "2012-04-05T12:11:33.9060257+02:00",
+ "creator": "Allociné"
+ }
+ }, {
+ "id": "cinecast:785343",
+ "begin": 5750000,
+ "end": 5877000,
+ "content": {
+ "data": "Alors parle et meurs"
+ },
+ "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
+ "type": "cinecast:MovieExtract",
+ "meta": {
+ "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34457/25532767-3-fre-FR/34457-Alors-parle-et-meurs1_reference.jpg",
+ "created": "2012-04-05T12:11:33.9060257+02:00",
+ "creator": "Allociné"
+ }
+ }, {
+ "id": "cinecast:738544",
+ "begin": 5877000,
+ "end": 6020000,
+ "content": {
+ "data": "Spoiler - Le jour du verdict"
+ },
+ "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
+ "type": "cinecast:MovieExtract",
+ "meta": {
+ "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/30197/24841727-2-fre-FR/30197-Spoiler-Le-jour-du-verdict1_reference.jpg",
+ "created": "2012-04-05T12:11:33.9060257+02:00",
+ "creator": "Allociné"
+ }
+ }, {
+ "id": "cinecast:785348",
+ "begin": 6020000,
+ "end": 6137000,
+ "content": {
+ "data": "Générique de fin"
+ },
+ "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
+ "type": "cinecast:MovieExtract",
+ "meta": {
+ "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34458/25532820-2-fre-FR/34458-Generique-de-fin1_reference.jpg",
+ "created": "2012-04-05T12:11:33.9060257+02:00",
+ "creator": "Allociné"
+ }
+ }, {
+ "id": "ac-145",
+ "begin": 5813,
+ "end": 5813,
+ "content": {
+ "data": "Antiocho mittat est Apollonius non coepit contingere navis est amet consensit cellula rei exultant deo adoptavit cum."
+ },
+ "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
+ "tags": [],
+ "type": "cinecast:UserAnnotation",
+ "meta": {
+ "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34457/25532767-3-fre-FR/34457-Alors-parle-et-meurs1_reference.jpg",
+ "extract": "785343",
+ "status": "active",
+ "creator_name": "login",
+ "url": "/Annotation/145",
+ "created": "2012-04-02T12:07:44.0570000",
+ "creator": "ac-285"
+ }
+ }, {
+ "id": "ac-154",
+ "begin": 3833,
+ "end": 3833,
+ "content": {
+ "data": "Curro vicina profundum item filiam sunt forma non solutionem invenerunt."
+ },
+ "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
+ "tags": [],
+ "type": "cinecast:UserAnnotation",
+ "meta": {
+ "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34432/25530601-4-fre-FR/34432-Les-nouveaux-arrivants1_reference.jpg",
+ "extract": "785166",
+ "status": "active",
+ "creator_name": "Cyril Rabaux",
+ "url": "/Annotation/154",
+ "created": "2012-04-02T12:07:44.1300000",
+ "creator": "ac-108"
+ }
+ }, {
+ "id": "ac-160",
+ "begin": 1870,
+ "end": 1870,
+ "content": {
+ "data": "Tunc agitans diam nostra paupercula possunt in fuerat se sed eu fugiens laudo in modo cavendum es."
+ },
+ "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
+ "tags": [],
+ "type": "cinecast:UserAnnotation",
+ "meta": {
+ "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34412/25529728-3-fre-FR/34412-Audition-de-Philippe-Val1_reference.jpg",
+ "extract": "785129",
+ "status": "active",
+ "creator_name": "Cyril Rabaux",
+ "url": "/Annotation/160",
+ "created": "2012-04-02T12:07:44.1800000",
+ "creator": "ac-108"
+ }
+ }, {
+ "id": "ac-162",
+ "begin": 2812,
+ "end": 2812,
+ "content": {
+ "data": "Reflexionis Respondens sed quod eam in rei finibus veteres hoc."
+ },
+ "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
+ "tags": [],
+ "type": "cinecast:UserAnnotation",
+ "meta": {
+ "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34421/25530158-3-fre-FR/34421-Une-autre-voix-musulmane1_reference.jpg",
+ "extract": "785149",
+ "status": "active",
+ "creator_name": "Cyril Rabaux",
+ "url": "/Annotation/162",
+ "created": "2012-04-02T12:07:44.1970000",
+ "creator": "ac-108"
+ }
+ }, {
+ "id": "ac-184",
+ "begin": 3694,
+ "end": 3694,
+ "content": {
+ "data": "Item filiam sunt amore meam celebrabantur Apollonius eius non potentiae Apollonium sit Mariae Bone de tuae infami cum magna."
+ },
+ "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
+ "tags": [],
+ "type": "cinecast:UserAnnotation",
+ "meta": {
+ "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/18267/20232735-8-fre-FR/18267-L-agonie-de-la-liberte1_reference.jpg",
+ "extract": "289942",
+ "status": "active",
+ "creator_name": "Cyril Rabaux",
+ "url": "/Annotation/184",
+ "created": "2012-04-02T12:07:44.4000000",
+ "creator": "ac-108"
+ }
+ }, {
+ "id": "ac-215",
+ "begin": 3694,
+ "end": 3694,
+ "content": {
+ "data": "Ipsam ei Taliarchum in deinde cupis ei auri in lucem genero nomine Hesterna."
+ },
+ "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
+ "tags": [],
+ "type": "cinecast:UserAnnotation",
+ "meta": {
+ "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/18267/20232735-8-fre-FR/18267-L-agonie-de-la-liberte1_reference.jpg",
+ "extract": "289942",
+ "status": "active",
+ "creator_name": "login",
+ "url": "/Annotation/215",
+ "created": "2012-04-02T12:07:44.6600000",
+ "creator": "ac-285"
+ }
+ }, {
+ "id": "ac-220",
+ "begin": 1601,
+ "end": 1601,
+ "content": {
+ "data": "Scelerata nunc eius est amet coram regis iam insulam quod ait est amet constanter approximavit te finis puellam materia eam eos. Volentes mihi Tyrum ad nomine."
+ },
+ "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
+ "tags": [],
+ "type": "cinecast:UserAnnotation",
+ "meta": {
+ "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/30193/24841522-3-fre-FR/30193-Interview-a-la-radio-avant-le-proces1_reference.jpg",
+ "extract": "738531",
+ "status": "active",
+ "creator_name": "Cyril Rabaux",
+ "url": "/Annotation/220",
+ "created": "2012-04-02T12:07:44.7000000",
+ "creator": "ac-108"
+ }
+ }, {
+ "id": "ac-240",
+ "begin": 1024,
+ "end": 1024,
+ "content": {
+ "data": "Ipsam ei Taliarchum in deinde cupis ei auri in lucem genero nomine Hesterna."
+ },
+ "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
+ "tags": [],
+ "type": "cinecast:UserAnnotation",
+ "meta": {
+ "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/13181/19766309-7-fre-FR/13181-Ce-proces-est-une-insulte-raciste1_reference.jpg",
+ "extract": "246119",
+ "status": "active",
+ "creator_name": "Cyril Rabaux",
+ "url": "/Annotation/240",
+ "created": "2012-04-02T12:08:51.6030000",
+ "creator": "ac-108"
+ }
+ }, {
+ "id": "ac-248",
+ "begin": 1870,
+ "end": 1870,
+ "content": {
+ "data": "Scelerata nunc eius est amet coram regis iam insulam quod ait est amet constanter approximavit te finis puellam materia eam eos. Volentes mihi Tyrum ad nomine."
+ },
+ "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
+ "tags": [],
+ "type": "cinecast:UserAnnotation",
+ "meta": {
+ "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34412/25529728-3-fre-FR/34412-Audition-de-Philippe-Val1_reference.jpg",
+ "extract": "785129",
+ "status": "active",
+ "creator_name": "Cyril Rabaux",
+ "url": "/Annotation/248",
+ "created": "2012-04-02T12:08:51.6700000",
+ "creator": "ac-108"
+ }
+ }, {
+ "id": "ac-249",
+ "begin": 3925,
+ "end": 3925,
+ "content": {
+ "data": "Vobis si quod tamen adnuente rediens eam in rei exultant deo adoptavit cum magna Dianam."
+ },
+ "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
+ "tags": [],
+ "type": "cinecast:UserAnnotation",
+ "meta": {
+ "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/14525/19878658-7-fre-FR/14525-La-liberte-de-cracher1_reference.jpg",
+ "extract": "258487",
+ "status": "active",
+ "creator_name": "login",
+ "url": "/Annotation/249",
+ "created": "2012-04-02T12:08:51.6800000",
+ "creator": "ac-285"
+ }
+ }, {
+ "id": "ac-263",
+ "begin": 5415,
+ "end": 5415,
+ "content": {
+ "data": "Filiae Hellenicus ut diem obiecti aliud ait est se est se sed."
+ },
+ "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
+ "tags": [],
+ "type": "cinecast:UserAnnotation",
+ "meta": {
+ "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34454/25532565-3-fre-FR/34454-Vous-voulez-une-egalite-de-traitement1_reference.jpg",
+ "extract": "785330",
+ "status": "active",
+ "creator_name": "login",
+ "url": "/Annotation/263",
+ "created": "2012-04-02T12:08:51.7970000",
+ "creator": "ac-285"
+ }
+ }, {
+ "id": "ac-281",
+ "begin": 2932,
+ "end": 2932,
+ "content": {
+ "data": "Dabo potest contremiscunt pater ostendit sibi afflictione magnam clamantem in deinde cepit roseo."
+ },
+ "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
+ "tags": [],
+ "type": "cinecast:UserAnnotation",
+ "meta": {
+ "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/30195/24841622-2-fre-FR/30195-La-salle-des-pas-perdus1_reference.jpg",
+ "extract": "738538",
+ "status": "active",
+ "creator_name": "login",
+ "url": "/Annotation/281",
+ "created": "2012-04-02T12:08:51.9670000",
+ "creator": "ac-285"
+ }
+ }, {
+ "id": "ac-291",
+ "begin": 1500,
+ "end": 1500,
+ "content": {
+ "data": "Ipsum ait regem Ardalio nos in lucem."
+ },
+ "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
+ "tags": [],
+ "type": "cinecast:UserAnnotation",
+ "meta": {
+ "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34409/25529562-3-fre-FR/34409-JT-13h1_reference.jpg",
+ "extract": "785118",
+ "status": "active",
+ "creator_name": "login",
+ "url": "/Annotation/291",
+ "created": "2012-04-02T12:08:52.0500000",
+ "creator": "ac-285"
+ }
+ }, {
+ "id": "ac-293",
+ "begin": 2041,
+ "end": 2041,
+ "content": {
+ "data": "Curro vicina profundum item filiam sunt forma non solutionem invenerunt."
+ },
+ "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
+ "tags": [],
+ "type": "cinecast:UserAnnotation",
+ "meta": {
+ "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34414/25529836-4-fre-FR/34414-Audition-de-Philipe-Val-2eme-partie1_reference.jpg",
+ "extract": "785134",
+ "status": "active",
+ "creator_name": "login",
+ "url": "/Annotation/293",
+ "created": "2012-04-02T12:08:52.0670000",
+ "creator": "ac-285"
+ }
+ }, {
+ "id": "ac-294",
+ "begin": 466,
+ "end": 466,
+ "content": {
+ "data": "Iusto opes mihi esse more filiam, deponiturque itaque cum autem Apolloni ex hic."
+ },
+ "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
+ "tags": [],
+ "type": "cinecast:UserAnnotation",
+ "meta": {
+ "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34395/25528839-2-fre-FR/34395-Mosquee-de-Paris-contre-Charlie-Hebdo1_reference.jpg",
+ "extract": "785082",
+ "status": "active",
+ "creator_name": "Cyril Rabaux",
+ "url": "/Annotation/294",
+ "created": "2012-04-02T12:08:52.0770000",
+ "creator": "ac-108"
+ }
+ }, {
+ "id": "ac-308",
+ "begin": 3160,
+ "end": 3160,
+ "content": {
+ "data": "Filiae Hellenicus ut diem obiecti aliud ait est se est se sed."
+ },
+ "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
+ "tags": ["#deferunt", "#mihi"],
+ "type": "cinecast:UserAnnotation",
+ "meta": {
+ "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34424/25530311-2-fre-FR/34424-Un-debat-juridique1_reference.jpg",
+ "extract": "785156",
+ "status": "active",
+ "creator_name": "Cyril Rabaux",
+ "url": "/Annotation/308",
+ "created": "2012-04-02T12:08:52.1930000",
+ "creator": "ac-108"
+ }
+ }, {
+ "id": "ac-348",
+ "begin": 1103,
+ "end": 1103,
+ "content": {
+ "data": "Dabo potest contremiscunt pater ostendit sibi afflictione magnam clamantem in deinde cepit roseo."
+ },
+ "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
+ "tags": [],
+ "type": "cinecast:UserAnnotation",
+ "meta": {
+ "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34403/25529269-2-fre-FR/34403-Rire-de-tout1_reference.jpg",
+ "extract": "785106",
+ "status": "active",
+ "creator_name": "Cyril Rabaux",
+ "url": "/Annotation/348",
+ "created": "2012-04-02T12:09:35.1400000",
+ "creator": "ac-108"
+ }
+ }, {
+ "id": "ac-369",
+ "begin": 466,
+ "end": 466,
+ "content": {
+ "data": "Quem est amet constanter determinatio vestes."
+ },
+ "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
+ "tags": [],
+ "type": "cinecast:UserAnnotation",
+ "meta": {
+ "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34395/25528839-2-fre-FR/34395-Mosquee-de-Paris-contre-Charlie-Hebdo1_reference.jpg",
+ "extract": "785082",
+ "status": "active",
+ "creator_name": "login",
+ "url": "/Annotation/369",
+ "created": "2012-04-02T12:09:36.7330000",
+ "creator": "ac-285"
+ }
+ }, {
+ "id": "ac-375",
+ "begin": 5248,
+ "end": 5248,
+ "content": {
+ "data": "Reflexionis Respondens sed quod eam in rei finibus veteres hoc."
+ },
+ "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
+ "tags": [],
+ "type": "cinecast:UserAnnotation",
+ "meta": {
+ "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34451/25532383-2-fre-FR/34451-Caroline-Fourest-contre-Francis-Szpiner1_reference.jpg",
+ "extract": "785320",
+ "status": "active",
+ "creator_name": "login",
+ "url": "/Annotation/375",
+ "created": "2012-04-02T12:09:36.9500000",
+ "creator": "ac-285"
+ }
+ }, {
+ "id": "ac-388",
+ "begin": 2812,
+ "end": 2812,
+ "content": {
+ "data": "Item filiam sunt amore meam celebrabantur Apollonius eius non potentiae Apollonium sit Mariae Bone de tuae infami cum magna."
+ },
+ "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
+ "tags": [],
+ "type": "cinecast:UserAnnotation",
+ "meta": {
+ "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34421/25530158-3-fre-FR/34421-Une-autre-voix-musulmane1_reference.jpg",
+ "extract": "785149",
+ "status": "active",
+ "creator_name": "Cyril Rabaux",
+ "url": "/Annotation/388",
+ "created": "2012-04-02T12:09:37.5600000",
+ "creator": "ac-108"
+ }
+ }, {
+ "id": "ac-390",
+ "begin": 1713,
+ "end": 1713,
+ "content": {
+ "data": "Scelerata nunc eius est amet coram regis iam insulam quod ait est amet constanter approximavit te finis puellam materia eam eos. Volentes mihi Tyrum ad nomine."
+ },
+ "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
+ "tags": [],
+ "type": "cinecast:UserAnnotation",
+ "meta": {
+ "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34410/25529650-3-fre-FR/34410-Le-jour-du-proces1_reference.jpg",
+ "extract": "785125",
+ "status": "active",
+ "creator_name": "Cyril Rabaux",
+ "url": "/Annotation/390",
+ "created": "2012-04-02T12:09:37.6330000",
+ "creator": "ac-108"
+ }
+ }, {
+ "id": "ac-405",
+ "begin": 1308,
+ "end": 1308,
+ "content": {
+ "data": "Cyrenaeorum tertia navigavit volente in fuerat accidens suos ut libertatem adhuc. Priapum avarus videret quo sanctis venias in fuerat, solum ad te in deinde cupis auras sed."
+ },
+ "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
+ "tags": ["#puer", "#illum"],
+ "type": "cinecast:UserAnnotation",
+ "meta": {
+ "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/18268/20232789-7-fre-FR/18268-Exercer-son-droit1_reference.jpg",
+ "extract": "289950",
+ "status": "active",
+ "creator_name": "login",
+ "url": "/Annotation/405",
+ "created": "2012-04-02T12:09:38.2730000",
+ "creator": "ac-285"
+ }
+ }, {
+ "id": "ac-416",
+ "begin": 4861,
+ "end": 4861,
+ "content": {
+ "data": "Filiae Hellenicus ut diem obiecti aliud ait est se est se sed."
+ },
+ "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
+ "tags": [],
+ "type": "cinecast:UserAnnotation",
+ "meta": {
+ "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/30194/24841560-2-fre-FR/30194-Les-caricatures-de-Mahomet-en-question1_reference.jpg",
+ "extract": "738533",
+ "status": "active",
+ "creator_name": "Cyril Rabaux",
+ "url": "/Annotation/416",
+ "created": "2012-04-02T12:09:38.7330000",
+ "creator": "ac-108"
+ }
+ }, {
+ "id": "ac-434",
+ "begin": 5813,
+ "end": 5813,
+ "content": {
+ "data": "Vobis si quod tamen adnuente rediens eam in rei exultant deo adoptavit cum magna Dianam."
+ },
+ "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
+ "tags": [],
+ "type": "cinecast:UserAnnotation",
+ "meta": {
+ "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34457/25532767-3-fre-FR/34457-Alors-parle-et-meurs1_reference.jpg",
+ "extract": "785343",
+ "status": "active",
+ "creator_name": "Cyril Rabaux",
+ "url": "/Annotation/434",
+ "created": "2012-04-02T12:09:58.8570000",
+ "creator": "ac-108"
+ }
+ }, {
+ "id": "ac-435",
+ "begin": 2187,
+ "end": 2187,
+ "content": {
+ "data": "Audito claudi in fuerat accidens suos alloquitur hanc cuius iuvenis eum est in fuerat construeret in modo."
+ },
+ "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
+ "tags": [],
+ "type": "cinecast:UserAnnotation",
+ "meta": {
+ "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34416/25529912-3-fre-FR/34416-L-arrivee-du-fax1_reference.jpg",
+ "extract": "785138",
+ "status": "active",
+ "creator_name": "login",
+ "url": "/Annotation/435",
+ "created": "2012-04-02T12:09:58.8670000",
+ "creator": "ac-285"
+ }
+ }, {
+ "id": "ac-441",
+ "begin": 3586,
+ "end": 3586,
+ "content": {
+ "data": "Ipsam ei Taliarchum in deinde cupis ei auri in lucem genero nomine Hesterna."
+ },
+ "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
+ "tags": [],
+ "type": "cinecast:UserAnnotation",
+ "meta": {
+ "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34429/25530496-2-fre-FR/34429-Ils-m-ont-torture-parce-que-j-etais-musulman1_reference.jpg",
+ "extract": "785163",
+ "status": "active",
+ "creator_name": "login",
+ "url": "/Annotation/441",
+ "created": "2012-04-02T12:09:58.9230000",
+ "creator": "ac-285"
+ }
+ }, {
+ "id": "ac-442",
+ "begin": 4184,
+ "end": 4184,
+ "content": {
+ "data": "Mansione sed esse haec in modo."
+ },
+ "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
+ "tags": [],
+ "type": "cinecast:UserAnnotation",
+ "meta": {
+ "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34436/25530817-3-fre-FR/34436-Audition-de-Francois-Bayrou1_reference.jpg",
+ "extract": "785183",
+ "status": "active",
+ "creator_name": "Cyril Rabaux",
+ "url": "/Annotation/442",
+ "created": "2012-04-02T12:09:58.9400000",
+ "creator": "ac-108"
+ }
+ }, {
+ "id": "ac-446",
+ "begin": 5415,
+ "end": 5415,
+ "content": {
+ "data": "Quem est amet constanter determinatio vestes."
+ },
+ "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
+ "tags": [],
+ "type": "cinecast:UserAnnotation",
+ "meta": {
+ "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34454/25532565-3-fre-FR/34454-Vous-voulez-une-egalite-de-traitement1_reference.jpg",
+ "extract": "785330",
+ "status": "active",
+ "creator_name": "Cyril Rabaux",
+ "url": "/Annotation/446",
+ "created": "2012-04-02T12:09:58.9730000",
+ "creator": "ac-108"
+ }
+ }, {
+ "id": "ac-450",
+ "begin": 4376,
+ "end": 4376,
+ "content": {
+ "data": "Sui coniungens in rei exultant deo adiuves finem imponunt hoc ait regem Ardalio nos filiae."
+ },
+ "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
+ "tags": [],
+ "type": "cinecast:UserAnnotation",
+ "meta": {
+ "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34439/25530949-2-fre-FR/34439-Audition-de-Mohamed-Sifaoui-11_reference.jpg",
+ "extract": "785191",
+ "status": "active",
+ "creator_name": "Cyril Rabaux",
+ "url": "/Annotation/450",
+ "created": "2012-04-02T12:09:59.0170000",
+ "creator": "ac-108"
+ }
+ }, {
+ "id": "ac-473",
+ "begin": 2812,
+ "end": 2812,
+ "content": {
+ "data": "Iusto opes mihi esse more filiam, deponiturque itaque cum autem Apolloni ex hic."
+ },
+ "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
+ "tags": [],
+ "type": "cinecast:UserAnnotation",
+ "meta": {
+ "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34421/25530158-3-fre-FR/34421-Une-autre-voix-musulmane1_reference.jpg",
+ "extract": "785149",
+ "status": "active",
+ "creator_name": "login",
+ "url": "/Annotation/473",
+ "created": "2012-04-02T12:09:59.2830000",
+ "creator": "ac-285"
+ }
+ }, {
+ "id": "ac-477",
+ "begin": 5529,
+ "end": 5529,
+ "content": {
+ "data": "Iuvenem ut sua in fuerat construeret cena reges undis effugere quod ait regem adventu nihil."
+ },
+ "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
+ "tags": [],
+ "type": "cinecast:UserAnnotation",
+ "meta": {
+ "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/30199/24841820-2-fre-FR/30199-L-Islam-un-sort-particulier1_reference.jpg",
+ "extract": "738550",
+ "status": "active",
+ "creator_name": "login",
+ "url": "/Annotation/477",
+ "created": "2012-04-02T12:09:59.3330000",
+ "creator": "ac-285"
+ }
+ }, {
+ "id": "ac-499",
+ "begin": 4184,
+ "end": 4184,
+ "content": {
+ "data": "Innumera patris super color est in rei civibus corporis optime Verena amica ripam fluxa in lucem exempli paupers."
+ },
+ "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
+ "tags": ["#rex!", "#ea", "#dolores"],
+ "type": "cinecast:UserAnnotation",
+ "meta": {
+ "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34436/25530817-3-fre-FR/34436-Audition-de-Francois-Bayrou1_reference.jpg",
+ "extract": "785183",
+ "status": "active",
+ "creator_name": "login",
+ "url": "/Annotation/499",
+ "created": "2012-04-02T12:09:59.5670000",
+ "creator": "ac-285"
+ }
+ }, {
+ "id": "ac-500",
+ "begin": 2712,
+ "end": 2712,
+ "content": {
+ "data": "Filiae Hellenicus ut diem obiecti aliud ait est se est se sed."
+ },
+ "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
+ "tags": [],
+ "type": "cinecast:UserAnnotation",
+ "meta": {
+ "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34420/25530120-3-fre-FR/34420-1er-retour1_reference.jpg",
+ "extract": "785147",
+ "status": "active",
+ "creator_name": "Cyril Rabaux",
+ "url": "/Annotation/500",
+ "created": "2012-04-02T12:09:59.5830000",
+ "creator": "ac-108"
+ }
+ }, {
+ "id": "ac-507",
+ "begin": 4690,
+ "end": 4690,
+ "content": {
+ "data": "Curro vicina profundum item filiam sunt forma non solutionem invenerunt."
+ },
+ "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
+ "tags": [],
+ "type": "cinecast:UserAnnotation",
+ "meta": {
+ "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34441/25531046-2-fre-FR/34441-Audition-de-Mohamed-Sifaoui-31_reference.jpg",
+ "extract": "785198",
+ "status": "active",
+ "creator_name": "login",
+ "url": "/Annotation/507",
+ "created": "2012-04-02T12:10:00.4330000",
+ "creator": "ac-285"
+ }
+ }, {
+ "id": "ac-510",
+ "begin": 1024,
+ "end": 1024,
+ "content": {
+ "data": "Famuli curvus in lucem concitaverunt in."
+ },
+ "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
+ "tags": [],
+ "type": "cinecast:UserAnnotation",
+ "meta": {
+ "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/13181/19766309-7-fre-FR/13181-Ce-proces-est-une-insulte-raciste1_reference.jpg",
+ "extract": "246119",
+ "status": "active",
+ "creator_name": "Cyril Rabaux",
+ "url": "/Annotation/510",
+ "created": "2012-04-02T12:10:01.8330000",
+ "creator": "ac-108"
+ }
+ }, {
+ "id": "ac-511",
+ "begin": 4028,
+ "end": 4028,
+ "content": {
+ "data": "Cyrenaeorum tertia navigavit volente in fuerat accidens suos ut libertatem adhuc. Priapum avarus videret quo sanctis venias in fuerat, solum ad te in deinde cupis auras sed."
+ },
+ "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
+ "tags": ["#servitute"],
+ "type": "cinecast:UserAnnotation",
+ "meta": {
+ "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34434/25530709-2-fre-FR/34434-L-arrivee-de-Claude-Lanzmann1_reference.jpg",
+ "extract": "785171",
+ "status": "active",
+ "creator_name": "login",
+ "url": "/Annotation/511",
+ "created": "2012-04-02T12:10:01.8500000",
+ "creator": "ac-285"
+ }
+ }, {
+ "id": "ac-520",
+ "begin": 1601,
+ "end": 1601,
+ "content": {
+ "data": "Antiocho mittat est Apollonius non coepit contingere navis est amet consensit cellula rei exultant deo adoptavit cum."
+ },
+ "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
+ "tags": [],
+ "type": "cinecast:UserAnnotation",
+ "meta": {
+ "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/30193/24841522-3-fre-FR/30193-Interview-a-la-radio-avant-le-proces1_reference.jpg",
+ "extract": "738531",
+ "status": "active",
+ "creator_name": "Cyril Rabaux",
+ "url": "/Annotation/520",
+ "created": "2012-04-02T12:10:01.9830000",
+ "creator": "ac-108"
+ }
+ }, {
+ "id": "ac-542",
+ "begin": 2732978,
+ "end": 2732978,
+ "content": {
+ "data": "123354 rdan"
+ },
+ "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
+ "tags": [],
+ "type": "cinecast:UserAnnotation",
+ "meta": {
+ "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34421/25530158-3-fre-FR/34421-Une-autre-voix-musulmane1_reference.jpg",
+ "extract": "785149",
+ "status": "active",
+ "creator_name": "login",
+ "url": "/Annotation/542",
+ "created": "2012-04-03T12:45:23.9770000",
+ "creator": "ac-285"
+ }
+ }, {
+ "id": "ac-543",
+ "begin": 2732978,
+ "end": 2732978,
+ "content": {
+ "data": "123354 rdan"
+ },
+ "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
+ "tags": [],
+ "type": "cinecast:UserAnnotation",
+ "meta": {
+ "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34421/25530158-3-fre-FR/34421-Une-autre-voix-musulmane1_reference.jpg",
+ "extract": "785149",
+ "status": "active",
+ "creator_name": "login",
+ "url": "/Annotation/543",
+ "created": "2012-04-03T12:45:28.6170000",
+ "creator": "ac-285"
+ }
+ }, {
+ "id": "ac-549",
+ "begin": 942869,
+ "end": 942869,
+ "content": {
+ "data": "c\u0027est vraiment très intéressant hein #Racisme #Manifestation #Justice sociale"
+ },
+ "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
+ "tags": ["#racisme", "#manifestation", "#justice", "manifestation", "racisme", "justice sociale"],
+ "type": "cinecast:UserAnnotation",
+ "meta": {
+ "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34400/25529146-3-fre-FR/34400-Le-temoin-mystere1_reference.jpg",
+ "extract": "785101",
+ "status": "active",
+ "creator_name": "Partner CineCast",
+ "url": "/Annotation/549",
+ "created": "2012-04-04T09:43:51.6370000",
+ "creator": "ac-519"
+ }
+ }, {
+ "id": "ac-550",
+ "begin": 1353783,
+ "end": 1353783,
+ "content": {
+ "data": "test"
+ },
+ "media": "medias:c-est-dur-d-etre-aime-par-des-cons",
+ "tags": [],
+ "type": "cinecast:UserAnnotation",
+ "meta": {
+ "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/c-est-dur-d-etre-aime-par-des-cons/34407/25529451-3-fre-FR/34407-Les-enjeux1_reference.jpg",
+ "extract": "785113",
+ "status": "active",
+ "creator_name": "Partner CineCast",
+ "url": "/Annotation/550",
+ "created": "2012-04-04T10:22:32.9370000",
+ "creator": "ac-519"
+ }
+ }
+ ],
+ "meta": {
+ "id": "medias:c-est-dur-d-etre-aime-par-des-cons",
+ "created": "2012-04-05T12:11:33.9079789+02:00",
+ "creator": "AlloCiné"
+ },
+ "format": "http://advene.org/ns/cinelab/",
+ "imports": [
+ {
+ "id": "cinecast",
+ "url": "http://cinecast.fr/festival/configuration.json"
+ }, {
+ "id": "medias",
+ "url": "http://cinecast.fr/festival/medias.json"
+ }
+ ]
+}
\ No newline at end of file
--- a/test/integration/allocine_dossier_independant/json_examples/player.json Tue Apr 03 20:30:12 2012 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,84 +0,0 @@
-{
- "medias": [
- {
- "id": "cinecast:Bamako",
- "url": "rtmpe://cp41629.edgefcs.net/ondemand/mp4:ondemand/nmedia/cinecast/Bamako1500.m4v",
- "meta": {
- "mediaid": 1,
- "actors": ["Aissa Maiga", "Tiecoura Traore", "Maimouna Helene Diarra"],
- "directors": ["Abderrahmane Sissako"],
- "nationalities": ["FR"],
- "duration": 7080000,
- "productionYear": "2006",
- "synopsis": null,
- "thumbnail": "http://www.vodkaster.com/var/vodkaster/storage/images/films/bamako/42851-1-fre-FR/Bamako3_reference.jpg",
- "title": "Bamako",
- "version": "VOST"
- }
- }
- ],
- "annotation_types": [
- {
- "id": "cinecast:UserAnnotation",
- "meta": {
- "description": "Annotation made during the Cinecast Festival."
- }
- },
- {
- "id": "cinecast:MovieExtract",
- "meta": {
- "description": "Extract from a Movie."
- }
- }
- ],
- "annotations": [ {
- "id": "ac:3638",
- "begin": 187000,
- "end": 187000,
- "timecode": 0,
- "content": {
- "data": "test #vodkaster #allocine #universcine"
- },
- "media": "cinecast:Bamako",
- "tags": ["#vodkaster", "#allocine", "#universcine"],
- "type": "cinecast:UserAnnotation",
- "meta": {
- "mediaid": 1,
- "thumbnail": "/users/02/7/7/4/Z20110103142031450307477/img/0tyw3myh.cce.jpg",
- "extract": "789849",
- "status": "active",
- "timestamp": 12995,
- "created": "2012-03-16T11:06:47.3170000",
- "creator": "ac:495",
- "creator_name": "Pierre",
- "url": "http:\/\/www.allocine.com/mon_annotation"
- }
- }, {
- "id": "cinecast:789914",
- "type": "cinecast:MovieExtract",
- "media": "cinecast:Bamako",
- "meta": {
- "thumbnail": "http:\/\/www.vodkaster.com\/var\/vodkaster\/storage\/images\/films\/bamako\/34979\/25593951-2-fre-FR\/34979-Colonialisme-latent1_reference.jpg",
- "creator": "Vodkaster",
- "created": "1970-01-01T01:00:00+01:00"
- },
- "begin": 3202000,
- "end": 3359000,
- "content": {
- "data": "Colonialisme latent"
- }
- }
- ],
- "meta": {
- "id": "cinecast:Bamako",
- "created": "2012-03-19T17:15:22.4921496Z",
- "creator": "AlloCine"
- },
- "format": "http://advene.org/ns/cinelab/",
- "imports": [
- {
- "id": "cinecast",
- "url": "http://cinecast.fr/festival/configuration.json"
- }
- ]
-}
\ No newline at end of file
--- a/test/integration/allocine_dossier_independant/json_examples/posted_annotations.json Tue Apr 03 20:30:12 2012 +0200
+++ b/test/integration/allocine_dossier_independant/json_examples/posted_annotations.json Fri Apr 06 16:49:32 2012 +0200
@@ -1,4 +1,11 @@
{
+ "format": "http://advene.org/ns/cinelab/",
+ "imports": [
+ {
+ "id": "cinecast",
+ "url": "http://festival.cinecast.fr/configuration.json"
+ }
+ ],
"annotations": [
{
"media": "cinecast:Bamako",
@@ -9,7 +16,7 @@
"content": {
"data": "Hello, #world !"
},
- "tags": ["#world"]
+ "tags": ["cinecast:world"]
}
],
"meta": {
--- a/test/integration/allocine_dossier_independant/polemic-allocine.htm Tue Apr 03 20:30:12 2012 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,99 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html dir="ltr" xml:lang="fr" xmlns="http://www.w3.org/1999/xhtml" lang="fr">
- <head>
- <title>Metadataplayer - Polemic tweet integration test</title>
- </head>
- <body style="background: #222222; color: #ff00ff;">
- <div style="width:650px;font-family: 'Trebuchet MS', 'Helvetica', 'Arial', 'Verdana', 'sans-serif';">
- <h1>MetaDataPlayer</h1>
- Integration test - ALLOCINE PLAYER
- </div>
- <!-- START Integration ###################################### -->
- <!-- SIMPLE PLAYER EXPERIMENTATION -->
- <script type="text/javascript" src="/metadataplayer/build/LdtPlayer-release.js" type="text/javascript"></script>
- <div id="video"></div>
- <div id="LdtPlayer" style="float: left;"></div>
- <div id="Sparkline"></div>
- <script type="text/javascript">
- var json_url = 'allocine_test/bamako.json';
-
- IriSP.user = {
- name : 'awesome_user_name',
- avatar : 'allocine_test/avatar.png'
- };
- IriSP.libdir = "js/libs/";
- IriSP.defaults.user = function() {
- return IriSP.user;
- };
- var config = {
- gui : {
- width : 610,
- height : 900,
- container : 'LdtPlayer',
- css : 'css/LdtPlayer.css',
- default_options : {
- metadata : {
- format : 'cinelab',
- src : json_url,
- type : 'json'
- },
- cinecast_version : true,
- width : 610
- },
- widgets : [{
- type : "AnnotationsListWidget",
- container : "MyListContainer",
- ajax_mode : false
- }, {
- type : "SparklineWidget",
- height : 50,
- lineColor: "#ffffff",
- fillColor: "#999999"
- }, {
- type : "SegmentsWidget",
- requires : [{
- type : "TooltipWidget",
- width : 180,
- height : 160,
- }]
- }, {
- type : "createAnnotationWidget",
- polemic_mode : false,
- remote_keywords : 'http://festival.cinecast.fr/configuration.jsonp?jsonp=?',
- random_keywords : 3,
- disable_share: true,
- api_endpoint_template : "coucou/{{id}}.json",
- api_method : 'POST'
- }, {
- type: "TraceWidget",
- // js_console : true,
- url: "http://traces.advene.org:5000/",
- requestmode: 'GET',
- syncmode: "sync"
- } ]
- },
- player : {
- type : 'allocine', // player type
- height : 300,
- width : 610,
- acPlayerUrl : "allocine_test/AcPlayer_v3.0_new.swf",
- autoPlay : "true",
- urlAcData : "allocine_test/data_cinecast_new.xml"
- },
- modules : [{
- type : "MediaFragment",
- metadata : {
- format : 'cinelab',
- src : json_url,
- type : 'json'
- }
- }]
-
- };
-
- IriSP.initPlayer(config, json_url);
-
- </script>
- <div id="MyListContainer" style="float: left; width: 400px;"></div>
- </body>
-</html>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/integration/allocine_dossier_independant/test-allocine.htm Fri Apr 06 16:49:32 2012 +0200
@@ -0,0 +1,102 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html dir="ltr" xml:lang="fr" xmlns="http://www.w3.org/1999/xhtml" lang="fr">
+ <head>
+ <title>Metadataplayer - Polemic tweet integration test</title>
+ </head>
+ <body style="background: #222222; color: #ff00ff;">
+ <div style="width:650px;">
+ <h1>MetaDataPlayer</h1>
+ Integration test - ALLOCINE PLAYER
+ </div>
+ <!-- START Integration ###################################### -->
+ <!-- SIMPLE PLAYER EXPERIMENTATION -->
+ <script type="text/javascript" src="js/LdtPlayer-release.js" type="text/javascript"></script>
+ <div id="video"></div>
+ <div id="LdtPlayer" style="float: left;"></div>
+ <div id="Sparkline"></div>
+ <script type="text/javascript">
+ var json_url = 'json_examples/movie32.json';
+
+ IriSP.user = {
+ name : 'awesome_user_name',
+ avatar : 'allocine_test/avatar.png'
+ };
+ IriSP.libFiles.defaultDir = "/metadataplayer/src/js/libs/";
+
+ var config = {
+ gui : {
+ width : 610,
+ height : 900,
+ container : 'LdtPlayer',
+ css : 'css/LdtPlayer.css',
+ default_options : {
+ width: 610,
+ cinecast_version: true,
+ metadata : {
+ format : 'cinelab',
+ src : json_url,
+ type : 'json'
+ }
+ },
+ widgets : [{
+ type : "AnnotationsListWidget",
+ container : "MyListContainer", // div dans lequel sera affiché "Annotations Liées"
+ ajax_mode : false, // nécessaire pour des raisons historiques
+ refresh_interval : 15 * 60 * 1000 // 15 minutes
+ }, {
+ type : "SparklineWidget",
+ height : 50,
+ lineColor: "#ffffff",
+ fillColor: "#999999"
+ }, {
+ type : "SegmentsWidget",
+ requires : [{
+ type : "TooltipWidget",
+ width : 180,
+ height : 160,
+ }]
+ }, {
+ type : "createAnnotationWidget",
+ polemic_mode : false,
+ remote_tags : {
+ id : "cinecast",
+ url : "http://festival.cinecast.fr/configuration.json",
+ alias : 'http://festival.cinecast.fr/configuration.jsonp?jsonp=?'
+ },
+ random_tags : 3,
+ disable_share: true,
+ api_endpoint_template : "endpoint/{{id}}.json",
+ api_method : 'POST'
+ }, /* {
+ type: "TraceWidget",
+ // js_console : true,
+ url: "http://traces.advene.org:5000/",
+ requestmode: 'GET',
+ syncmode: "sync"
+ } */ ]
+ },
+ player : {
+ type : 'allocine', // player type
+ height : 300,
+ width : 610,
+ acPlayerUrl : "allocine_test/AcPlayer_v3.0_new.swf",
+ autoPlay : "true",
+ urlAcData : "allocine_test/data_cinecast_new.xml"
+ },
+ modules : [{
+ type : "MediaFragment",
+ metadata : {
+ format : 'cinelab',
+ src : json_url,
+ type : 'json'
+ }
+ }]
+
+ };
+
+ IriSP.initPlayer(config, json_url);
+
+ </script>
+ <div id="MyListContainer" style="float: left; width: 400px;"></div>
+ </body>
+</html>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/test/integration/allocine_dossier_independant/test-vodkaster.htm Fri Apr 06 16:49:32 2012 +0200
@@ -0,0 +1,111 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html dir="ltr" xml:lang="fr" xmlns="http://www.w3.org/1999/xhtml" lang="fr">
+ <head>
+ <title>Metadataplayer - Polemic tweet integration test</title>
+ </head>
+ <body style="background: #222222; color: #ff00ff;">
+ <div style="width:650px;">
+ <h1>MetaDataPlayer</h1>
+ Integration test - ALLOCINE PLAYER
+ </div>
+ <!-- START Integration ###################################### -->
+ <!-- SIMPLE PLAYER EXPERIMENTATION -->
+ <script type="text/javascript" src="js/LdtPlayer-release.js" type="text/javascript"></script>
+ <div id="video"></div>
+ <div id="LdtPlayer" style="float: left;"></div>
+ <div id="Sparkline"></div>
+ <script type="text/javascript">
+ var json_urls = {
+ 'media' : 'json_examples/media.json', // http://cinecastdev.vodkaster.com/api/medias/cinecast-bamako/
+ 'extracts' : 'json_examples/extracts.json', // http://cinecastdev.vodkaster.com/api/medias/cinecast-bamako/extracts
+ 'annotations' : 'json_examples/annotations.json' // http://cinecastdev.vodkaster.com/api/medias/cinecast-bamako/annotations
+ }
+
+ IriSP.user = {
+ name : 'awesome_user_name',
+ avatar : 'allocine_test/avatar.png'
+ };
+ IriSP.libFiles.defaultDir = "/metadataplayer/src/js/libs/";
+
+ var config = {
+ gui : {
+ width : 610,
+ height : 900,
+ container : 'LdtPlayer',
+ css : 'css/LdtPlayer.css',
+ default_options : {
+ width: 610,
+ cinecast_version: true,
+ metadata : {
+ format : 'cinelab',
+ src : json_urls['annotations'],
+ type : 'json'
+ }
+ },
+ widgets : [{
+ type : "AnnotationsListWidget",
+ container : "MyListContainer", // div dans lequel sera affiché "Annotations Liées"
+ ajax_mode : false, // nécessaire pour des raisons historiques
+ refresh_interval : 15 *60 * 1000 // 15 minutes
+ }, {
+ type : "SparklineWidget",
+ height : 50,
+ lineColor: "#ffffff",
+ fillColor: "#999999"
+ }, {
+ type : "SegmentsWidget",
+ metadata : {
+ format : 'cinelab',
+ src : json_urls['extracts'],
+ type : 'json'
+ },
+ requires : [{
+ type : "TooltipWidget",
+ width : 180,
+ height : 160,
+ }]
+ }, {
+ type : "createAnnotationWidget",
+ polemic_mode : false,
+ remote_tags : {
+ id : "cinecast",
+ url : "http://festival.cinecast.fr/configuration.json",
+ alias : 'http://festival.cinecast.fr/configuration.jsonp?jsonp=?'
+ },
+ random_tags : 3,
+ disable_share: true,
+ api_endpoint_template : "endpoint/{{id}}.json",
+ api_method : 'POST'
+ }, {
+ type: "TraceWidget",
+ // js_console : true,
+ url: "http://traces.advene.org:5000/",
+ requestmode: 'GET',
+ syncmode: "sync"
+ } ]
+ },
+ player : {
+ type : 'allocine', // player type
+ height : 300,
+ width : 610,
+ acPlayerUrl : "allocine_test/AcPlayer_v3.0_new.swf",
+ autoPlay : "true",
+ urlAcData : "allocine_test/data_cinecast_new.xml"
+ },
+ modules : [{
+ type : "MediaFragment",
+ metadata : {
+ format : 'cinelab',
+ src : json_urls['media'],
+ type : 'json'
+ }
+ }]
+
+ };
+
+ IriSP.initPlayer(config, json_urls['media']);
+
+ </script>
+ <div id="MyListContainer" style="float: left; width: 400px;"></div>
+ </body>
+</html>
--- a/test/integration/polemic.htm Tue Apr 03 20:30:12 2012 +0200
+++ b/test/integration/polemic.htm Fri Apr 06 16:49:32 2012 +0200
@@ -21,6 +21,7 @@
<div id="LdtPlayer"></div>
<script type="text/javascript">
+ IriSP.libFiles.defaultDir = "/metadataplayer/src/js/libs/";
IriSP.jwplayer_swf_path = "../libs/player.swf";
var file = "polemic_fr.json";
var config = {