|
|
|
"""
|
|
MoneyPrinterTurbo - Huggingface Spaces Edition
|
|
Optimized for FREE tier deployment
|
|
"""
|
|
|
|
import os
|
|
import sys
|
|
import streamlit as st
|
|
import toml
|
|
from pathlib import Path
|
|
|
|
|
|
project_root = Path(__file__).parent
|
|
sys.path.insert(0, str(project_root))
|
|
|
|
|
|
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"
|
|
|
|
|
|
config = {
|
|
"app": {
|
|
"max_concurrent_tasks": 1,
|
|
"api_enabled": True,
|
|
"log_level": "INFO"
|
|
},
|
|
"ui": {"hide_log": False, "language": "zh"},
|
|
"azure": {},
|
|
"siliconflow": {}
|
|
}
|
|
|
|
|
|
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)
|
|
|
|
|
|
with open(config_path, 'w', encoding='utf-8') as f:
|
|
toml.dump(config, f)
|
|
|
|
return config, loaded_keys
|
|
|
|
|
|
config, loaded_env_vars = load_config()
|
|
|
|
|
|
st.set_page_config(
|
|
page_title="MoneyPrinterTurbo - HF Spaces",
|
|
page_icon="🎬",
|
|
layout="wide",
|
|
initial_sidebar_state="expanded"
|
|
)
|
|
|
|
|
|
st.markdown("""
|
|
<style>
|
|
.main > div {
|
|
padding-top: 2rem;
|
|
}
|
|
.stAlert {
|
|
margin-top: 1rem;
|
|
}
|
|
</style>
|
|
""", unsafe_allow_html=True)
|
|
|
|
|
|
st.title("🎬 MoneyPrinterTurbo")
|
|
st.markdown("### AI视频生成工具 - Huggingface Spaces版")
|
|
|
|
|
|
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层级优化")
|
|
|
|
|
|
st.subheader("📋 配置状态")
|
|
config_status = st.container()
|
|
|
|
with config_status:
|
|
|
|
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设置中添加环境变量")
|
|
|
|
|
|
st.subheader("🚀 使用说明")
|
|
st.markdown("""
|
|
1. **配置API密钥**: 在Huggingface Spaces的Settings中添加环境变量
|
|
2. **选择功能**: 使用下方的功能模块开始创建视频
|
|
3. **注意限制**: FREE层级有资源限制,建议生成较短的视频
|
|
""")
|
|
|
|
|
|
st.subheader("⚡ 快速操作")
|
|
|
|
|
|
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("✅ 配置已保存,等待完整功能上线")
|
|
|
|
|
|
st.markdown("---")
|
|
st.markdown("💡 **提示**: 完整版功能正在适配中,敬请期待!")
|
|
|
|
|
|
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"]
|
|
}) |