| |
|
| | """
|
| | 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"]
|
| | }) |