import os from datetime import timedelta from dotenv import load_dotenv # 获取环境变量 APP_ENV,默认为 'dev' APP_ENV = os.getenv('APP_ENV', 'dev').lower() # 根据环境变量加载对应的.env文件 env_file_map = { 'dev': '.env.dev', 'development': '.env.dev', 'prod': '.env.pro', 'production': '.env.pro', 'test': '.env.test', 'testing': '.env.test', 'dev-server': '.env.dev-server' } env_file = env_file_map.get(APP_ENV, '.env.dev') if os.path.exists(env_file): load_dotenv(env_file) print(f"Successfully loaded configuration from {env_file} for environment: {APP_ENV}") else: print(f"Warning: Environment file {env_file} not found, using system environment variables") class Config: """基础配置类""" # Flask配置 SECRET_KEY = os.environ.get('SECRET_KEY') or 'dev-secret-key-change-in-production' # API配置 API_VERSION = 'v1' API_PREFIX = '/api' # 火山引擎API配置 ARK_API_KEY = os.environ.get('ARK_API_KEY', '') # 视频生成配置 VIDEO_MODEL = os.environ.get('VIDEO_MODEL', 'doubao-seedance-1-0-lite-i2v-250428') # doubao-seedance-1.0-lite 图生视频模型 VIDEO_MAX_DURATION = int(os.environ.get('VIDEO_MAX_DURATION', '10')) # 最大时长(秒) VIDEO_DEFAULT_DURATION = int(os.environ.get('VIDEO_DEFAULT_DURATION', '5')) # 默认时长(秒) VIDEO_DEFAULT_ASPECT_RATIO = os.environ.get('VIDEO_DEFAULT_ASPECT_RATIO', '16:9') # 默认宽高比 VIDEO_DEFAULT_RESOLUTION = os.environ.get('VIDEO_DEFAULT_RESOLUTION', '1280x720') # 默认分辨率 DEFAULT_VIDEO_DURATION = 10 # 默认视频时长(秒) MAX_VIDEO_DURATION = 60 # 最大视频时长(秒) DEFAULT_RESOLUTION = '1080p' SUPPORTED_RESOLUTIONS = ['720p', '1080p', '4k'] DEFAULT_STYLE = 'realistic' SUPPORTED_STYLES = ['realistic', 'cartoon', 'anime', 'abstract'] # 任务配置 TASK_TIMEOUT = timedelta(minutes=10) # 任务超时时间 MAX_CONCURRENT_TASKS = 10 # 最大并发任务数 # 文件存储配置 UPLOAD_FOLDER = os.environ.get('UPLOAD_FOLDER') or 'uploads' MAX_CONTENT_LENGTH = 16 * 1024 * 1024 # 16MB # 日志配置 LOG_LEVEL = os.environ.get('LOG_LEVEL') or 'INFO' LOG_FILE = os.environ.get('LOG_FILE') or 'app.log' class DevelopmentConfig(Config): """开发环境配置""" DEBUG = True LOG_LEVEL = 'DEBUG' class ProductionConfig(Config): """生产环境配置""" DEBUG = False LOG_LEVEL = 'WARNING' class TestingConfig(Config): """测试环境配置""" TESTING = True DEBUG = True # 配置字典 config = { 'development': DevelopmentConfig, 'production': ProductionConfig, 'testing': TestingConfig, 'default': DevelopmentConfig }