felix1968839 commited on
Commit
728fd98
·
verified ·
1 Parent(s): 3f5e36a

配置自动保存功能

Browse files
Files changed (1) hide show
  1. app.py +29 -8
app.py CHANGED
@@ -1,6 +1,6 @@
1
  import streamlit as st
2
  import os
3
- from utils import VideoUtils
4
  from stt_module import STTManager
5
  from translator import Translator
6
  import tempfile
@@ -9,6 +9,9 @@ from dotenv import load_dotenv
9
  # 加载 .env 文件中的配置
10
  load_dotenv()
11
 
 
 
 
12
  # 取消 Streamlit 上传限制(虽然主要通过命令行配置,但在脚本中提醒用户)
13
  # 实际上 Streamlit 的服务器配置需要在运行命令时指定,或者写在 config.toml 中
14
  # 我们这里先通过 UI 提醒用户
@@ -50,13 +53,13 @@ st.title("🎬 AI 媒体字幕提取与翻译")
50
  with st.sidebar:
51
  st.header("⚙️ 配置参数")
52
 
53
- # 从环境变量读取默认值,如果没有则为空字符串或预设值
54
- default_api_key = os.getenv("API_KEY", "")
55
- default_base_url = os.getenv("BASE_URL", "https://api.siliconflow.cn/v1")
56
- default_model = os.getenv("MODEL_NAME", "THUDM/glm-4-9b-chat")
57
- default_stt_size = os.getenv("STT_MODEL_SIZE", "base")
58
- default_lang = os.getenv("TARGET_LANG", "中文")
59
- default_device = os.getenv("DEVICE", "cpu")
60
 
61
  api_key = st.text_input("API Key", value=default_api_key, type="password", help="输入 API Key", disabled=st.session_state.processing)
62
  base_url = st.text_input("API Base URL", value=default_base_url, disabled=st.session_state.processing)
@@ -111,6 +114,17 @@ with st.sidebar:
111
  lang_index = lang_options.index(default_lang) if default_lang in lang_options else 0
112
  target_lang = st.selectbox("目标语言", lang_options, index=lang_index, disabled=st.session_state.processing)
113
 
 
 
 
 
 
 
 
 
 
 
 
114
  if st.session_state.processing:
115
  st.divider()
116
  if st.button("⏹️ 强制停止任务", type="secondary", use_container_width=True):
@@ -220,6 +234,9 @@ with tab1:
220
  VideoUtils.write_srt(all_translated_segments, trans_srt_path)
221
 
222
  status.update(label="处理完成!", state="complete", expanded=False)
 
 
 
223
 
224
  # 保存结果到 session_state
225
  st.session_state.process_results = {
@@ -344,6 +361,10 @@ with tab2:
344
  "trans_srt": temp_trans_srt.name
345
  }
346
  st.success("翻译完成!")
 
 
 
 
347
  st.session_state.processing = False
348
  st.rerun()
349
  except Exception as e:
 
1
  import streamlit as st
2
  import os
3
+ from utils import VideoUtils, SettingsManager
4
  from stt_module import STTManager
5
  from translator import Translator
6
  import tempfile
 
9
  # 加载 .env 文件中的配置
10
  load_dotenv()
11
 
12
+ # 加载本地保存的设置
13
+ saved_settings = SettingsManager.load_settings()
14
+
15
  # 取消 Streamlit 上传限制(虽然主要通过命令行配置,但在脚本中提醒用户)
16
  # 实际上 Streamlit 的服务器配置需要在运行命令时指定,或者写在 config.toml 中
17
  # 我们这里先通过 UI 提醒用户
 
53
  with st.sidebar:
54
  st.header("⚙️ 配置参数")
55
 
56
+ # 从本地保存的设置或环境变量读取默认值
57
+ default_api_key = saved_settings.get("API_KEY", os.getenv("API_KEY", ""))
58
+ default_base_url = saved_settings.get("BASE_URL", os.getenv("BASE_URL", "https://api.siliconflow.cn/v1"))
59
+ default_model = saved_settings.get("MODEL_NAME", os.getenv("MODEL_NAME", "THUDM/glm-4-9b-chat"))
60
+ default_stt_size = saved_settings.get("STT_MODEL_SIZE", os.getenv("STT_MODEL_SIZE", "base"))
61
+ default_lang = saved_settings.get("TARGET_LANG", os.getenv("TARGET_LANG", "中文"))
62
+ default_device = saved_settings.get("DEVICE", os.getenv("DEVICE", "cpu"))
63
 
64
  api_key = st.text_input("API Key", value=default_api_key, type="password", help="输入 API Key", disabled=st.session_state.processing)
65
  base_url = st.text_input("API Base URL", value=default_base_url, disabled=st.session_state.processing)
 
114
  lang_index = lang_options.index(default_lang) if default_lang in lang_options else 0
115
  target_lang = st.selectbox("目标语言", lang_options, index=lang_index, disabled=st.session_state.processing)
116
 
117
+ # 保存当前配置到本地文件的辅助函数
118
+ def save_current_settings():
119
+ SettingsManager.save_settings({
120
+ "API_KEY": api_key,
121
+ "BASE_URL": base_url,
122
+ "MODEL_NAME": model_name,
123
+ "STT_MODEL_SIZE": model_size,
124
+ "TARGET_LANG": target_lang,
125
+ "DEVICE": device
126
+ })
127
+
128
  if st.session_state.processing:
129
  st.divider()
130
  if st.button("⏹️ 强制停止任务", type="secondary", use_container_width=True):
 
234
  VideoUtils.write_srt(all_translated_segments, trans_srt_path)
235
 
236
  status.update(label="处理完成!", state="complete", expanded=False)
237
+
238
+ # 成功处理后自动保存配置
239
+ save_current_settings()
240
 
241
  # 保存结果到 session_state
242
  st.session_state.process_results = {
 
361
  "trans_srt": temp_trans_srt.name
362
  }
363
  st.success("翻译完成!")
364
+
365
+ # 成功处理后自动保存配置
366
+ save_current_settings()
367
+
368
  st.session_state.processing = False
369
  st.rerun()
370
  except Exception as e: