hs-video-api/config.py
2025-06-07 00:28:35 +08:00

85 lines
2.8 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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
}