Add viewer count to web UI
parent
dd940ff46f
commit
aa111acdfb
|
@ -80,9 +80,10 @@ async function render(path, s){
|
||||||
else var usr = path.substring(7);
|
else var usr = path.substring(7);
|
||||||
var config = JSON.parse(await makeRequest("GET", '/api/'+usr+'/config'));
|
var config = JSON.parse(await makeRequest("GET", '/api/'+usr+'/config'));
|
||||||
if(!config.title){document.body.innerHTML = nunjucks.render('404.njk', context); break;}
|
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));
|
document.body.innerHTML = nunjucks.render('user.njk', Object.assign({about: config.about, title: config.title, username: config.username, viewers: config.viewers}, context));
|
||||||
modifyLinks();
|
modifyLinks();
|
||||||
initPlayer(usr);
|
initPlayer(usr);
|
||||||
|
updateViewers();
|
||||||
break;
|
break;
|
||||||
case (path.match(/^\/vods\/.+\/manage\/?$/) || {}).input: // /vods/:user/manage
|
case (path.match(/^\/vods\/.+\/manage\/?$/) || {}).input: // /vods/:user/manage
|
||||||
var usr = path.substring(6, (path.length - 7));
|
var usr = path.substring(6, (path.length - 7));
|
||||||
|
@ -177,6 +178,18 @@ function modifyLinks() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async function updateViewers(){
|
||||||
|
let vc = document.getElementById('viewercount');
|
||||||
|
if(!vc) return false;
|
||||||
|
let path = window.location.pathname;
|
||||||
|
if(path.substring(path.length - 1).indexOf('/') !== -1)
|
||||||
|
var usr = path.substring(7, path.length - 1);
|
||||||
|
else var usr = path.substring(7);
|
||||||
|
let viewers = JSON.parse(await makeRequest("GET", "/api/"+usr+"/config")).viewers;
|
||||||
|
vc.innerHTML = "[Viewers: "+viewers+"]";
|
||||||
|
setTimeout(updateViewers, 2000);
|
||||||
|
}
|
||||||
|
|
||||||
function internalLink(path){
|
function internalLink(path){
|
||||||
this.render(path);
|
this.render(path);
|
||||||
return false;
|
return false;
|
||||||
|
|
|
@ -476,7 +476,7 @@ async function initSite(openReg) {
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
app.get('/users/:user', (req, res) => {
|
app.get('/users/:user', (req, res) => {
|
||||||
db.query('select username,title,about from user_meta where username='+db.raw.escape(req.params.user)).then((result) => {
|
db.query('select username,title,about,viewers from user_meta where username='+db.raw.escape(req.params.user)).then((result) => {
|
||||||
if(result[0]){
|
if(result[0]){
|
||||||
if(tryDecode(req.cookies.Authorization)) {
|
if(tryDecode(req.cookies.Authorization)) {
|
||||||
res.render('user.njk', Object.assign(result[0], {auth: {is: true, name: JWT.decode(req.cookies.Authorization)['username']}}, njkconf));
|
res.render('user.njk', Object.assign(result[0], {auth: {is: true, name: JWT.decode(req.cookies.Authorization)['username']}}, njkconf));
|
||||||
|
|
|
@ -5,7 +5,6 @@
|
||||||
shakaPolyFilled = false;
|
shakaPolyFilled = false;
|
||||||
var manifestUri = document.location.protocol+'//'+document.location.host+'/live/{{ username }}/index.mpd';
|
var manifestUri = document.location.protocol+'//'+document.location.host+'/live/{{ username }}/index.mpd';
|
||||||
async function initPlayer() {
|
async function initPlayer() {
|
||||||
console.log('Trying to initialize player.');
|
|
||||||
if(!shakaPolyFilled){
|
if(!shakaPolyFilled){
|
||||||
shaka.polyfill.installAll();
|
shaka.polyfill.installAll();
|
||||||
shakaPolyFilled = true;
|
shakaPolyFilled = true;
|
||||||
|
@ -58,9 +57,22 @@ function newPopup(url) {
|
||||||
popupWindow = window.open(
|
popupWindow = window.open(
|
||||||
url,'popUpWindow','height=700,width=450,scrollbars=yes,toolbar=no,menubar=no,location=no,directories=no,status=yes')
|
url,'popUpWindow','height=700,width=450,scrollbars=yes,toolbar=no,menubar=no,location=no,directories=no,status=yes')
|
||||||
}
|
}
|
||||||
|
async function updateViewers(){
|
||||||
|
let vc = document.getElementById('viewercount');
|
||||||
|
if(!vc) return false;
|
||||||
|
let path = window.location.pathname;
|
||||||
|
if(path.substring(path.length - 1).indexOf('/') !== -1)
|
||||||
|
var usr = path.substring(7, path.length - 1);
|
||||||
|
else var usr = path.substring(7);
|
||||||
|
let viewers = JSON.parse(await makeRequest("GET", "/api/"+usr+"/config")).viewers;
|
||||||
|
vc.innerHTML = "[Viewers: "+viewers+"]";
|
||||||
|
setTimeout(updateViewers, 2000);
|
||||||
|
}
|
||||||
</script>
|
</script>
|
||||||
</br>
|
</br>
|
||||||
<span style="float: left;font-size: large;"><a href="/live/{{ username }}/index.mpd">{{ username }}</a> | {{ title | escape }}</b></span><span style="float: right;font-size: large;"> Links | <a href="rtmp://{{ domain }}/live/{{ username }}">Watch</a> <a href="JavaScript:newPopup('/chat?room={{ username }}');">Chat</a> <a href="/vods/{{ username }}">VODs</a></span>
|
<span style="float: left;font-size: large;"><a href="/live/{{ username }}/index.mpd">{{ username }}</a> | {{ title | escape }}<span id="viewercount" onload="updateViewers">[Viewers: {{viewers}}]</span>
|
||||||
|
<script>updateViewers()</script>
|
||||||
|
</b></span><span style="float: right;font-size: large;"> Links | <a href="rtmp://{{ domain }}/live/{{ username }}">Watch</a> <a href="JavaScript:newPopup('/chat?room={{ username }}');">Chat</a> <a href="/vods/{{ username }}">VODs</a></span>
|
||||||
<div id="jscontainer">
|
<div id="jscontainer">
|
||||||
<div id="jschild" style="width: 70%;height: 100%;position: relative;">
|
<div id="jschild" style="width: 70%;height: 100%;position: relative;">
|
||||||
<image id="playbtn" src="/play.svg" alt="Play Stream" style="width:100%;height:100%;width: 950px;height: 534px;position: absolute;" onclick="document.getElementById('video').paused ? document.getElementById('video').play() : document.getElementById('video') .pause();"></image>
|
<image id="playbtn" src="/play.svg" alt="Play Stream" style="width:100%;height:100%;width: 950px;height: 534px;position: absolute;" onclick="document.getElementById('video').paused ? document.getElementById('video').play() : document.getElementById('video') .pause();"></image>
|
||||||
|
|
Reference in New Issue