diff --git a/site/index.html b/site/index.html index cd6342b..d3c0047 100644 --- a/site/index.html +++ b/site/index.html @@ -3,12 +3,13 @@ <link rel="stylesheet" type="text/css" href="/styles.css"> <link rel="stylesheet" type="text/css" href="/local.css"> <link rel="icon" type="image/svg" href="/logo.svg"> + <script src="/nunjucks-slim.js"></script> <script src="/templates.js"></script> + <script src="/dashjs/dash.all.min.js"></script> + <script> nunjucks.configure({ autoescape: true }); - </script> - <script> //should check for and refresh login tokens on pageload.. if(document.cookie.match(/^(.*;)?\s*X-Auth-As\s*=\s*[^;]+(.*)?$/) !== null) { var xhr = new XMLHttpRequest(); diff --git a/site/index.js b/site/index.js index 8a06b30..e1fadfc 100644 --- a/site/index.js +++ b/site/index.js @@ -80,6 +80,7 @@ async function render(path){ if(!config.title){document.body.innerHTML = nunjucks.render('404.njk', context); break;} document.body.innerHTML = nunjucks.render('user.njk', Object.assign({about: config.about, title: config.title, username: config.username}, context)); modifyLinks(); + startVideo(); break; case (path.match(/^\/vods\/.+\/manage\/?$/) || {}).input: // /vods/:user/manage var usr = path.substring(6, (path.length - 7)); @@ -167,4 +168,43 @@ function modifyLinks() { function internalLink(path){ this.render(path); return false; +} + +//start dash.js +async function startVideo(){ + //var url = "/live/{{username}}/index.mpd"; + //var player = dashjs.MediaPlayer().create(); + //player.initialize(document.querySelector("#videoPlayer"), url, true); + //console.log('called startvideo'); + while(true){ + if(document.querySelector('#videoPlayer') === null) + break; + + if(window.location.pathname.substring(window.location.pathname.length - 1) !== '/'){ + var url = "/api/"+window.location.pathname.substring(7)+"/config"; + console.log(url) + var xhr = JSON.parse(await makeRequest("GET", url)); + if(xhr.live){ + var player = dashjs.MediaPlayer().create(); + player.initialize(document.querySelector("#videoPlayer"), url, true); + break; + } + } + + else{ + var url = "/api/"+window.location.pathname.substring(7, window.location.pathname.length - 1)+"/config"; + console.log(url) + var xhr = JSON.parse(await makeRequest("GET", url)); + if(xhr.live){ + var player = dashjs.MediaPlayer().create(); + player.initialize(document.querySelector("#videoPlayer"), url, true); + break; + } + } + await sleep(60000); + } +} + +function sleep(ms) { + return new Promise(resolve => setTimeout(resolve, ms)); } \ No newline at end of file diff --git a/templates/user.njk b/templates/user.njk index d00c82e..09aa4c1 100644 --- a/templates/user.njk +++ b/templates/user.njk @@ -4,12 +4,43 @@ <link rel="stylesheet" type="text/css" href="/videojs/video-js.min.css">--> <script src="/dashjs/dash.all.min.js"></script> <script> - function startVideo(){ - var url = "/live/{{username}}/index.mpd"; - var player = dashjs.MediaPlayer().create(); - player.initialize(document.querySelector("#videoPlayer"), url, true); - console.log('called startvideo'); - } + async function startVideo(){ + //var url = "/live/{{username}}/index.mpd"; + //var player = dashjs.MediaPlayer().create(); + //player.initialize(document.querySelector("#videoPlayer"), url, true); + //console.log('called startvideo'); + while(true){ + if(document.querySelector('#videoPlayer') === null) + break; + + if(window.location.pathname.substring(window.location.pathname.length - 1) !== '/'){ + var url = "/api/"+window.location.pathname.substring(7)+"/config"; + console.log(url) + var xhr = JSON.parse(await makeRequest("GET", url)); + if(xhr.live){ + var player = dashjs.MediaPlayer().create(); + player.initialize(document.querySelector("#videoPlayer"), url, true); + break; + } + } + + else{ + var url = "/api/"+window.location.pathname.substring(7, window.location.pathname.length - 1)+"/config"; + console.log(url) + var xhr = JSON.parse(await makeRequest("GET", url)); + if(xhr.live){ + var player = dashjs.MediaPlayer().create(); + player.initialize(document.querySelector("#videoPlayer"), url, true); + break; + } + } + await sleep(60000); + } +} + +function sleep(ms) { + return new Promise(resolve => setTimeout(resolve, ms)); +} </script> {% endblock %} {% block content %} @@ -28,7 +59,7 @@ function newPopup(url) { <!--this spits errors fucking constantly after it tries to reload a video that's already running.. I dunno if it's bad or causing problems so let's just push it to develop and wait for issues!--> <!--it plays the stream without reloading the page tho lol--> - <script>window.setInterval(startVideo, 60000)</script> + <script>startVideo()</script> </div> <div id="jschild" class="webchat" style="width: 30%;height: 100%;position: relative;"> <iframe src="/chat?room={{ username }}" frameborder="0" style="width: 100%;height: 100%; min-height: 534px;" allowfullscreen></iframe>