',prevbutton:` `+nunjucks.lib.escape(d.back),nextbutton:nunjucks.lib.escape(d.next)+` `,confirmbutton:nunjucks.lib.escape(d.confirm)},g="",p=(new nunjucks.Environment).addGlobal("config",o).addGlobal("_",e=>d[e]).addFilter("process_link",e=>{for(var a,t=/\{\{#a\}\}(.*?)\{\{\/a\}\}/g,i=0,o="";null!==(a=t.exec(e));)o=(o+=nunjucks.lib.escape(e.substring(i,a.index)))+(e=>{if("#"===e[0]){var a=e.indexOf("|");if(a<0){if(/^[a-z0-9-]+$/i.test(e.slice(1)))return``}else if(/^[a-z0-9-]+$/i.test(e.substring(1,a)))return`${nunjucks.lib.escape(e.slice(a+1))}`}return`${nunjucks.lib.escape(e)}`})(a[1]),i=t.lastIndex;return o+=nunjucks.lib.escape(e.slice(i)),new nunjucks.runtime.SafeString(o)});function b(e,a){var t,i,o,n;return a?!e.video&&e.audio?(t=(e=a).match(/^Audio files of (\d{4})$/))?(t=parseInt(t[1],10),(new Date).getFullYear()({url:n.find("#url").val(),video:n.find("#video").is(":checked"),audio:n.find("#audio").is(":checked"),subtitles:n.find("#subtitles").is(":checked")}),getTargetData:()=>({filename:n.find("#filename").val().trim(),format:n.find("#format").val(),filedesc:n.find("#filedesc").val(),dateCategory:n.find("#dateCategory").val().trim(),languageCategory:n.find("#languageCategory").val()||""}),getPlaylistData:()=>{let a=[];return n.find(".video-select:checked").each(function(){var e=parseInt(s(this).val(),10),e=r.videos[e];a.push(e)}),a}},v={startTask:e=>V.apiPost("task/run",e),updateFormats:(e,a,t)=>0{var e;return a?a===r.url&&r.initialFilenameValidated?s.when():(e=r.uploadedFile[a])?(r.url=a,V.askAPI("makedesc",{filename:e.name||""},["extractor","filedesc","filename"])):V.askAPI("validateurl",{url:a},["entity_url"]).then(e=>e.entity_url?s.Deferred().reject("This video has already been uploaded: "+e.entity_url).promise():V.askAPI("extracturl",{url:a},["type","id","title","url","date","extractor","filedesc","filename","videos"]).then(()=>{r.initialFilenameValidated=!0})).then(()=>{"playlist"===r.type?r.videos.forEach(e=>{e.format=r.format,e.dateCategory=y(e)}):r.dateCategory=y(r)}):s.Deferred().reject("URL cannot be empty!").promise()},updateFilename:(e,a=null)=>(null==a&&(a=r),e?e===a.filename&&a.initialFilenameValidated?s.when():V.askAPI("validatefilename",{filename:e},[],a).then(()=>V.askAPI("validatefilenameunique",{filename:e},["filename"],a)).then(()=>{a.initialFilenameValidated=!0}):s.Deferred().reject("Filename cannot be empty!").promise()),updateFiledesc:(e,a=null)=>(null==a&&(a=r),e?e===a.filedesc&&a.initialFiledescValidated?s.when():V.askAPI("validatefiledesc",{filedesc:e},["filedesc"],a).then(()=>{a.initialFiledescValidated=!0}):s.Deferred().reject("Decription cannot be empty!").promise()),validateUrl:e=>V.askAPI("validateurl",{url:e},[]).then(e=>{if(e.entity_url)return s.Deferred().reject("This video has already been uploaded: "+e.entity_url).promise()})},k={source:()=>{var e=m.getSourceData();return oldTaskData={...r},r={...r,...e,selectedVideos:[]},s.when(v.updateFormats(e.video,e.audio,oldTaskData),v.updateUrl(e.url)).then(()=>{"playlist"===r.type?r.nextStep="playlist":r.nextStep="target"})},playlist:()=>{let a=m.getPlaylistData();var e;return 0===a.length?s.Deferred().reject("Please select at least one video to upload!").promise():(e=[...a.map(e=>()=>v.updateFilename(e.filename,e)),...a.map(e=>()=>v.updateFiledesc(e.filedesc,e)),...a.map(e=>()=>v.validateUrl(e.url))],s.when(V.runWithConcurrency(e)).then(e=>{e=e.filter(e=>!!e?.error);if(0e.error).join("\n\n")).promise();r.selectedVideos=a,r.nextStep="confirm"}))},target:()=>{var e=m.getTargetData(),a="playlist"===r.type?r.videos[r.editingVideoIndex]:r,t=(a.format=e.format,b(a,e.dateCategory));return t.valid?(a.dateCategory=t.value,a.languageCategory=e.languageCategory||null,s.when(v.updateFilename(e.filename,a),v.updateFiledesc(e.filedesc,a)).then(()=>{"playlist"===r.type?r.nextStep="playlist":r.nextStep="confirm"})):s.Deferred().reject(t.error).promise()},confirm:()=>s.when().then(()=>{r.nextStep=null})};var V=window.video2commons={init:()=>{s("#content").html(u.loading),t={},V.loadCsrf(V.checkStatus),s(window).on("beforeunload",e=>{if(n?.is(":visible"))return e.preventDefault(),e.returnValue=""});var e=/^#?!(https?:\/\/.+)/;e.test(window.location.hash)?V.addTask({url:window.location.hash.match(e)[1]}):window.location.search.slice(1)&&(l=Qs.parse(window.location.search.slice(1)),V.addTask({url:l.url}))},loadCsrf:a=>{s.get("api/csrf").done(e=>{g=e.csrf,a()})},checkStatus:()=>{o.socketio_uri&&window.WebSocket&&window.io?V.checkStatusSocket():V.checkStatusLegacy()},checkStatusSocket:()=>{var e,a,t;window.socket||(a=(e=o.socketio_uri.match(/^((?:(?:https?:)?\/\/)?[^/]+)(\/.*)$/))[1],(t=window.socket=io(a,{path:e[2]})).on("connect",()=>{s.get("api/iosession").done(e=>{t.emit("auth",{iosession:e.iosession,_csrf_token:g})})}),t.on("status",e=>{V.alterTaskTableBoilerplate(()=>{V.populateResults(e)})}),t.on("update",(e,a)=>{V.alterTaskTableBoilerplate(()=>{V.updateTask(a)})}),t.on("remove",e=>{V.alterTaskTableBoilerplate(()=>{s("#task-"+e).remove()})}))},checkStatusLegacy:()=>{window.lastStatusCheck&&clearTimeout(window.lastStatusCheck);s.get("api/status").done(e=>{V.alterTaskTableBoilerplate(()=>{V.populateResults(e)}),window.lastStatusCheck=setTimeout(V.checkStatusLegacy,5e3)}).fail(()=>{s("#content").html(u.errorDisconnect)})},setupTables:()=>{s("#content").empty(),s("#content").append(u.workers),s("#content").append(u.capacity),s("#content").append(u.utilization),s("#content").append(u.pending),s("#content").append(u.yourTasks);var e=s(u.addTask),e=(s("#content").append(e),e.click(()=>{V.addTask()}),s(u.requestServerSide));s("#content").append(e.hide())},alterTaskTableBoilerplate:e=>{s("#tasktable").length||V.setupTables();var a=window.innerHeight+window.scrollY>=document.body.offsetHeight;e(),s.isEmptyObject(t)?s("#ssubtn").addClass("disabled").hide():s("#ssubtn").removeClass("disabled").show().attr("href",V.makeSSULink(t)),a&&window.scrollTo(0,document.body.scrollHeight)},populateResults:e=>{i=e.username;var a=s("#tasktable > tbody"),t=[];s.each(e.values,(e,a)=>{V.updateTask(a),t.push(a.id)}),a.find("> tr").each(function(){var e=s(this),a=V.getTaskIDFromDOMID(e.attr("id"));t.indexOf(a)<0&&e.remove()}),e.stats?(s("#capacity").text(e.stats.processing+" / "+e.stats.capacity),s("#utilization").text(Math.round(100*e.stats.utilization)+"%"),s("#pending").text(""+e.stats.pending)):(s("#capacity").text("N/A"),s("#utilization").text("N/A"),s("#pending").text("N/A"))},updateTask:e=>{var a=s("#tasktable > tbody"),o="task-"+e.id,n=s("#"+o),a=(n.length?n.attr("status")!==e.status&&(n.html(""),V.setupTaskRow(n,o,e.status)):(s("#task-new").remove(),(n=s("
',prevbutton:` `+nunjucks.lib.escape(d.back),nextbutton:nunjucks.lib.escape(d.next)+` `,confirmbutton:nunjucks.lib.escape(d.confirm)},g="",p=(new nunjucks.Environment).addGlobal("config",o).addGlobal("_",e=>d[e]).addFilter("process_link",e=>{for(var a,t=/\{\{#a\}\}(.*?)\{\{\/a\}\}/g,i=0,o="";null!==(a=t.exec(e));)o=(o+=nunjucks.lib.escape(e.substring(i,a.index)))+(e=>{if("#"===e[0]){var a=e.indexOf("|");if(a<0){if(/^[a-z0-9-]+$/i.test(e.slice(1)))return``}else if(/^[a-z0-9-]+$/i.test(e.substring(1,a)))return`${nunjucks.lib.escape(e.slice(a+1))}`}return`${nunjucks.lib.escape(e)}`})(a[1]),i=t.lastIndex;return o+=nunjucks.lib.escape(e.slice(i)),new nunjucks.runtime.SafeString(o)});function b(e,a){var t,i,o,n;return a?!e.video&&e.audio?(t=(e=a).match(/^Audio files of (\d{4})$/))?(t=parseInt(t[1],10),(new Date).getFullYear()({url:n.find("#url").val(),video:n.find("#video").is(":checked"),audio:n.find("#audio").is(":checked"),subtitles:n.find("#subtitles").is(":checked")}),getTargetData:()=>({filename:n.find("#filename").val().trim(),format:n.find("#format").val(),filedesc:n.find("#filedesc").val(),dateCategory:n.find("#dateCategory").val().trim(),languageCategory:n.find("#languageCategory").val()||""}),getPlaylistData:()=>{let a=[];return n.find(".video-select:checked").each(function(){var e=parseInt(s(this).val(),10),e=r.videos[e];a.push(e)}),a}},v={startTask:e=>V.apiPost("task/run",e),updateFormats:(e,a,t)=>0{var e;return a?a===r.url&&r.initialFilenameValidated?s.when():(e=r.uploadedFile[a])?(r.url=a,V.askAPI("makedesc",{filename:e.name||""},["extractor","filedesc","filename"])):V.askAPI("validateurl",{url:a},["entity_url"]).then(e=>e.entity_url?s.Deferred().reject("This video has already been uploaded: "+e.entity_url).promise():V.askAPI("extracturl",{url:a},["type","id","title","url","date","extractor","filedesc","filename","videos","queue"]).then(()=>{r.initialFilenameValidated=!0})).then(()=>{"playlist"===r.type?r.videos.forEach(e=>{e.format=r.format,e.dateCategory=y(e)}):r.dateCategory=y(r)}):s.Deferred().reject("URL cannot be empty!").promise()},updateFilename:(e,a=null)=>(null==a&&(a=r),e?e===a.filename&&a.initialFilenameValidated?s.when():V.askAPI("validatefilename",{filename:e},[],a).then(()=>V.askAPI("validatefilenameunique",{filename:e},["filename"],a)).then(()=>{a.initialFilenameValidated=!0}):s.Deferred().reject("Filename cannot be empty!").promise()),updateFiledesc:(e,a=null)=>(null==a&&(a=r),e?e===a.filedesc&&a.initialFiledescValidated?s.when():V.askAPI("validatefiledesc",{filedesc:e},["filedesc"],a).then(()=>{a.initialFiledescValidated=!0}):s.Deferred().reject("Decription cannot be empty!").promise()),validateUrl:e=>V.askAPI("validateurl",{url:e},[]).then(e=>{if(e.entity_url)return s.Deferred().reject("This video has already been uploaded: "+e.entity_url).promise()})},k={source:()=>{var e=m.getSourceData();return oldTaskData={...r},r={...r,...e,selectedVideos:[]},s.when(v.updateFormats(e.video,e.audio,oldTaskData),v.updateUrl(e.url)).then(()=>{"playlist"===r.type?r.nextStep="playlist":r.nextStep="target"})},playlist:()=>{let a=m.getPlaylistData();var e;return 0===a.length?s.Deferred().reject("Please select at least one video to upload!").promise():(e=[...a.map(e=>()=>v.updateFilename(e.filename,e)),...a.map(e=>()=>v.updateFiledesc(e.filedesc,e)),...a.map(e=>()=>v.validateUrl(e.url))],s.when(V.runWithConcurrency(e)).then(e=>{e=e.filter(e=>!!e?.error);if(0e.error).join("\n\n")).promise();r.selectedVideos=a,r.nextStep="confirm"}))},target:()=>{var e=m.getTargetData(),a="playlist"===r.type?r.videos[r.editingVideoIndex]:r,t=(a.format=e.format,b(a,e.dateCategory));return t.valid?(a.dateCategory=t.value,a.languageCategory=e.languageCategory||null,s.when(v.updateFilename(e.filename,a),v.updateFiledesc(e.filedesc,a)).then(()=>{"playlist"===r.type?r.nextStep="playlist":r.nextStep="confirm"})):s.Deferred().reject(t.error).promise()},confirm:()=>s.when().then(()=>{r.nextStep=null})};var V=window.video2commons={init:()=>{s("#content").html(u.loading),t={},V.loadCsrf(V.checkStatus),s(window).on("beforeunload",e=>{if(n?.is(":visible"))return e.preventDefault(),e.returnValue=""});var e=/^#?!(https?:\/\/.+)/;e.test(window.location.hash)?V.addTask({url:window.location.hash.match(e)[1]}):window.location.search.slice(1)&&(l=Qs.parse(window.location.search.slice(1)),V.addTask({url:l.url}))},loadCsrf:a=>{s.get("api/csrf").done(e=>{g=e.csrf,a()})},checkStatus:()=>{o.socketio_uri&&window.WebSocket&&window.io?V.checkStatusSocket():V.checkStatusLegacy()},checkStatusSocket:()=>{var e,a,t;window.socket||(a=(e=o.socketio_uri.match(/^((?:(?:https?:)?\/\/)?[^/]+)(\/.*)$/))[1],(t=window.socket=io(a,{path:e[2]})).on("connect",()=>{s.get("api/iosession").done(e=>{t.emit("auth",{iosession:e.iosession,_csrf_token:g})})}),t.on("status",e=>{V.alterTaskTableBoilerplate(()=>{V.populateResults(e)})}),t.on("update",(e,a)=>{V.alterTaskTableBoilerplate(()=>{V.updateTask(a)})}),t.on("remove",e=>{V.alterTaskTableBoilerplate(()=>{s("#task-"+e).remove()})}))},checkStatusLegacy:()=>{window.lastStatusCheck&&clearTimeout(window.lastStatusCheck);s.get("api/status").done(e=>{V.alterTaskTableBoilerplate(()=>{V.populateResults(e)}),window.lastStatusCheck=setTimeout(V.checkStatusLegacy,5e3)}).fail(()=>{s("#content").html(u.errorDisconnect)})},setupTables:()=>{s("#content").empty(),s("#content").append(u.workers),s("#content").append(u.capacity),s("#content").append(u.utilization),s("#content").append(u.pending),s("#content").append(u.yourTasks);var e=s(u.addTask),e=(s("#content").append(e),e.click(()=>{V.addTask()}),s(u.requestServerSide));s("#content").append(e.hide())},alterTaskTableBoilerplate:e=>{s("#tasktable").length||V.setupTables();var a=window.innerHeight+window.scrollY>=document.body.offsetHeight;e(),s.isEmptyObject(t)?s("#ssubtn").addClass("disabled").hide():s("#ssubtn").removeClass("disabled").show().attr("href",V.makeSSULink(t)),a&&window.scrollTo(0,document.body.scrollHeight)},populateResults:e=>{i=e.username;var a=s("#tasktable > tbody"),t=[];s.each(e.values,(e,a)=>{V.updateTask(a),t.push(a.id)}),a.find("> tr").each(function(){var e=s(this),a=V.getTaskIDFromDOMID(e.attr("id"));t.indexOf(a)<0&&e.remove()}),e.stats?(s("#capacity").text(e.stats.processing+" / "+e.stats.capacity),s("#utilization").text(Math.round(100*e.stats.utilization)+"%"),s("#pending").text(""+e.stats.pending)):(s("#capacity").text("N/A"),s("#utilization").text("N/A"),s("#pending").text("N/A"))},updateTask:e=>{var a=s("#tasktable > tbody"),o="task-"+e.id,n=s("#"+o),a=(n.length?n.attr("status")!==e.status&&(n.html(""),V.setupTaskRow(n,o,e.status)):(s("#task-new").remove(),(n=s("