diff --git a/resources/embed/embed.js b/resources/embed/embed.js
--- a/resources/embed/embed.js
+++ b/resources/embed/embed.js
#
@@ -91,6 +91,15 @@ function guessMimeFromUrl(vidurl){
#
+ // videojs can't handle these. VID-5 implements support
#
+ return 'special/m3uplaylist';
#
console.log("Calculating mimetime failed for " + vidurl + " ext: " + ext.toLowerCase());
#
@@ -227,11 +236,13 @@ function writePlayer(vidid,playerSettings){
#
v.setAttribute('width',width);
#
// now create the source
#
- var src = cE('source');
#
- src.setAttribute('src',playerSettings['vidurl']);
#
- src.setAttribute('type',playerSettings['vidtype']);
#
+ if (window.playerSettings['vidtype'] != "special/m3uplaylist"){
#
+ var src = cE('source');
#
+ src.setAttribute('src',playerSettings['vidurl']);
#
+ src.setAttribute('type',playerSettings['vidtype']);
#
@@ -244,6 +255,13 @@ function writePlayer(vidid,playerSettings){
#
+ if (window.playerSettings['vidtype'] == "special/m3uplaylist"){
#
+ // The player now exists, so we need to build the playlist
#
+ fetchM3U(playerSettings['vidurl'],vidid);
#
// VID-9 check for metadata and write schema.org markup if it exists
#
dirname = playerSettings['vidurl'].match(/.*\//);
#
fetchPage(dirname + 'details.json',BenswriteSchemaOrg,function(e){},playerSettings);
#
@@ -258,6 +276,9 @@ function loadVJS(vidid,playerSettings){
#
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); };
#
e.onload = function () { writePlayer(vidid,playerSettings); };
#
@@ -266,6 +287,16 @@ function loadVJS(vidid,playerSettings){
#
+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); };
#
function loadVJSHLS(vidid,playerSettings){
#
var c = document.getElementById('BensplayerWrapper'+vidid);
#
@@ -300,6 +331,63 @@ function fetchPage(url,callback,errcallback,storage){
#
+function fetchM3U(vidurl,vidid){
#
+ window.videoListid = vidid; // This'll prevent multi-player support for M3Us, but that can be fixed later
#
+ var oReq = new XMLHttpRequest();
#
+ oReq.addEventListener("load", parseM3U);
#
+ oReq.open("GET", vidurl);
#
+ window.videoList = [];
#
+ lines = this.responseText.split('\n');
#
+ domain = window.location.hostname;
#
+ for (var i=0; i<lines.length; i++){
#
+ if (lines[i][0] == "#" || lines[i] == ""){
#
+ // It's a comment/metadata, skip
#
+ segs = lines[i].split(".")
#
+ ext = segs[segs.length - 1].toLowerCase()
#
+ // Don't include M3Us, the player will bork
#
+ if (lines[i][0] == "/"){
#
+ // relative URL, prepend the current domain
#
+ // Todo: should really make this the domain of the playlist
#
+ playpath = 'https://'+domain+lines[i];
#
+ 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();";
#
+ var c = document.getElementById('BensVideo'+vidid);
#
function embedFailedNotif(vidid){