From 2facc798cdd47eb56c12abf0f4d83331c9071aa0 Mon Sep 17 00:00:00 2001
From: Jerry Yan <792602257@qq.com>
Date: Wed, 19 May 2021 13:17:40 +0800
Subject: [PATCH] =?UTF-8?q?=E5=90=88=E5=B9=B6=E5=BD=95=E6=92=AD?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 static/device.js      | 26 +++++++++++++
 static/index.js       | 59 +++++++++++++++++++++++++++++
 templates/device.html | 30 +++++++++++++++
 templates/files.html  | 26 +++++++++++++
 templates/index.html  | 86 +++++++++++++++++++++++++++++++++++++++++++
 5 files changed, 227 insertions(+)
 create mode 100644 static/device.js
 create mode 100644 static/index.js
 create mode 100644 templates/device.html
 create mode 100644 templates/files.html
 create mode 100644 templates/index.html

diff --git a/static/device.js b/static/device.js
new file mode 100644
index 0000000..12ece79
--- /dev/null
+++ b/static/device.js
@@ -0,0 +1,26 @@
+function deviceUpdate(){
+        $.ajax(
+        "/stats/device",
+        {
+            success: function (res){
+                $("#memTotal").text(res.data.status.memTotal)
+                $("#memUsed").text(res.data.status.memUsed)
+                $("#memUsage").text(res.data.status.memUsage)
+                $("#diskTotal").text(res.data.status.diskTotal)
+                $("#diskUsed").text(res.data.status.diskUsed)
+                $("#diskUsage").text(res.data.status.diskUsage)
+                $("#cpu").text(res.data.status.cpu)
+                $("#memUsageP").val(res.data.status.memUsage)
+                $("#diskUsageP").val(res.data.status.diskUsage)
+                $("#cpuP").val(res.data.status.cpu)
+                $("#inSpeed").text(res.data.status.inSpeed)
+                $("#outSpeed").text(res.data.status.outSpeed)
+                $("#doCleanTime").text(res.data.status.doCleanTime)
+                $("#fileExpire").text(res.data.status.fileExpire)
+            }
+        }
+    )
+}
+
+deviceUpdate()
+setInterval(deviceUpdate,2000)
diff --git a/static/index.js b/static/index.js
new file mode 100644
index 0000000..4ad9983
--- /dev/null
+++ b/static/index.js
@@ -0,0 +1,59 @@
+function taskUpdate(){
+    $.ajax(
+        "/stats",
+        {
+            success: function (res){
+                $("#broadcaster").text(res.data.broadcast.broadcaster)
+                $("#isBroadcasting").text(res.data.broadcast.isBroadcasting)
+                $("#streamUrl").text(res.data.broadcast.streamUrl)
+                $("#delayTime").text(res.data.broadcast.delayTime)
+                $("#forceNotBroadcasting").text(res.data.config.forceNotBroadcasting)
+                $("#forceNotDownload").text(res.data.config.forceNotDownload)
+                $("#forceNotUpload").text(res.data.config.forceNotUpload)
+                $("#forceNotEncode").text(res.data.config.forceNotEncode)
+                $("#downloadOnly").text(res.data.config.downloadOnly)
+                $("#updateTime").text(res.data.broadcast.updateTime)
+                $("#encodeQueueSize").text(res.data.encodeQueueSize)
+                $("#uploadQueueSize").text(res.data.uploadQueueSize)
+                $("#download").html(function(){
+                    var ret = ""
+                    res.data.download.reverse().forEach(function(obj){
+                        ret += "<tr><td class='time'>" + obj.datetime + "</td><td>" + obj.message + "</td></tr>"
+                    })
+                    return "<table>" + ret + "</table>"
+                })
+                $("#encode").html(function(){
+                    var ret = ""
+                    res.data.encode.reverse().forEach(function(obj){
+                        ret += "<tr><td class='time'>" + obj.datetime + "</td><td>" + obj.message + "</td></tr>"
+                    })
+                    return "<table>" + ret + "</table>"
+                })
+                $("#upload").html(function(){
+                    var ret = ""
+                    res.data.upload.reverse().forEach(function(obj){
+                        ret += "<tr><td class='time'>" + obj.datetime + "</td><td>" + obj.message + "</td></tr>"
+                    })
+                    return "<table>" + ret + "</table>"
+                })
+                $("#error").html(function(){
+                    var ret = ""
+                    res.data.error.reverse().forEach(function(obj){
+                        ret += "<tr><td class='time'>" + obj.datetime + "</td><td>" + obj.message + "</td></tr>"
+                    })
+                    return "<table>" + ret + "</table>"
+                })
+                $("#operation").html(function(){
+                    var ret = ""
+                    res.data.operation.reverse().forEach(function(obj){
+                        ret += "<tr><td class='time'>" + obj.datetime + "</td><td>" + obj.message + "</td></tr>"
+                    })
+                    return "<table>" + ret + "</table>"
+                })
+            }
+        }
+    )
+}
+
+taskUpdate()
+setInterval(taskUpdate,8000)
diff --git a/templates/device.html b/templates/device.html
new file mode 100644
index 0000000..8d878c7
--- /dev/null
+++ b/templates/device.html
@@ -0,0 +1,30 @@
+    <h1>机器状态</h1>
+    <table>
+        <tr>
+            <td class='title'>CPU使用率</td>
+            <td><progress id="cpuP" max="100" value="0"></progress></td>
+            <td><span id="cpu"></span>%</td>
+        </tr>
+        <tr>
+            <td class='title'>内存使用率</td>
+            <td><progress id="memUsageP" max="100" value="0"></progress></td>
+            <td><span id="memUsed"></span>/<span id="memTotal"></span>(<span id="memUsage"></span>%)</td>
+        </tr>
+        <tr>
+            <td class='title'>磁盘使用率</td>
+            <td><progress id="diskUsageP" max="100" value="0"></progress></td>
+            <td><span id="diskUsed"></span>/<span id="diskTotal"></span>(<span id="diskUsage"></span>%)</td>
+        </tr>
+        <tr>
+            <td class='title'>网络速率</td>
+            <td>↓ <span id="inSpeed"></span>/s</td>
+            <td>↑ <span id="outSpeed"></span>/s</td>
+        </tr>
+        <tr>
+            <td class='title'>文件清理</td>
+            <td>清理<span id="fileExpire"></span>天前的文件</td>
+            <td>@ <span id="doCleanTime"></span></td>
+        </tr>
+    </table>
+    <script src="/static/device.js"></script>
+
diff --git a/templates/files.html b/templates/files.html
new file mode 100644
index 0000000..40221cb
--- /dev/null
+++ b/templates/files.html
@@ -0,0 +1,26 @@
+<!DOCTYPE html>
+<html lang="zh_CN">
+<head>
+    <title>文件</title>
+    {% include 'head.html' %}
+</head>
+<body>
+<div>
+    <h1>所有录像文件</h1>
+    <p>部分录像文件已转移至百度云,请在<a href="https://pan.baidu.com/s/1ECnwiHnsm-3dSXNJGWlR2g">这里</a>下载 提取码: ddxt</p>
+    <table>
+        <tr>
+            <td>文件名</td><td>文件大小</td><td>链接</td>
+        </tr>
+        {%for i in files %}
+        <tr>
+            <td>{{i.name}}</td><td>{{i.size}}</td><td><a href="/files/download/{{i.name}}">下载文件</a></td>
+        </tr>
+        {% endfor %}
+    </table>
+    <hr/>
+    <h3><a href="/">录播信息页</a></h3>
+    {% include 'device.html' %}
+</div>
+</body>
+</html>
\ No newline at end of file
diff --git a/templates/index.html b/templates/index.html
new file mode 100644
index 0000000..351910a
--- /dev/null
+++ b/templates/index.html
@@ -0,0 +1,86 @@
+<!DOCTYPE html>
+<html lang="zh_CN">
+<head>
+    <title>录播</title>
+    {% include 'head.html' %}
+</head>
+<body>
+<div>
+    <h1>基本信息</h1>
+    <table>
+        <tr>
+            <td>主播名</td>
+            <td><span id="broadcaster"></span></td>
+        </tr>
+        <tr>
+            <td>是否正在直播</td>
+            <td><span id="isBroadcasting"></span></td>
+        </tr>
+        <tr>
+            <td>直播视频流地址</td>
+            <td><span id="streamUrl"></span></td>
+        </tr>
+        <tr>
+            <td>信息更新时间</td>
+            <td><span id="updateTime"></span></td>
+        </tr>
+        <tr>
+            <td>延迟投稿时间</td>
+            <td><span id="delayTime"></span></td>
+        </tr>
+    </table>
+    <hr/>
+    <h1>特殊设置</h1>
+    <table>
+        <tr>
+            <td>是否设置强制认为不直播</td>
+            <td><span id="forceNotBroadcasting"></span></td>
+        </tr>
+        <tr>
+            <td>是否设置强制不下载</td>
+            <td><span id="forceNotDownload"></span></td>
+        </tr>
+        <tr>
+            <td>是否设置强制不上传</td>
+            <td><span id="forceNotUpload"></span></td>
+        </tr>
+        <tr>
+            <td>是否设置强制不转码</td>
+            <td><span id="forceNotEncode"></span></td>
+        </tr>
+        <tr>
+            <td>是否设置为仅下载(不上传不转码)</td>
+            <td><span id="downloadOnly"></span></td>
+        </tr>
+    </table>
+    <hr/>
+    <h1>当前状态</h1>
+    <table>
+        <tr>
+            <td class='title'>下载日志</td>
+            <td><span id="download"></span></td>
+        </tr>
+        <tr>
+            <td class='title'>转码日志<br>队列<span id="encodeQueueSize"></span></td>
+            <td><span id="encode"></span></td>
+        </tr>
+        <tr>
+            <td class='title'>上传日志<br>队列<span id="uploadQueueSize"></span></td>
+            <td><span id="upload"></span></td>
+        </tr>
+        <tr>
+            <td class='title'>错误日志</td>
+            <td><span id="error"></span></td>
+        </tr>
+        <tr>
+            <td class='title'>操作日志</td>
+            <td><span id="operation"></span></td>
+        </tr>
+    </table>
+    <hr/>
+    <h3><a href="/files/">所有录播文件</a></h3>
+    {% include 'device.html' %}
+</div>
+<script src="../static/index.js"></script>
+</body>
+</html>
\ No newline at end of file