forked from wendy7756/AI-Video-Transcriber
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathstart.py
More file actions
executable file
·137 lines (112 loc) · 3.88 KB
/
Copy pathstart.py
File metadata and controls
executable file
·137 lines (112 loc) · 3.88 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
#!/usr/bin/env python3
"""
AI视频转录器启动脚本
"""
import os
import sys
import subprocess
from pathlib import Path
def check_dependencies():
"""检查依赖是否安装"""
import sys
required_packages = {
"fastapi": "fastapi",
"uvicorn": "uvicorn",
"yt-dlp": "yt_dlp",
"faster-whisper": "faster_whisper",
"openai": "openai"
}
missing_packages = []
for display_name, import_name in required_packages.items():
try:
__import__(import_name)
except ImportError:
missing_packages.append(display_name)
if missing_packages:
print("❌ 缺少以下依赖包:")
for package in missing_packages:
print(f" - {package}")
print("\n请运行以下命令安装依赖:")
print("source venv/bin/activate && pip install -r requirements.txt")
return False
print("✅ 所有依赖已安装")
return True
def check_ffmpeg():
"""检查FFmpeg是否安装"""
try:
subprocess.run(["ffmpeg", "-version"],
stdout=subprocess.DEVNULL,
stderr=subprocess.DEVNULL,
check=True)
print("✅ FFmpeg已安装")
return True
except (subprocess.CalledProcessError, FileNotFoundError):
print("❌ 未找到FFmpeg")
print("请安装FFmpeg:")
print(" macOS: brew install ffmpeg")
print(" Ubuntu: sudo apt install ffmpeg")
print(" Windows: 从官网下载 https://ffmpeg.org/download.html")
return False
def setup_environment():
"""设置环境变量"""
# 设置OpenAI配置
if not os.getenv("OPENAI_API_KEY"):
print("⚠️ 警告: 未设置OPENAI_API_KEY环境变量")
print("请设置环境变量: export OPENAI_API_KEY=your_api_key_here")
return False
print("✅ 已设置OpenAI API Key")
if not os.getenv("OPENAI_BASE_URL"):
os.environ["OPENAI_BASE_URL"] = "https://oneapi.basevec.com/v1"
print("✅ 已设置OpenAI Base URL")
# 设置其他默认配置
if not os.getenv("WHISPER_MODEL_SIZE"):
os.environ["WHISPER_MODEL_SIZE"] = "base"
print("🔑 OpenAI API已配置,摘要功能可用")
return True
def main():
"""主函数"""
# 检查是否使用生产模式(禁用热重载)
production_mode = "--prod" in sys.argv or os.getenv("PRODUCTION_MODE") == "true"
print("🚀 AI视频转录器启动检查")
if production_mode:
print("🔒 生产模式 - 热重载已禁用")
else:
print("🔧 开发模式 - 热重载已启用")
print("=" * 50)
# 检查依赖
if not check_dependencies():
sys.exit(1)
# 检查FFmpeg
if not check_ffmpeg():
print("⚠️ FFmpeg未安装,可能影响某些视频格式的处理")
# 设置环境
setup_environment()
print("\n🎉 启动检查完成!")
print("=" * 50)
# 启动服务器
host = os.getenv("HOST", "0.0.0.0")
port = int(os.getenv("PORT", 8000))
print(f"\n🌐 启动服务器...")
print(f" 地址: http://localhost:{port}")
print(f" 按 Ctrl+C 停止服务")
print("=" * 50)
try:
# 切换到backend目录并启动服务
backend_dir = Path(__file__).parent / "backend"
os.chdir(backend_dir)
cmd = [
sys.executable, "-m", "uvicorn", "main:app",
"--host", host,
"--port", str(port)
]
# 只在开发模式下启用热重载
if not production_mode:
cmd.append("--reload")
subprocess.run(cmd)
except KeyboardInterrupt:
print("\n\n👋 服务已停止")
except Exception as e:
print(f"\n❌ 启动失败: {e}")
sys.exit(1)
if __name__ == "__main__":
main()