project Websites / videos.bentasker.co.uk avatar

Websites / videos.bentasker.co.uk: 8b7e6e7f




Build release for v0.17

Build release for v0.17

Commit 8b7e6e7f.

Authored 2021-12-27T11:16:33.000+00:00 by B Tasker in project Websites / videos.bentasker.co.uk

+106 lines -9 lines

Commit Signature

Changes

diff --git a/do_release.sh b/do_release.sh
--- a/do_release.sh
+++ b/do_release.sh
# @@ -1,5 +1,10 @@
# #!/bin/bash
#
# +
# +function uglifyjs(){
# + docker run -v $PWD:/file smithmicro/uglifyjs /file/$1
# +}
# +
# version_num=$1
#
# if [ "$version_num" == "" ]
# @@ -14,13 +19,13 @@ read blah
#
#
# # Check uglifyjs is present
# -echo "foo" | uglifyjs > /dev/null
# +#echo "foo" | uglifyjs > /dev/null
#
# -if [ ! "$?" == "0" ]
# -then
# - echo "Uglifyjs doesn't seem to be working, do you need to do 'sudo apt-get install node-uglify'?"
# - exit 1
# -fi
# +#if [ ! "$?" == "0" ]
# +#then
# +# echo "Uglifyjs doesn't seem to be working, do you need to do 'sudo apt-get install node-uglify'?"
# +# exit 1
# +#fi
#
# # Otherwise, do the minification
# cd resources/embed/
#
diff --git a/resources/embed/embed.js b/resources/embed/embed.js
--- a/resources/embed/embed.js
+++ b/resources/embed/embed.js
# @@ -258,10 +258,11 @@ function writePlayer(vidid,playerSettings){
#
# var s = cE('script');
# s.setAttribute('type','text/javascript');
# - ss = "window.player" + vidid +" = videojs('BensVideo" + vidid + "',\"{'fluid':true}\", function onPlayerReady(){console.log('Player Ready');});";
# - ss += "window.player" + vidid + ".on('playing', function() { var i = document.createElement('img'); i.src = 'https://piwik.bentasker.co.uk/piwik.php?idsite=10&rec=1&new_visit=1&url=' + encodeURIComponent(window.player" + vidid+ ".currentSrc().split('?')[0]) + '&urlref=' + encodeURIComponent(window.location.href); i.style='border:0';document.body.appendChild(i);});";
# + ss = "window.player" + vidid +" = videojs('BensVideo" + vidid + "',\"{'fluid':true}\", function onPlayerReady(){console.log('Player Ready'); submit(gatherInfo(window.player" + vidid + ".currentSrc().split('?')[0],'ready'))});";
# + ss += "window.player" + vidid + ".on('playing', function() {submit(gatherInfo(window.player" + vidid + ".currentSrc().split('?')[0],'playing'))});";
# s.innerHTML = ss;
#
# +
# c.appendChild(s);
#
# if (window.playerSettings['vidtype'] == "special/m3uplaylist"){
# @@ -515,3 +516,93 @@ function BenswriteSchemaOrg(text,storage,url){
# d.appendChild(m);
#
# }
# +
# +
# +/* Analytics stuff - see https://www.bentasker.co.uk/posts/designing-privacy-friendly-analytics.html
# + *
# + *
# + * Usage for videos is: submit(gatherInfo(vid))
# + *
# + */
# +function gatherInfo(vid, state){
# + var tz = new Date().getTimezoneOffset();
# +
# + return {
# + domain : "videos.bentasker.co.uk",
# + page: vid.replace("https://videos.bentasker.co.uk",""),
# + referrer: document.location.href,
# + referrer_domain: document.location.hostname,
# + platform: navigator.platform,
# + timezone: tz,
# + sess_id: getSessionId(),
# + state: state,
# + responseTime: Date.now() - window.performance.timing.navigationStart
# + }
# +}
# +
# +function getSessionId(){
# + // Only if enabled
# + if (!window.analytics_gen_psuedoid){
# + return "none";
# + }
# +
# + // Every so often, we want to rotate the session ID to mitigate its impact
# + var n = randomInteger(1, 10);
# +
# + var k = window.location.hostname + "_sess-id";
# + var i = sessionStorage.getItem(k);
# +
# + // If there's no item in storage, or if we've decided to rotate
# + if (!i || n == 5){
# + i = createUUID();
# + sessionStorage.setItem(k,i);
# + }
# +
# + return i;
# +}
# +
# +function createUUID() {
# + // Create a short UUID
# + return 'xxxx-xxxx'.replace(/[xy]/g, function(c) {
# + var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 0x3 | 0x8);
# + return v.toString(16);
# + });
# +}
# +
# +function submit(info){
# + var xml = new XMLHttpRequest();
# + xml.onreadystatechange = function () {}; // Do nothing
# +
# + // If we're being viewed on a .onion, use the .onion instead
# + // (keeps everything within the tor network)
# + if (window.location.hostname.toLowerCase().endsWith(".onion")){
# + xml.open("POST", window.analytics_endpoint_onion + "/write");
# + }else{
# + xml.open("POST", window.analytics_endpoint);
# + }
# + xml.setRequestHeader("Content-Type", "application/json");
# + xml.send(JSON.stringify(info));
# +}
# +
# +// All this does is place a request to Tor the endpoint
# +// its only purpose is to ensure we have a circuit open ready for use during write
# +// so that writes can complete faster
# +function ping(){
# + if (window.location.hostname.toLowerCase().endsWith(".onion")){
# + var xml = new XMLHttpRequest();
# + xml.onreadystatechange = function () {}; // Do nothing
# + xml.open("GET", window.analytics_endpoint_onion + "/ping");
# + xml.send();
# + }
# +}
# +
# +function randomInteger(min, max) {
# + return Math.floor(Math.random() * (max - min + 1)) + min;
# +}
# +
# +/* These can be overridden in the base document */
# +window.analytics_active = true;
# +window.analytics_gen_psuedoid = true;
# +window.analytics_endpoint = 'https://pfanalytics.bentasker.co.uk/write';
# +window.analytics_endpoint_onion = 'http://wftlf4ke7xwqkjrrju4aok57pkr7kfks5t5uqmipxlyjucwjycdql7id.onion';
# +
#
diff --git a/resources/embed/embed.min.js b/resources/embed/embed.min.js
--- a/resources/embed/embed.min.js
+++ b/resources/embed/embed.min.js
# @@ -1 +1 @@
# -window.BensPlayerInstances=window.BensPlayerInstances===undefined?[]:window.BensPlayerInstances;window.BensPD="https://videos.bentasker.co.uk/";window.BensPlayerDomain="https://videos.bentasker.co.uk/";function cE(t){return document.createElement(t)}document.write=function(s){var scripts=document.getElementsByTagName("script");var lastScript=scripts[scripts.length-1];lastScript.insertAdjacentHTML("beforebegin",s)};function guessMimeFromUrl(vidurl){var segs=vidurl.split(".");var ext=segs[segs.length-1];if(!ext){return"video/mp4"}switch(ext.toLowerCase()){case"m3u8":return"application/x-mpegURL";break;case"avi":return"video/avi";break;case"mp3":return"audio/mpeg";break;case"mkv":return"video/x-matroska";break;case"webm":return"video/webm";break;case"mov":return"video/quicktime";break;case"mpg":return"video/mpeg";break;case"mpeg":return"video/mpeg";break;case"mp4":return"video/mp4";break;case"mp4a":return"audio/mp4";break;case"wav":return"audio/wav";break;case"ts":return"video/mp2t";break;case"m3u":return"special/m3uplaylist";break;default:console.log("Calculating mimetime failed for "+vidurl+" ext: "+ext.toLowerCase());return"video/mp4"}}function embedBensPlayer(vidurl,vidtype){vidtype=guessMimeFromUrl(vidurl);var vidid=0;while(true){if(window.BensPlayerInstances.includes(vidid)){vidid++}else{window.BensPlayerInstances.push(vidid);break}}if(vidurl.substring(0,31)!=window.BensPD){vidurl=window.BensPD+vidurl}document.write("<div id='BensplayerWrapper"+vidid+"' class='BensVideoCont'></div>");var c=document.getElementById("BensplayerWrapper"+vidid);var e=cE("link");e.setAttribute("rel","stylesheet");e.setAttribute("href",window.BensPD+"resources/js/videojs/video-js.min.css");c.appendChild(e);playerSettings={vidtype:vidtype,vidurl:vidurl,vidid:vidid};getBensToken(vidid,playerSettings)}function getBensToken(vidid,playerSettings){var ref=encodeURIComponent(window.location.href);var vurl=encodeURIComponent(playerSettings["vidurl"].replace(window.BensPD,""));var url=window.BensPD+"token_endpoint?ref="+ref+"&vidpath="+vurl;var xmlhttp;if(window.XMLHttpRequest){xmlhttp=new XMLHttpRequest}else{xmlhttp=new ActiveXObject("Microsoft.XMLHTTP")}xmlhttp.onreadystatechange=function(){if(xmlhttp.readyState==4){if(xmlhttp.status==200){var j=JSON.parse(xmlhttp.responseText);if(!j["status"]){console.log("Failed to retrieve token for video");embedFailedNotif(vidid);return false}playerSettings["vidurl"]+="?t="+encodeURIComponent(j["token"])+"&e="+encodeURIComponent(j["exp"]);loadVJS(vidid,playerSettings)}else{console.log("Failed to retrieve token for video");embedFailedNotif(vidid);return false}}};xmlhttp.open("GET",url,true);xmlhttp.send()}function writePlayer(vidid,playerSettings){var c=document.getElementById("BensplayerWrapper"+vidid);var width=c.parentNode.clientWidth;var d=cE("div");d.id="videowrapper"+vidid;v=cE("video");v.setAttribute("id","BensVideo"+vidid);v.setAttribute("class","video-js");v.setAttribute("controls","");v.setAttribute("preload","auto");v.setAttribute("width",width);if(window.playerSettings["vidtype"]!="special/m3uplaylist"){var src=cE("source");src.setAttribute("src",playerSettings["vidurl"]);src.setAttribute("type",playerSettings["vidtype"]);v.appendChild(src)}else{pllist=cE("div");pllist.className="vjs-playlist";v.appendChild(pllist);plliststl=cE("link");plliststl.setAttribute("rel","stylesheet");plliststl.setAttribute("href",window.BensPD+"resources/js/playlist-ui/videojs-playlist-ui.vertical.css");document.getElementsByTagName("head")[0].appendChild(plliststl)}d.appendChild(v);c.appendChild(d);var s=cE("script");s.setAttribute("type","text/javascript");ss="window.player"+vidid+" = videojs('BensVideo"+vidid+"',\"{'fluid':true}\", function onPlayerReady(){console.log('Player Ready');});";ss+="window.player"+vidid+".on('playing', function() { var i = document.createElement('img'); i.src = 'https://piwik.bentasker.co.uk/piwik.php?idsite=10&rec=1&new_visit=1&url=' + encodeURIComponent(window.player"+vidid+".currentSrc().split('?')[0]) + '&urlref=' + encodeURIComponent(window.location.href); i.style='border:0';document.body.appendChild(i);});";s.innerHTML=ss;c.appendChild(s);if(window.playerSettings["vidtype"]=="special/m3uplaylist"){var s=cE("script");s.innerHTML='var VjsButton = videojs.getComponent("Button"); var nextButton = videojs.extend(VjsButton, { constructor: function(player, options){ VjsButton.call(this, player, options); this.controlText("Next"); }, handleClick: function() { window.player'+vidid+'.playlist.next(); }, buildCSSClass: function() { return "vjs-icon-next-item vjs-control vjs-button"; } }); var prevButton = videojs.extend(VjsButton, { constructor: function(player, options){ VjsButton.call(this, player, options); this.controlText("Previous"); }, handleClick: function() { window.player'+vidid+'.playlist.previous(); }, buildCSSClass: function() { return "vjs-icon-previous-item vjs-control vjs-button"; } }); videojs.registerComponent("prevButton", prevButton); videojs.registerComponent("NextButton", nextButton); window.player'+vidid+'.getChild("controlBar").addChild("prevButton", {}); window.player'+vidid+'.getChild("controlBar").addChild("nextButton", {});';c.appendChild(s);fetchM3U(playerSettings["vidurl"],vidid)}dirname=playerSettings["vidurl"].match(/.*\//);fetchPage(dirname+"details.json",BenswriteSchemaOrg,function(e){},playerSettings)}function loadVJS(vidid,playerSettings){var c=document.getElementById("BensplayerWrapper"+vidid);var e=cE("script");e.setAttribute("type","text/javascript");e.setAttribute("src",window.BensPD+"resources/js/videojs/video.min.js");if(window.playerSettings["vidtype"]=="application/x-mpegURL"){e.onload=function(){loadVJSHLS(vidid,playerSettings)}}else if(window.playerSettings["vidtype"]=="special/m3uplaylist"){e.onload=function(){loadVJSM3U(vidid,playerSettings)}}else{e.onload=function(){writePlayer(vidid,playerSettings)}}c.appendChild(e)}function loadVJSM3U(vidid,playerSettings){var c=document.getElementById("BensplayerWrapper"+vidid);var e=cE("script");e.setAttribute("type","text/javascript");e.setAttribute("src",window.BensPD+"resources/js/playlist/videojs-playlist.js");e.onload=function(){writePlayer(vidid,playerSettings)};c.appendChild(e)}function loadVJSHLS(vidid,playerSettings){var c=document.getElementById("BensplayerWrapper"+vidid);var e=cE("script");e.setAttribute("type","text/javascript");e.setAttribute("src",window.BensPD+"resources/js/videojs-contrib-hls.min.js");e.onload=function(){writePlayer(vidid,playerSettings)};c.appendChild(e)}function fetchPage(url,callback,errcallback,storage){var xmlhttp;if(window.XMLHttpRequest){xmlhttp=new XMLHttpRequest}else{xmlhttp=new ActiveXObject("Microsoft.XMLHTTP")}xmlhttp.onreadystatechange=function(){if(xmlhttp.readyState==4){if(xmlhttp.status==200){callback(xmlhttp.responseText,storage,url)}else{errcallback(xmlhttp.responseText)}}};xmlhttp.open("GET",url,true);xmlhttp.send()}function fetchM3U(vidurl,vidid){window.videoListid=vidid;var oReq=new XMLHttpRequest;oReq.addEventListener("load",parseM3U);oReq.open("GET",vidurl);oReq.send()}function parseM3U(){window.videoList=[];lines=this.responseText.split("\n");domain=window.location.hostname;var o;for(var i=0;i<lines.length;i++){if(lines[i][0]=="#"||lines[i]==""){continue}segs=lines[i].split(".");ext=segs[segs.length-1].toLowerCase();if(ext!="m3u"){playpath=lines[i];if(lines[i][0]=="/"){playpath="https://"+domain+lines[i]}o={sources:[{src:playpath,type:guessMimeFromUrl(lines[i])}]};window.videoList.push(o)}}vidid=window.videoListid;var s=cE("script");s.setAttribute("type","text/javascript");ss="window.player"+vidid+".playlist(window.videoList); window.player"+vidid+".playlist.autoadvance(0);window.player"+vidid+".playlist.first();";s.innerHTML=ss;var c=document.getElementById("BensVideo"+vidid);c.appendChild(s)}function embedFailedNotif(vidid){s=cE("img");s.setAttribute("src",window.BensPD+"resources/embed/failed.png");var c=document.getElementById("BensplayerWrapper"+vidid);var width=c.parentNode.clientWidth;s.setAttribute("style","max-width: "+width+"px");c.appendChild(s)}function BenswriteSchemaOrg(text,storage,url){if(!text||!storage||!url){return}var j=JSON.parse(text);var d=document.getElementById("BensplayerWrapper"+storage["vidid"]);d.setAttribute("itemscope","");d.setAttribute("itemtype","https://schema.org/VideoObject");m=cE("meta");var url=window.BensPlayerDomain+"Player.html?url="+encodeURIComponent(url.replace(window.BensPD,""));m.setAttribute("itemprop","url");m.setAttribute("content",url);d.appendChild(m);if(j.hasOwnProperty("title")){var m=cE("meta");m.setAttribute("itemprop","name");m.setAttribute("content",j["title"]);d.appendChild(m)}if(j.hasOwnProperty("description")){var m=cE("meta");m.setAttribute("itemprop","description");m.setAttribute("content",j["description"].replace(/'/g,""));d.appendChild(m)}if(j.hasOwnProperty("keywords")){var m=cE("meta");m.setAttribute("itemprop","keywords");m.setAttribute("content",j["keywords"].replace(/'/g,""));d.appendChild(m)}var m=cE("meta");m.setAttribute("itemprop","playerType");m.setAttribute("content","html5");d.appendChild(m)}
# \ No newline at end of file
# +window.BensPlayerInstances=window.BensPlayerInstances===undefined?[]:window.BensPlayerInstances;window.BensPD="https://videos.bentasker.co.uk/";window.BensPlayerDomain="https://videos.bentasker.co.uk/";function cE(t){return document.createElement(t)}document.write=function(s){var scripts=document.getElementsByTagName("script");var lastScript=scripts[scripts.length-1];lastScript.insertAdjacentHTML("beforebegin",s)};function guessMimeFromUrl(vidurl){var segs=vidurl.split(".");var ext=segs[segs.length-1];if(!ext){return"video/mp4"}switch(ext.toLowerCase()){case"m3u8":return"application/x-mpegURL";break;case"avi":return"video/avi";break;case"mp3":return"audio/mpeg";break;case"mkv":return"video/x-matroska";break;case"webm":return"video/webm";break;case"mov":return"video/quicktime";break;case"mpg":return"video/mpeg";break;case"mpeg":return"video/mpeg";break;case"mp4":return"video/mp4";break;case"mp4a":return"audio/mp4";break;case"wav":return"audio/wav";break;case"ts":return"video/mp2t";break;case"m3u":return"special/m3uplaylist";break;default:console.log("Calculating mimetime failed for "+vidurl+" ext: "+ext.toLowerCase());return"video/mp4"}}function embedBensPlayer(vidurl,vidtype){vidtype=guessMimeFromUrl(vidurl);var vidid=0;while(true){if(window.BensPlayerInstances.includes(vidid)){vidid++}else{window.BensPlayerInstances.push(vidid);break}}if(vidurl.substring(0,31)!=window.BensPD){vidurl=window.BensPD+vidurl}document.write("<div id='BensplayerWrapper"+vidid+"' class='BensVideoCont'></div>");var c=document.getElementById("BensplayerWrapper"+vidid);var e=cE("link");e.setAttribute("rel","stylesheet");e.setAttribute("href",window.BensPD+"resources/js/videojs/video-js.min.css");c.appendChild(e);playerSettings={vidtype:vidtype,vidurl:vidurl,vidid:vidid};getBensToken(vidid,playerSettings)}function getBensToken(vidid,playerSettings){var ref=encodeURIComponent(window.location.href);var vurl=encodeURIComponent(playerSettings["vidurl"].replace(window.BensPD,""));var url=window.BensPD+"token_endpoint?ref="+ref+"&vidpath="+vurl;var xmlhttp;if(window.XMLHttpRequest){xmlhttp=new XMLHttpRequest}else{xmlhttp=new ActiveXObject("Microsoft.XMLHTTP")}xmlhttp.onreadystatechange=function(){if(xmlhttp.readyState==4){if(xmlhttp.status==200){var j=JSON.parse(xmlhttp.responseText);if(!j["status"]){console.log("Failed to retrieve token for video");embedFailedNotif(vidid);return false}playerSettings["vidurl"]+="?t="+encodeURIComponent(j["token"])+"&e="+encodeURIComponent(j["exp"]);loadVJS(vidid,playerSettings)}else{console.log("Failed to retrieve token for video");embedFailedNotif(vidid);return false}}};xmlhttp.open("GET",url,true);xmlhttp.send()}function writePlayer(vidid,playerSettings){var c=document.getElementById("BensplayerWrapper"+vidid);var width=c.parentNode.clientWidth;var d=cE("div");d.id="videowrapper"+vidid;v=cE("video");v.setAttribute("id","BensVideo"+vidid);v.setAttribute("class","video-js");v.setAttribute("controls","");v.setAttribute("preload","auto");v.setAttribute("width",width);if(window.playerSettings["vidtype"]!="special/m3uplaylist"){var src=cE("source");src.setAttribute("src",playerSettings["vidurl"]);src.setAttribute("type",playerSettings["vidtype"]);v.appendChild(src)}else{pllist=cE("div");pllist.className="vjs-playlist";v.appendChild(pllist);plliststl=cE("link");plliststl.setAttribute("rel","stylesheet");plliststl.setAttribute("href",window.BensPD+"resources/js/playlist-ui/videojs-playlist-ui.vertical.css");document.getElementsByTagName("head")[0].appendChild(plliststl)}d.appendChild(v);c.appendChild(d);var s=cE("script");s.setAttribute("type","text/javascript");ss="window.player"+vidid+" = videojs('BensVideo"+vidid+"',\"{'fluid':true}\", function onPlayerReady(){console.log('Player Ready'); submit(gatherInfo(window.player"+vidid+".currentSrc().split('?')[0],'ready'))});";ss+="window.player"+vidid+".on('playing', function() {submit(gatherInfo(window.player"+vidid+".currentSrc().split('?')[0],'playing'))});";s.innerHTML=ss;c.appendChild(s);if(window.playerSettings["vidtype"]=="special/m3uplaylist"){var s=cE("script");s.innerHTML='var VjsButton = videojs.getComponent("Button"); var nextButton = videojs.extend(VjsButton, { constructor: function(player, options){ VjsButton.call(this, player, options); this.controlText("Next"); }, handleClick: function() { window.player'+vidid+'.playlist.next(); }, buildCSSClass: function() { return "vjs-icon-next-item vjs-control vjs-button"; } }); var prevButton = videojs.extend(VjsButton, { constructor: function(player, options){ VjsButton.call(this, player, options); this.controlText("Previous"); }, handleClick: function() { window.player'+vidid+'.playlist.previous(); }, buildCSSClass: function() { return "vjs-icon-previous-item vjs-control vjs-button"; } }); videojs.registerComponent("prevButton", prevButton); videojs.registerComponent("NextButton", nextButton); window.player'+vidid+'.getChild("controlBar").addChild("prevButton", {}); window.player'+vidid+'.getChild("controlBar").addChild("nextButton", {});';c.appendChild(s);fetchM3U(playerSettings["vidurl"],vidid)}dirname=playerSettings["vidurl"].match(/.*\//);fetchPage(dirname+"details.json",BenswriteSchemaOrg,function(e){},playerSettings)}function loadVJS(vidid,playerSettings){var c=document.getElementById("BensplayerWrapper"+vidid);var e=cE("script");e.setAttribute("type","text/javascript");e.setAttribute("src",window.BensPD+"resources/js/videojs/video.min.js");if(window.playerSettings["vidtype"]=="application/x-mpegURL"){e.onload=function(){loadVJSHLS(vidid,playerSettings)}}else if(window.playerSettings["vidtype"]=="special/m3uplaylist"){e.onload=function(){loadVJSM3U(vidid,playerSettings)}}else{e.onload=function(){writePlayer(vidid,playerSettings)}}c.appendChild(e)}function loadVJSM3U(vidid,playerSettings){var c=document.getElementById("BensplayerWrapper"+vidid);var e=cE("script");e.setAttribute("type","text/javascript");e.setAttribute("src",window.BensPD+"resources/js/playlist/videojs-playlist.js");e.onload=function(){writePlayer(vidid,playerSettings)};c.appendChild(e)}function loadVJSHLS(vidid,playerSettings){var c=document.getElementById("BensplayerWrapper"+vidid);var e=cE("script");e.setAttribute("type","text/javascript");e.setAttribute("src",window.BensPD+"resources/js/videojs-contrib-hls.min.js");e.onload=function(){writePlayer(vidid,playerSettings)};c.appendChild(e)}function fetchPage(url,callback,errcallback,storage){var xmlhttp;if(window.XMLHttpRequest){xmlhttp=new XMLHttpRequest}else{xmlhttp=new ActiveXObject("Microsoft.XMLHTTP")}xmlhttp.onreadystatechange=function(){if(xmlhttp.readyState==4){if(xmlhttp.status==200){callback(xmlhttp.responseText,storage,url)}else{errcallback(xmlhttp.responseText)}}};xmlhttp.open("GET",url,true);xmlhttp.send()}function fetchM3U(vidurl,vidid){window.videoListid=vidid;var oReq=new XMLHttpRequest;oReq.addEventListener("load",parseM3U);oReq.open("GET",vidurl);oReq.send()}function parseM3U(){window.videoList=[];lines=this.responseText.split("\n");domain=window.location.hostname;var o;for(var i=0;i<lines.length;i++){if(lines[i][0]=="#"||lines[i]==""){continue}segs=lines[i].split(".");ext=segs[segs.length-1].toLowerCase();if(ext!="m3u"){playpath=lines[i];if(lines[i][0]=="/"){playpath="https://"+domain+lines[i]}o={sources:[{src:playpath,type:guessMimeFromUrl(lines[i])}]};window.videoList.push(o)}}vidid=window.videoListid;var s=cE("script");s.setAttribute("type","text/javascript");ss="window.player"+vidid+".playlist(window.videoList); window.player"+vidid+".playlist.autoadvance(0);window.player"+vidid+".playlist.first();";s.innerHTML=ss;var c=document.getElementById("BensVideo"+vidid);c.appendChild(s)}function embedFailedNotif(vidid){s=cE("img");s.setAttribute("src",window.BensPD+"resources/embed/failed.png");var c=document.getElementById("BensplayerWrapper"+vidid);var width=c.parentNode.clientWidth;s.setAttribute("style","max-width: "+width+"px");c.appendChild(s)}function BenswriteSchemaOrg(text,storage,url){if(!text||!storage||!url){return}var j=JSON.parse(text);var d=document.getElementById("BensplayerWrapper"+storage["vidid"]);d.setAttribute("itemscope","");d.setAttribute("itemtype","https://schema.org/VideoObject");m=cE("meta");var url=window.BensPlayerDomain+"Player.html?url="+encodeURIComponent(url.replace(window.BensPD,""));m.setAttribute("itemprop","url");m.setAttribute("content",url);d.appendChild(m);if(j.hasOwnProperty("title")){var m=cE("meta");m.setAttribute("itemprop","name");m.setAttribute("content",j["title"]);d.appendChild(m)}if(j.hasOwnProperty("description")){var m=cE("meta");m.setAttribute("itemprop","description");m.setAttribute("content",j["description"].replace(/'/g,""));d.appendChild(m)}if(j.hasOwnProperty("keywords")){var m=cE("meta");m.setAttribute("itemprop","keywords");m.setAttribute("content",j["keywords"].replace(/'/g,""));d.appendChild(m)}var m=cE("meta");m.setAttribute("itemprop","playerType");m.setAttribute("content","html5");d.appendChild(m)}function gatherInfo(vid,state){var tz=(new Date).getTimezoneOffset();return{domain:"videos.bentasker.co.uk",page:vid.replace("https://videos.bentasker.co.uk",""),referrer:document.location.href,referrer_domain:document.location.hostname,platform:navigator.platform,timezone:tz,sess_id:getSessionId(),state:state,responseTime:Date.now()-window.performance.timing.navigationStart}}function getSessionId(){if(!window.analytics_gen_psuedoid){return"none"}var n=randomInteger(1,10);var k=window.location.hostname+"_sess-id";var i=sessionStorage.getItem(k);if(!i||n==5){i=createUUID();sessionStorage.setItem(k,i)}return i}function createUUID(){return"xxxx-xxxx".replace(/[xy]/g,function(c){var r=Math.random()*16|0,v=c=="x"?r:r&3|8;return v.toString(16)})}function submit(info){var xml=new XMLHttpRequest;xml.onreadystatechange=function(){};if(window.location.hostname.toLowerCase().endsWith(".onion")){xml.open("POST",window.analytics_endpoint_onion+"/write")}else{xml.open("POST",window.analytics_endpoint)}xml.setRequestHeader("Content-Type","application/json");xml.send(JSON.stringify(info))}function ping(){if(window.location.hostname.toLowerCase().endsWith(".onion")){var xml=new XMLHttpRequest;xml.onreadystatechange=function(){};xml.open("GET",window.analytics_endpoint_onion+"/ping");xml.send()}}function randomInteger(min,max){return Math.floor(Math.random()*(max-min+1))+min}window.analytics_active=true;window.analytics_gen_psuedoid=true;window.analytics_endpoint="https://pfanalytics.bentasker.co.uk/write";window.analytics_endpoint_onion="http://wftlf4ke7xwqkjrrju4aok57pkr7kfks5t5uqmipxlyjucwjycdql7id.onion";
#
diff --git a/resources/embed/versions/embed.0.17.min.js b/resources/embed/versions/embed.0.17.min.js
--- a/resources/embed/versions/embed.0.17.min.js
+++ b/resources/embed/versions/embed.0.17.min.js
# @@ -0,0 +1 @@
# +window.BensPlayerInstances=window.BensPlayerInstances===undefined?[]:window.BensPlayerInstances;window.BensPD="https://videos.bentasker.co.uk/";window.BensPlayerDomain="https://videos.bentasker.co.uk/";function cE(t){return document.createElement(t)}document.write=function(s){var scripts=document.getElementsByTagName("script");var lastScript=scripts[scripts.length-1];lastScript.insertAdjacentHTML("beforebegin",s)};function guessMimeFromUrl(vidurl){var segs=vidurl.split(".");var ext=segs[segs.length-1];if(!ext){return"video/mp4"}switch(ext.toLowerCase()){case"m3u8":return"application/x-mpegURL";break;case"avi":return"video/avi";break;case"mp3":return"audio/mpeg";break;case"mkv":return"video/x-matroska";break;case"webm":return"video/webm";break;case"mov":return"video/quicktime";break;case"mpg":return"video/mpeg";break;case"mpeg":return"video/mpeg";break;case"mp4":return"video/mp4";break;case"mp4a":return"audio/mp4";break;case"wav":return"audio/wav";break;case"ts":return"video/mp2t";break;case"m3u":return"special/m3uplaylist";break;default:console.log("Calculating mimetime failed for "+vidurl+" ext: "+ext.toLowerCase());return"video/mp4"}}function embedBensPlayer(vidurl,vidtype){vidtype=guessMimeFromUrl(vidurl);var vidid=0;while(true){if(window.BensPlayerInstances.includes(vidid)){vidid++}else{window.BensPlayerInstances.push(vidid);break}}if(vidurl.substring(0,31)!=window.BensPD){vidurl=window.BensPD+vidurl}document.write("<div id='BensplayerWrapper"+vidid+"' class='BensVideoCont'></div>");var c=document.getElementById("BensplayerWrapper"+vidid);var e=cE("link");e.setAttribute("rel","stylesheet");e.setAttribute("href",window.BensPD+"resources/js/videojs/video-js.min.css");c.appendChild(e);playerSettings={vidtype:vidtype,vidurl:vidurl,vidid:vidid};getBensToken(vidid,playerSettings)}function getBensToken(vidid,playerSettings){var ref=encodeURIComponent(window.location.href);var vurl=encodeURIComponent(playerSettings["vidurl"].replace(window.BensPD,""));var url=window.BensPD+"token_endpoint?ref="+ref+"&vidpath="+vurl;var xmlhttp;if(window.XMLHttpRequest){xmlhttp=new XMLHttpRequest}else{xmlhttp=new ActiveXObject("Microsoft.XMLHTTP")}xmlhttp.onreadystatechange=function(){if(xmlhttp.readyState==4){if(xmlhttp.status==200){var j=JSON.parse(xmlhttp.responseText);if(!j["status"]){console.log("Failed to retrieve token for video");embedFailedNotif(vidid);return false}playerSettings["vidurl"]+="?t="+encodeURIComponent(j["token"])+"&e="+encodeURIComponent(j["exp"]);loadVJS(vidid,playerSettings)}else{console.log("Failed to retrieve token for video");embedFailedNotif(vidid);return false}}};xmlhttp.open("GET",url,true);xmlhttp.send()}function writePlayer(vidid,playerSettings){var c=document.getElementById("BensplayerWrapper"+vidid);var width=c.parentNode.clientWidth;var d=cE("div");d.id="videowrapper"+vidid;v=cE("video");v.setAttribute("id","BensVideo"+vidid);v.setAttribute("class","video-js");v.setAttribute("controls","");v.setAttribute("preload","auto");v.setAttribute("width",width);if(window.playerSettings["vidtype"]!="special/m3uplaylist"){var src=cE("source");src.setAttribute("src",playerSettings["vidurl"]);src.setAttribute("type",playerSettings["vidtype"]);v.appendChild(src)}else{pllist=cE("div");pllist.className="vjs-playlist";v.appendChild(pllist);plliststl=cE("link");plliststl.setAttribute("rel","stylesheet");plliststl.setAttribute("href",window.BensPD+"resources/js/playlist-ui/videojs-playlist-ui.vertical.css");document.getElementsByTagName("head")[0].appendChild(plliststl)}d.appendChild(v);c.appendChild(d);var s=cE("script");s.setAttribute("type","text/javascript");ss="window.player"+vidid+" = videojs('BensVideo"+vidid+"',\"{'fluid':true}\", function onPlayerReady(){console.log('Player Ready'); submit(gatherInfo(window.player"+vidid+".currentSrc().split('?')[0],'ready'))});";ss+="window.player"+vidid+".on('playing', function() {submit(gatherInfo(window.player"+vidid+".currentSrc().split('?')[0],'playing'))});";s.innerHTML=ss;c.appendChild(s);if(window.playerSettings["vidtype"]=="special/m3uplaylist"){var s=cE("script");s.innerHTML='var VjsButton = videojs.getComponent("Button"); var nextButton = videojs.extend(VjsButton, { constructor: function(player, options){ VjsButton.call(this, player, options); this.controlText("Next"); }, handleClick: function() { window.player'+vidid+'.playlist.next(); }, buildCSSClass: function() { return "vjs-icon-next-item vjs-control vjs-button"; } }); var prevButton = videojs.extend(VjsButton, { constructor: function(player, options){ VjsButton.call(this, player, options); this.controlText("Previous"); }, handleClick: function() { window.player'+vidid+'.playlist.previous(); }, buildCSSClass: function() { return "vjs-icon-previous-item vjs-control vjs-button"; } }); videojs.registerComponent("prevButton", prevButton); videojs.registerComponent("NextButton", nextButton); window.player'+vidid+'.getChild("controlBar").addChild("prevButton", {}); window.player'+vidid+'.getChild("controlBar").addChild("nextButton", {});';c.appendChild(s);fetchM3U(playerSettings["vidurl"],vidid)}dirname=playerSettings["vidurl"].match(/.*\//);fetchPage(dirname+"details.json",BenswriteSchemaOrg,function(e){},playerSettings)}function loadVJS(vidid,playerSettings){var c=document.getElementById("BensplayerWrapper"+vidid);var e=cE("script");e.setAttribute("type","text/javascript");e.setAttribute("src",window.BensPD+"resources/js/videojs/video.min.js");if(window.playerSettings["vidtype"]=="application/x-mpegURL"){e.onload=function(){loadVJSHLS(vidid,playerSettings)}}else if(window.playerSettings["vidtype"]=="special/m3uplaylist"){e.onload=function(){loadVJSM3U(vidid,playerSettings)}}else{e.onload=function(){writePlayer(vidid,playerSettings)}}c.appendChild(e)}function loadVJSM3U(vidid,playerSettings){var c=document.getElementById("BensplayerWrapper"+vidid);var e=cE("script");e.setAttribute("type","text/javascript");e.setAttribute("src",window.BensPD+"resources/js/playlist/videojs-playlist.js");e.onload=function(){writePlayer(vidid,playerSettings)};c.appendChild(e)}function loadVJSHLS(vidid,playerSettings){var c=document.getElementById("BensplayerWrapper"+vidid);var e=cE("script");e.setAttribute("type","text/javascript");e.setAttribute("src",window.BensPD+"resources/js/videojs-contrib-hls.min.js");e.onload=function(){writePlayer(vidid,playerSettings)};c.appendChild(e)}function fetchPage(url,callback,errcallback,storage){var xmlhttp;if(window.XMLHttpRequest){xmlhttp=new XMLHttpRequest}else{xmlhttp=new ActiveXObject("Microsoft.XMLHTTP")}xmlhttp.onreadystatechange=function(){if(xmlhttp.readyState==4){if(xmlhttp.status==200){callback(xmlhttp.responseText,storage,url)}else{errcallback(xmlhttp.responseText)}}};xmlhttp.open("GET",url,true);xmlhttp.send()}function fetchM3U(vidurl,vidid){window.videoListid=vidid;var oReq=new XMLHttpRequest;oReq.addEventListener("load",parseM3U);oReq.open("GET",vidurl);oReq.send()}function parseM3U(){window.videoList=[];lines=this.responseText.split("\n");domain=window.location.hostname;var o;for(var i=0;i<lines.length;i++){if(lines[i][0]=="#"||lines[i]==""){continue}segs=lines[i].split(".");ext=segs[segs.length-1].toLowerCase();if(ext!="m3u"){playpath=lines[i];if(lines[i][0]=="/"){playpath="https://"+domain+lines[i]}o={sources:[{src:playpath,type:guessMimeFromUrl(lines[i])}]};window.videoList.push(o)}}vidid=window.videoListid;var s=cE("script");s.setAttribute("type","text/javascript");ss="window.player"+vidid+".playlist(window.videoList); window.player"+vidid+".playlist.autoadvance(0);window.player"+vidid+".playlist.first();";s.innerHTML=ss;var c=document.getElementById("BensVideo"+vidid);c.appendChild(s)}function embedFailedNotif(vidid){s=cE("img");s.setAttribute("src",window.BensPD+"resources/embed/failed.png");var c=document.getElementById("BensplayerWrapper"+vidid);var width=c.parentNode.clientWidth;s.setAttribute("style","max-width: "+width+"px");c.appendChild(s)}function BenswriteSchemaOrg(text,storage,url){if(!text||!storage||!url){return}var j=JSON.parse(text);var d=document.getElementById("BensplayerWrapper"+storage["vidid"]);d.setAttribute("itemscope","");d.setAttribute("itemtype","https://schema.org/VideoObject");m=cE("meta");var url=window.BensPlayerDomain+"Player.html?url="+encodeURIComponent(url.replace(window.BensPD,""));m.setAttribute("itemprop","url");m.setAttribute("content",url);d.appendChild(m);if(j.hasOwnProperty("title")){var m=cE("meta");m.setAttribute("itemprop","name");m.setAttribute("content",j["title"]);d.appendChild(m)}if(j.hasOwnProperty("description")){var m=cE("meta");m.setAttribute("itemprop","description");m.setAttribute("content",j["description"].replace(/'/g,""));d.appendChild(m)}if(j.hasOwnProperty("keywords")){var m=cE("meta");m.setAttribute("itemprop","keywords");m.setAttribute("content",j["keywords"].replace(/'/g,""));d.appendChild(m)}var m=cE("meta");m.setAttribute("itemprop","playerType");m.setAttribute("content","html5");d.appendChild(m)}function gatherInfo(vid,state){var tz=(new Date).getTimezoneOffset();return{domain:"videos.bentasker.co.uk",page:vid.replace("https://videos.bentasker.co.uk",""),referrer:document.location.href,referrer_domain:document.location.hostname,platform:navigator.platform,timezone:tz,sess_id:getSessionId(),state:state,responseTime:Date.now()-window.performance.timing.navigationStart}}function getSessionId(){if(!window.analytics_gen_psuedoid){return"none"}var n=randomInteger(1,10);var k=window.location.hostname+"_sess-id";var i=sessionStorage.getItem(k);if(!i||n==5){i=createUUID();sessionStorage.setItem(k,i)}return i}function createUUID(){return"xxxx-xxxx".replace(/[xy]/g,function(c){var r=Math.random()*16|0,v=c=="x"?r:r&3|8;return v.toString(16)})}function submit(info){var xml=new XMLHttpRequest;xml.onreadystatechange=function(){};if(window.location.hostname.toLowerCase().endsWith(".onion")){xml.open("POST",window.analytics_endpoint_onion+"/write")}else{xml.open("POST",window.analytics_endpoint)}xml.setRequestHeader("Content-Type","application/json");xml.send(JSON.stringify(info))}function ping(){if(window.location.hostname.toLowerCase().endsWith(".onion")){var xml=new XMLHttpRequest;xml.onreadystatechange=function(){};xml.open("GET",window.analytics_endpoint_onion+"/ping");xml.send()}}function randomInteger(min,max){return Math.floor(Math.random()*(max-min+1))+min}window.analytics_active=true;window.analytics_gen_psuedoid=true;window.analytics_endpoint="https://pfanalytics.bentasker.co.uk/write";window.analytics_endpoint_onion="http://wftlf4ke7xwqkjrrju4aok57pkr7kfks5t5uqmipxlyjucwjycdql7id.onion";
#