From 04b9f39fb9b7fa964f3c72a2cc9d4fa2888b58c1 Mon Sep 17 00:00:00 2001
From: Jerry Yan <792602257@qq.com>
Date: Fri, 22 Apr 2022 17:44:50 +0800
Subject: [PATCH] =?UTF-8?q?=E7=9B=AE=E5=BD=95=E4=BD=8D=E7=BD=AE=E5=8F=8A?=
 =?UTF-8?q?=E5=AE=B9=E9=87=8F?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 controller/api/collector_blueprint.py | 26 ++++++++++++++++++++++++-
 templates/index.html                  | 28 ++++++++++++++++++++++++---
 2 files changed, 50 insertions(+), 4 deletions(-)

diff --git a/controller/api/collector_blueprint.py b/controller/api/collector_blueprint.py
index 5d2a161..2a31267 100644
--- a/controller/api/collector_blueprint.py
+++ b/controller/api/collector_blueprint.py
@@ -1,15 +1,39 @@
+import os.path
 import platform
 
+import psutil
 from flask import Blueprint, jsonify
+
+from config import DANMAKU_FACTORY_EXEC, FFMPEG_EXEC, BILILIVE_RECORDER_DIRECTORY, XIGUALIVE_RECORDER_DIRECTORY
 from util.system import check_exec
-from config import DANMAKU_FACTORY_EXEC, FFMPEG_EXEC
 
 blueprint = Blueprint("api_collector", __name__, url_prefix="/api/collector")
 
 
+def _get_disk_info(path):
+    if os.path.isdir(path):
+        disk_info = psutil.disk_usage(path)
+        return {
+            'exist': True,
+            'percent': disk_info.percent,
+            'free': disk_info.free / (1024 ** 2),
+            'total': disk_info.total / (1024 ** 2)
+        }
+    else:
+        return {
+            'exist': False,
+            'percent': 0,
+            'free': 0,
+            'total': 0
+        }
+
 @blueprint.get("/")
 def collect_basic_status():
     return jsonify({
+        'disk': {
+            'bili': _get_disk_info(BILILIVE_RECORDER_DIRECTORY),
+            'xigua': _get_disk_info(XIGUALIVE_RECORDER_DIRECTORY)
+        },
         'exec': {
             'ffmpeg': check_exec(FFMPEG_EXEC),
             'danmaku': check_exec(DANMAKU_FACTORY_EXEC),
diff --git a/templates/index.html b/templates/index.html
index 60ca433..abee353 100644
--- a/templates/index.html
+++ b/templates/index.html
@@ -124,11 +124,19 @@
         <tbody>
         <tr>
             <td>B站录播姬目录</td>
-            <td>{{ config.recorder.bili_dir }}</td>
+            <td :class="{warning: !collector.basic.disk.bili.exist, success: collector.basic.disk.bili.exist}">{{ config.recorder.bili_dir }}</td>
+        </tr>
+        <tr>
+            <td>使用率 {{ collector.basic.disk.bili.percent }}%</td>
+            <td :class="{warning: !collector.basic.disk.bili.exist}">{{ collector.basic.disk.bili.free }}M / {{ collector.basic.disk.bili.total }}M</td>
         </tr>
         <tr>
             <td>西瓜视频录播目录</td>
-            <td>{{ config.recorder.xigua_dir }}</td>
+            <td :class="{warning: !collector.basic.disk.xigua.exist, success: collector.basic.disk.xigua.exist}">{{ config.recorder.xigua_dir }}</td>
+        </tr>
+        <tr>
+            <td>使用率 {{ collector.basic.disk.bili.percent }}%</td>
+            <td :class="{warning: !collector.basic.disk.xigua.exist}">{{ collector.basic.disk.xigua.free }}M / {{ collector.basic.disk.xigua.total }}M</td>
         </tr>
         </tbody>
     </table>
@@ -148,8 +156,22 @@
                         },
                         system: {
                             os: "",
+                        },
+                        disk: {
+                            bili: {
+                                exist: false,
+                                percent: 0,
+                                free: 0,
+                                total: 0
+                            },
+                            xigua: {
+                                exist: false,
+                                percent: 0,
+                                free: 0,
+                                total: 0
+                            }
                         }
-                    }
+                    },
                 },
                 config: {
                     danmaku: {