CatPtain's picture
Upload 2 files
1578acb verified
#!/usr/bin/env python3
"""
MoneyPrinterTurbo - Huggingface Spaces Edition
Optimized for FREE tier deployment
"""
import os
import sys
import streamlit as st
import toml
from pathlib import Path
# Add project root to Python path
project_root = Path(__file__).parent
sys.path.insert(0, str(project_root))
# Create necessary directories
os.makedirs("storage/tasks", exist_ok=True)
os.makedirs("storage/temp", exist_ok=True)
os.makedirs("storage/cache_videos", exist_ok=True)
def load_config():
"""Load configuration from environment variables"""
config_path = "config.toml"
# Default configuration
config = {
"app": {
"max_concurrent_tasks": 1,
"api_enabled": True,
"log_level": "INFO"
},
"ui": {"hide_log": False, "language": "zh"},
"azure": {},
"siliconflow": {}
}
# Load environment variables
env_vars = {
"DEEPSEEK_API_KEY": ("app", "deepseek_api_key"),
"MOONSHOT_API_KEY": ("app", "moonshot_api_key"),
"OPENAI_API_KEY": ("app", "openai_api_key"),
"PEXELS_API_KEY": ("app", "pexels_api_keys"),
"PIXABAY_API_KEY": ("app", "pixabay_api_keys"),
"AZURE_SPEECH_KEY": ("azure", "speech_key"),
"AZURE_SPEECH_REGION": ("azure", "speech_region"),
"SILICONFLOW_API_KEY": ("siliconflow", "api_key"),
"MONEYPRINTER_API_KEY": ("app", "api_key")
}
loaded_keys = []
for env_key, (section, config_key) in env_vars.items():
value = os.getenv(env_key)
if value:
if section not in config:
config[section] = {}
if config_key.endswith("_keys"):
config[section][config_key] = [value]
else:
config[section][config_key] = value
loaded_keys.append(env_key)
# Save configuration
with open(config_path, 'w', encoding='utf-8') as f:
toml.dump(config, f)
return config, loaded_keys
# Load configuration
config, loaded_env_vars = load_config()
# Set Streamlit page config
st.set_page_config(
page_title="MoneyPrinterTurbo - HF Spaces",
page_icon="🎬",
layout="wide",
initial_sidebar_state="expanded"
)
# Custom CSS
st.markdown("""
<style>
.main > div {
padding-top: 2rem;
}
.stAlert {
margin-top: 1rem;
}
</style>
""", unsafe_allow_html=True)
# Main UI
st.title("🎬 MoneyPrinterTurbo")
st.markdown("### AI视频生成工具 - Huggingface Spaces版")
# Status display
with st.container():
col1, col2 = st.columns(2)
with col1:
st.success("✅ 应用已成功启动")
st.info(f"📊 环境变量加载: {len(loaded_env_vars)} 个")
with col2:
st.warning("⚠️ 这是简化版界面")
st.info("🔧 为FREE层级优化")
# Configuration status
st.subheader("📋 配置状态")
config_status = st.container()
with config_status:
# Check API keys
api_keys_status = []
if config.get("app", {}).get("deepseek_api_key"):
api_keys_status.append("✅ DeepSeek API")
if config.get("app", {}).get("moonshot_api_key"):
api_keys_status.append("✅ Moonshot API")
if config.get("app", {}).get("openai_api_key"):
api_keys_status.append("✅ OpenAI API")
if config.get("app", {}).get("pexels_api_keys"):
api_keys_status.append("✅ Pexels API")
if config.get("azure", {}).get("speech_key"):
api_keys_status.append("✅ Azure Speech")
if api_keys_status:
st.success("🔑 已配置的API密钥:")
for status in api_keys_status:
st.write(f" {status}")
else:
st.error("❌ 未检测到API密钥配置")
st.info("💡 请在Huggingface Spaces设置中添加环境变量")
# Instructions
st.subheader("🚀 使用说明")
st.markdown("""
1. **配置API密钥**: 在Huggingface Spaces的Settings中添加环境变量
2. **选择功能**: 使用下方的功能模块开始创建视频
3. **注意限制**: FREE层级有资源限制,建议生成较短的视频
""")
# Quick actions
st.subheader("⚡ 快速操作")
# Simple video generation form
with st.form("quick_video"):
video_topic = st.text_input("视频主题", placeholder="例如: 介绍人工智能的发展历史")
video_duration = st.slider("视频时长 (秒)", 30, 120, 60)
col1, col2 = st.columns(2)
with col1:
video_style = st.selectbox("视频风格", ["科技", "生活", "教育", "娱乐"])
with col2:
video_language = st.selectbox("语言", ["中文", "英文"])
submitted = st.form_submit_button("🎬 生成视频")
if submitted:
if not video_topic:
st.error("请输入视频主题")
elif not api_keys_status:
st.error("请先配置API密钥")
else:
with st.spinner("正在生成视频..."):
st.info("🔄 视频生成功能正在开发中")
st.success("✅ 配置已保存,等待完整功能上线")
# Footer
st.markdown("---")
st.markdown("💡 **提示**: 完整版功能正在适配中,敬请期待!")
# Debug info (for development)
if st.checkbox("显示调试信息"):
st.subheader("🔍 调试信息")
st.json({
"loaded_env_vars": loaded_env_vars,
"config_sections": list(config.keys()),
"storage_dirs": ["storage/tasks", "storage/temp", "storage/cache_videos"]
})