Upload 5 files
Browse files
README.md
CHANGED
|
@@ -1,67 +1,67 @@
|
|
| 1 |
-
---
|
| 2 |
-
title: MoneyPrinterTurbo
|
| 3 |
-
emoji: 🎬
|
| 4 |
-
colorFrom: blue
|
| 5 |
-
colorTo: purple
|
| 6 |
-
sdk: streamlit
|
| 7 |
-
sdk_version: 1.45.0
|
| 8 |
-
app_file: app.py
|
| 9 |
-
pinned: false
|
| 10 |
-
license: mit
|
| 11 |
-
---
|
| 12 |
-
|
| 13 |
-
# MoneyPrinterTurbo 🎬
|
| 14 |
-
|
| 15 |
-
AI驱动的短视频自动生成工具,支持自动文案生成、语音合成、视频剪辑等功能。
|
| 16 |
-
|
| 17 |
-
## 功能特点
|
| 18 |
-
|
| 19 |
-
- 🤖 **AI文案生成**: 支持OpenAI、DeepSeek、Moonshot等多种LLM
|
| 20 |
-
- 🎵 **智能语音合成**: Azure TTS、Edge TTS等多种语音服务
|
| 21 |
-
- 🎥 **自动视频剪辑**: 从Pexels、Pixabay获取素材并智能剪辑
|
| 22 |
-
- 📝 **字幕生成**: 自动生成和同步字幕
|
| 23 |
-
- 🔄 **API支持**: 完整的RESTful API接口
|
| 24 |
-
|
| 25 |
-
## 快速开始
|
| 26 |
-
|
| 27 |
-
### 配置API密钥
|
| 28 |
-
|
| 29 |
-
在使用前,请在WebUI的"基础设置"中配置以下API密钥:
|
| 30 |
-
|
| 31 |
-
#### 必需配置
|
| 32 |
-
- **LLM提供商**: DeepSeek/Moonshot/OpenAI (至少选择一个)
|
| 33 |
-
- **视频素材源**: Pexels/Pixabay (至少选择一个)
|
| 34 |
-
|
| 35 |
-
#### 可选配置
|
| 36 |
-
- **Azure Speech**: 高质量语音合成
|
| 37 |
-
- **SiliconFlow**: 备用语音服务
|
| 38 |
-
|
| 39 |
-
### API密钥获取
|
| 40 |
-
- DeepSeek: https://platform.deepseek.com/api_keys (推荐,国内可访问)
|
| 41 |
-
- Moonshot: https://platform.moonshot.cn/console/api-keys (推荐,国内可访问)
|
| 42 |
-
- Pexels: https://www.pexels.com/api/ (免费,高质量素材)
|
| 43 |
-
|
| 44 |
-
## 使用说明
|
| 45 |
-
|
| 46 |
-
1. 在左侧配置面板中设置API密钥
|
| 47 |
-
2. 在主界面输入视频主题
|
| 48 |
-
3. 调整视频参数(时长、比例、语音等)
|
| 49 |
-
4. 点击"开始生成"等待视频制作完成
|
| 50 |
-
|
| 51 |
-
## API调用
|
| 52 |
-
|
| 53 |
-
本应用提供完整的API接口,支持外部系统调用。详细文档请参考项目中的 `API_GUIDE.md`。
|
| 54 |
-
|
| 55 |
-
## 注意事项
|
| 56 |
-
|
| 57 |
-
- 首次使用需要下载模型文件,请耐心等待
|
| 58 |
-
- 建议生成较短的视频以节省资源
|
| 59 |
-
- 如遇到网络问题,请检查API密钥配置
|
| 60 |
-
|
| 61 |
-
## 技术栈
|
| 62 |
-
|
| 63 |
-
- **前端**: Streamlit
|
| 64 |
-
- **后端**: FastAPI
|
| 65 |
-
- **AI**: OpenAI、DeepSeek、Moonshot
|
| 66 |
-
- **视频处理**: MoviePy
|
| 67 |
- **语音合成**: Azure TTS、Edge TTS
|
|
|
|
| 1 |
+
---
|
| 2 |
+
title: MoneyPrinterTurbo
|
| 3 |
+
emoji: 🎬
|
| 4 |
+
colorFrom: blue
|
| 5 |
+
colorTo: purple
|
| 6 |
+
sdk: streamlit
|
| 7 |
+
sdk_version: 1.45.0
|
| 8 |
+
app_file: app.py
|
| 9 |
+
pinned: false
|
| 10 |
+
license: mit
|
| 11 |
+
---
|
| 12 |
+
|
| 13 |
+
# MoneyPrinterTurbo 🎬
|
| 14 |
+
|
| 15 |
+
AI驱动的短视频自动生成工具,支持自动文案生成、语音合成、视频剪辑等功能。
|
| 16 |
+
|
| 17 |
+
## 功能特点
|
| 18 |
+
|
| 19 |
+
- 🤖 **AI文案生成**: 支持OpenAI、DeepSeek、Moonshot等多种LLM
|
| 20 |
+
- 🎵 **智能语音合成**: Azure TTS、Edge TTS等多种语音服务
|
| 21 |
+
- 🎥 **自动视频剪辑**: 从Pexels、Pixabay获取素材并智能剪辑
|
| 22 |
+
- 📝 **字幕生成**: 自动生成和同步字幕
|
| 23 |
+
- 🔄 **API支持**: 完整的RESTful API接口
|
| 24 |
+
|
| 25 |
+
## 快速开始
|
| 26 |
+
|
| 27 |
+
### 配置API密钥
|
| 28 |
+
|
| 29 |
+
在使用前,请在WebUI的"基础设置"中配置以下API密钥:
|
| 30 |
+
|
| 31 |
+
#### 必需配置
|
| 32 |
+
- **LLM提供商**: DeepSeek/Moonshot/OpenAI (至少选择一个)
|
| 33 |
+
- **视频素材源**: Pexels/Pixabay (至少选择一个)
|
| 34 |
+
|
| 35 |
+
#### 可选配置
|
| 36 |
+
- **Azure Speech**: 高质量语音合成
|
| 37 |
+
- **SiliconFlow**: 备用语音服务
|
| 38 |
+
|
| 39 |
+
### API密钥获取
|
| 40 |
+
- DeepSeek: https://platform.deepseek.com/api_keys (推荐,国内可访问)
|
| 41 |
+
- Moonshot: https://platform.moonshot.cn/console/api-keys (推荐,国内可访问)
|
| 42 |
+
- Pexels: https://www.pexels.com/api/ (免费,高质量素材)
|
| 43 |
+
|
| 44 |
+
## 使用说明
|
| 45 |
+
|
| 46 |
+
1. 在左侧配置面板中设置API密钥
|
| 47 |
+
2. 在主界面输入视频主题
|
| 48 |
+
3. 调整视频参数(时长、比例、语音等)
|
| 49 |
+
4. 点击"开始生成"等待视频制作完成
|
| 50 |
+
|
| 51 |
+
## API调用
|
| 52 |
+
|
| 53 |
+
本应用提供完整的API接口,支持外部系统调用。详细文档请参考项目中的 `API_GUIDE.md`。
|
| 54 |
+
|
| 55 |
+
## 注意事项
|
| 56 |
+
|
| 57 |
+
- 首次使用需要下载模型文件,请耐心等待
|
| 58 |
+
- 建议生成较短的视频以节省资源
|
| 59 |
+
- 如遇到网络问题,请检查API密钥配置
|
| 60 |
+
|
| 61 |
+
## 技术栈
|
| 62 |
+
|
| 63 |
+
- **前端**: Streamlit
|
| 64 |
+
- **后端**: FastAPI
|
| 65 |
+
- **AI**: OpenAI、DeepSeek、Moonshot
|
| 66 |
+
- **视频处理**: MoviePy
|
| 67 |
- **语音合成**: Azure TTS、Edge TTS
|
app.py
CHANGED
|
@@ -12,81 +12,154 @@ print("🚀 Starting ultra-minimal MoneyPrinterTurbo...")
|
|
| 12 |
os.makedirs("storage/tasks", exist_ok=True)
|
| 13 |
os.makedirs("storage/temp", exist_ok=True)
|
| 14 |
|
| 15 |
-
#
|
|
|
|
|
|
|
|
|
|
|
|
|
| 16 |
test_html = """<!DOCTYPE html>
|
| 17 |
<html>
|
| 18 |
<head>
|
| 19 |
<title>MoneyPrinterTurbo - Test Version</title>
|
|
|
|
| 20 |
<style>
|
| 21 |
-
body {
|
| 22 |
-
|
| 23 |
-
|
| 24 |
-
|
| 25 |
-
|
| 26 |
-
|
| 27 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 28 |
.success { color: #4CAF50; font-weight: bold; }
|
| 29 |
.next { color: #2196F3; }
|
| 30 |
ul { text-align: left; }
|
| 31 |
-
.footer {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 32 |
</style>
|
| 33 |
</head>
|
| 34 |
<body>
|
| 35 |
<div class="container">
|
| 36 |
-
<h1>🎬 MoneyPrinterTurbo</h1>
|
| 37 |
-
<p class="subtitle">AI驱动的短视频生成工具 - 测试版本</p>
|
| 38 |
|
| 39 |
<div class="status">
|
| 40 |
-
<h2 class="success"
|
| 41 |
-
<p>恭喜!如果您看到这个页面,说明 Huggingface Spaces
|
| 42 |
</div>
|
| 43 |
|
| 44 |
<div class="info">
|
| 45 |
-
<h3>📋
|
| 46 |
-
<div class="step">✅ Python
|
| 47 |
-
<div class="step">✅ 端口配置:7860
|
| 48 |
-
<div class="step">✅
|
| 49 |
-
<div class="step">✅ HTTP 服务:Python
|
|
|
|
| 50 |
</div>
|
| 51 |
|
| 52 |
<div class="info">
|
| 53 |
-
<h3
|
| 54 |
<ul>
|
| 55 |
-
<li><span class="success">阶段 1
|
| 56 |
-
<li><span class="next">阶段 2
|
| 57 |
-
<li><span class="next">阶段 3
|
| 58 |
-
<li><span class="next">阶段 4
|
| 59 |
</ul>
|
| 60 |
</div>
|
| 61 |
|
| 62 |
<div class="info">
|
| 63 |
-
<h3>📝
|
| 64 |
-
<p
|
| 65 |
<ul>
|
| 66 |
-
<li><strong
|
| 67 |
-
<li><strong
|
| 68 |
-
<li><strong
|
|
|
|
| 69 |
</ul>
|
| 70 |
</div>
|
| 71 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 72 |
<div class="footer">
|
| 73 |
-
<p>MoneyPrinterTurbo v1.2.6 | Powered by Huggingface Spaces</p>
|
| 74 |
-
<p
|
|
|
|
| 75 |
</div>
|
| 76 |
</div>
|
| 77 |
</body>
|
| 78 |
</html>"""
|
| 79 |
|
| 80 |
-
# Write test HTML
|
| 81 |
-
|
|
|
|
| 82 |
f.write(test_html)
|
| 83 |
|
| 84 |
-
print("✅ Test HTML created
|
| 85 |
-
print(f"📂 Storage directories created: storage/tasks, storage/temp")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 86 |
|
| 87 |
-
# Try to start a simple HTTP server
|
| 88 |
try:
|
| 89 |
print(f"🌐 Starting HTTP server on port 7860...")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 90 |
subprocess.run([
|
| 91 |
sys.executable, "-m", "http.server", "7860",
|
| 92 |
"--bind", "0.0.0.0"
|
|
|
|
| 12 |
os.makedirs("storage/tasks", exist_ok=True)
|
| 13 |
os.makedirs("storage/temp", exist_ok=True)
|
| 14 |
|
| 15 |
+
# Get current working directory
|
| 16 |
+
current_dir = os.getcwd()
|
| 17 |
+
print(f"📂 Current directory: {current_dir}")
|
| 18 |
+
|
| 19 |
+
# Create a test HTML page in the current directory
|
| 20 |
test_html = """<!DOCTYPE html>
|
| 21 |
<html>
|
| 22 |
<head>
|
| 23 |
<title>MoneyPrinterTurbo - Test Version</title>
|
| 24 |
+
<meta charset="UTF-8">
|
| 25 |
<style>
|
| 26 |
+
body {
|
| 27 |
+
font-family: Arial, sans-serif;
|
| 28 |
+
text-align: center;
|
| 29 |
+
padding: 50px;
|
| 30 |
+
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
|
| 31 |
+
color: white;
|
| 32 |
+
margin: 0;
|
| 33 |
+
}
|
| 34 |
+
.container {
|
| 35 |
+
max-width: 800px;
|
| 36 |
+
margin: 0 auto;
|
| 37 |
+
background: rgba(255,255,255,0.95);
|
| 38 |
+
padding: 40px;
|
| 39 |
+
border-radius: 15px;
|
| 40 |
+
box-shadow: 0 8px 32px rgba(0,0,0,0.3);
|
| 41 |
+
color: #333;
|
| 42 |
+
}
|
| 43 |
+
h1 { color: #4CAF50; margin-bottom: 10px; font-size: 2.5em; }
|
| 44 |
+
.subtitle { color: #666; margin-bottom: 30px; font-size: 1.2em; }
|
| 45 |
+
.status {
|
| 46 |
+
padding: 20px;
|
| 47 |
+
background: linear-gradient(135deg, #e8f5e8, #d4edda);
|
| 48 |
+
border-radius: 8px;
|
| 49 |
+
margin: 20px 0;
|
| 50 |
+
border-left: 4px solid #4CAF50;
|
| 51 |
+
}
|
| 52 |
+
.info {
|
| 53 |
+
padding: 15px;
|
| 54 |
+
background: linear-gradient(135deg, #f0f8ff, #e6f3ff);
|
| 55 |
+
border-radius: 8px;
|
| 56 |
+
margin: 15px 0;
|
| 57 |
+
}
|
| 58 |
+
.step { text-align: left; margin: 10px 0; padding: 5px 0; }
|
| 59 |
.success { color: #4CAF50; font-weight: bold; }
|
| 60 |
.next { color: #2196F3; }
|
| 61 |
ul { text-align: left; }
|
| 62 |
+
.footer {
|
| 63 |
+
margin-top: 40px;
|
| 64 |
+
padding-top: 20px;
|
| 65 |
+
border-top: 1px solid #eee;
|
| 66 |
+
color: #888;
|
| 67 |
+
font-size: 14px;
|
| 68 |
+
}
|
| 69 |
+
.pulse {
|
| 70 |
+
animation: pulse 2s infinite;
|
| 71 |
+
}
|
| 72 |
+
@keyframes pulse {
|
| 73 |
+
0% { transform: scale(1); }
|
| 74 |
+
50% { transform: scale(1.05); }
|
| 75 |
+
100% { transform: scale(1); }
|
| 76 |
+
}
|
| 77 |
</style>
|
| 78 |
</head>
|
| 79 |
<body>
|
| 80 |
<div class="container">
|
| 81 |
+
<h1 class="pulse">🎬 MoneyPrinterTurbo</h1>
|
| 82 |
+
<p class="subtitle">AI驱动的短视频生成工具 - Huggingface Spaces 测试版本</p>
|
| 83 |
|
| 84 |
<div class="status">
|
| 85 |
+
<h2 class="success">🎉 部署测试成功!</h2>
|
| 86 |
+
<p>恭喜!如果您看到这个页面,说明 Huggingface Spaces 基础架构运行完全正常。</p>
|
| 87 |
</div>
|
| 88 |
|
| 89 |
<div class="info">
|
| 90 |
+
<h3>📋 测试结果验证</h3>
|
| 91 |
+
<div class="step">✅ Python 环境:正常运行</div>
|
| 92 |
+
<div class="step">✅ 端口配置:7860 端口访问成功</div>
|
| 93 |
+
<div class="step">✅ 文件系统:存储目录创建完成</div>
|
| 94 |
+
<div class="step">✅ HTTP 服务:Python 内置服务器正常工作</div>
|
| 95 |
+
<div class="step">✅ HTML 渲染:页面显示功能正常</div>
|
| 96 |
</div>
|
| 97 |
|
| 98 |
<div class="info">
|
| 99 |
+
<h3>🚀 分阶段部署计划</h3>
|
| 100 |
<ul>
|
| 101 |
+
<li><span class="success">阶段 1:零依赖测试</span> ✅ 当前完成</li>
|
| 102 |
+
<li><span class="next">阶段 2:Streamlit 集成</span> 🔄 准备中</li>
|
| 103 |
+
<li><span class="next">阶段 3:核心功能模块</span> ⏳ 待部署</li>
|
| 104 |
+
<li><span class="next">阶段 4:完整应用功能</span> ⏳ 待部署</li>
|
| 105 |
</ul>
|
| 106 |
</div>
|
| 107 |
|
| 108 |
<div class="info">
|
| 109 |
+
<h3>📝 技术验证说明</h3>
|
| 110 |
+
<p><strong>测试目标</strong>:验证 Huggingface Spaces 环境的基础兼容性</p>
|
| 111 |
<ul>
|
| 112 |
+
<li><strong>架构方案</strong>:使用 Python 标准库,无外部依赖</li>
|
| 113 |
+
<li><strong>性能优势</strong>:构建速度极快,启动迅速</li>
|
| 114 |
+
<li><strong>调试友好</strong>:便于快速定位和解决问题</li>
|
| 115 |
+
<li><strong>扩展性强</strong>:为后续功能模块提供稳定基础</li>
|
| 116 |
</ul>
|
| 117 |
</div>
|
| 118 |
|
| 119 |
+
<div class="info">
|
| 120 |
+
<h3>🔄 下一步操作</h3>
|
| 121 |
+
<p>既然基础测试成功,现在可以:</p>
|
| 122 |
+
<ol style="text-align: left;">
|
| 123 |
+
<li>确认这个页面正常显示</li>
|
| 124 |
+
<li>进入阶段2:添加 Streamlit 依赖</li>
|
| 125 |
+
<li>逐步集成核心功能模块</li>
|
| 126 |
+
<li>部署完整的视频生成功能</li>
|
| 127 |
+
</ol>
|
| 128 |
+
</div>
|
| 129 |
+
|
| 130 |
<div class="footer">
|
| 131 |
+
<p><strong>MoneyPrinterTurbo v1.2.6</strong> | Powered by Huggingface Spaces</p>
|
| 132 |
+
<p>🕒 页面生成时间: <script>document.write(new Date().toLocaleString('zh-CN'));</script></p>
|
| 133 |
+
<p>🌐 服务地址: <script>document.write(window.location.href);</script></p>
|
| 134 |
</div>
|
| 135 |
</div>
|
| 136 |
</body>
|
| 137 |
</html>"""
|
| 138 |
|
| 139 |
+
# Write test HTML to the current directory (where HTTP server will look for it)
|
| 140 |
+
index_file = os.path.join(current_dir, "index.html")
|
| 141 |
+
with open(index_file, "w", encoding="utf-8") as f:
|
| 142 |
f.write(test_html)
|
| 143 |
|
| 144 |
+
print(f"✅ Test HTML created at: {index_file}")
|
| 145 |
+
print(f"📂 Storage directories created: {current_dir}/storage/tasks, {current_dir}/storage/temp")
|
| 146 |
+
|
| 147 |
+
# Verify the file was created
|
| 148 |
+
if os.path.exists(index_file):
|
| 149 |
+
file_size = os.path.getsize(index_file)
|
| 150 |
+
print(f"📄 Index file size: {file_size} bytes")
|
| 151 |
+
else:
|
| 152 |
+
print("❌ Failed to create index.html file")
|
| 153 |
|
| 154 |
+
# Try to start a simple HTTP server
|
| 155 |
try:
|
| 156 |
print(f"🌐 Starting HTTP server on port 7860...")
|
| 157 |
+
print(f"📍 Serving files from: {current_dir}")
|
| 158 |
+
print(f"🔗 Access URL: http://0.0.0.0:7860/")
|
| 159 |
+
|
| 160 |
+
# Change to the current directory to ensure proper file serving
|
| 161 |
+
os.chdir(current_dir)
|
| 162 |
+
|
| 163 |
subprocess.run([
|
| 164 |
sys.executable, "-m", "http.server", "7860",
|
| 165 |
"--bind", "0.0.0.0"
|