From 4e590380f5bee6e5d27f6881ae08f152486f1ba3 Mon Sep 17 00:00:00 2001 From: linyqh Date: Thu, 5 Dec 2024 22:36:17 +0800 Subject: [PATCH] =?UTF-8?q?feat(webui):=20=E6=B7=BB=E5=8A=A0=E7=B3=BB?= =?UTF-8?q?=E7=BB=9F=E8=AE=BE=E7=BD=AE=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增系统设置面板,包含清理缓存、关键帧、裁剪视频和任务目录的功能- 实现清理指定目录的通用函数 clear_directory - 更新中文翻译文件,添加相关提示信息 --- webui.py | 4 ++- webui/components/system_settings.py | 45 +++++++++++++++++++++++++++++ webui/i18n/zh.json | 13 ++++++++- 3 files changed, 60 insertions(+), 2 deletions(-) create mode 100644 webui/components/system_settings.py diff --git a/webui.py b/webui.py index 5d00d01..434cbb9 100644 --- a/webui.py +++ b/webui.py @@ -3,7 +3,7 @@ import os import sys from uuid import uuid4 from app.config import config -from webui.components import basic_settings, video_settings, audio_settings, subtitle_settings, script_settings, review_settings, merge_settings +from webui.components import basic_settings, video_settings, audio_settings, subtitle_settings, script_settings, review_settings, merge_settings, system_settings from webui.utils import cache, file_utils from app.utils import utils from app.models.schema import VideoClipParams, VideoAspect @@ -190,6 +190,8 @@ def main(): audio_settings.render_audio_panel(tr) with panel[2]: subtitle_settings.render_subtitle_panel(tr) + # 渲染系统设置面板 + system_settings.render_system_panel(tr) # 渲染视频审查面板 review_settings.render_review_panel(tr) diff --git a/webui/components/system_settings.py b/webui/components/system_settings.py new file mode 100644 index 0000000..82e9592 --- /dev/null +++ b/webui/components/system_settings.py @@ -0,0 +1,45 @@ +import streamlit as st +import os +import shutil +from loguru import logger + +from app.utils.utils import storage_dir + + +def clear_directory(dir_path, tr): + """清理指定目录""" + if os.path.exists(dir_path): + try: + for item in os.listdir(dir_path): + item_path = os.path.join(dir_path, item) + try: + if os.path.isfile(item_path): + os.unlink(item_path) + elif os.path.isdir(item_path): + shutil.rmtree(item_path) + except Exception as e: + logger.error(f"Failed to delete {item_path}: {e}") + st.success(tr("Directory cleared")) + logger.info(f"Cleared directory: {dir_path}") + except Exception as e: + st.error(f"{tr('Failed to clear directory')}: {str(e)}") + logger.error(f"Failed to clear directory {dir_path}: {e}") + else: + st.warning(tr("Directory does not exist")) + +def render_system_panel(tr): + """渲染系统设置面板""" + with st.expander(tr("System settings"), expanded=False): + col1, col2, col3 = st.columns(3) + + with col1: + if st.button(tr("Clear frames"), use_container_width=True): + clear_directory(os.path.join(storage_dir(), "temp/keyframes"), tr) + + with col2: + if st.button(tr("Clear clip videos"), use_container_width=True): + clear_directory(os.path.join(storage_dir(), "temp/clip_video"), tr) + + with col3: + if st.button(tr("Clear tasks"), use_container_width=True): + clear_directory(os.path.join(storage_dir(), "tasks"), tr) diff --git a/webui/i18n/zh.json b/webui/i18n/zh.json index 3e4398e..1f42d1d 100644 --- a/webui/i18n/zh.json +++ b/webui/i18n/zh.json @@ -166,6 +166,17 @@ "Subtitle Path": "字幕路径", "Enable Proxy": "启用代理", "QwenVL model is available": "QwenVL 模型可用", - "QwenVL model is not available": "QwenVL 模型不可用" + "QwenVL model is not available": "QwenVL 模型不可用", + "System settings": "系统设置", + "Clear Cache": "清理缓存", + "Cache cleared": "缓存清理完成", + "storage directory does not exist": "storage目录不存在", + "Failed to clear cache": "清理缓存失败", + "Clear frames": "清理关键帧", + "Clear clip videos": "清理裁剪视频", + "Clear tasks": "清理任务", + "Directory cleared": "目录清理完成", + "Directory does not exist": "目录不存在", + "Failed to clear directory": "清理目录失败" } }