import os import json from pathlib import Path from dotenv import load_dotenv # 加载 .env 文件 env_path = Path(__file__).parent.parent.parent / ".env" load_dotenv(dotenv_path=env_path) # 基础路径配置 BASE_DIR = Path(__file__).parent.parent.parent UPLOAD_DIR = BASE_DIR / "uploads" AUDIO_DIR = UPLOAD_DIR / "audio" TEMP_UPLOAD_DIR = UPLOAD_DIR / "temp_audio" MARKDOWN_DIR = UPLOAD_DIR / "markdown" CLIENT_DIR = UPLOAD_DIR / "clients" EXTERNAL_APPS_DIR = UPLOAD_DIR / "external_apps" USER_DIR = UPLOAD_DIR / "user" VOICEPRINT_DIR = USER_DIR / "voiceprint" AVATAR_DIR = USER_DIR / "avatar" # 文件上传配置 ALLOWED_EXTENSIONS = {".mp3", ".wav", ".m4a", ".mpeg", ".mp4"} ALLOWED_IMAGE_EXTENSIONS = {".jpg", ".jpeg", ".png", ".gif", ".webp"} ALLOWED_VOICEPRINT_EXTENSIONS = {".wav"} ALLOWED_CLIENT_EXTENSIONS = {".apk", ".exe", ".dmg", ".deb", ".rpm", ".pkg", ".msi", ".zip", ".tar.gz"} MAX_FILE_SIZE = 100 * 1024 * 1024 # 100MB MAX_IMAGE_SIZE = 10 * 1024 * 1024 # 10MB MAX_CLIENT_SIZE = 500 * 1024 * 1024 # 500MB for client installers # 确保上传目录存在 UPLOAD_DIR.mkdir(exist_ok=True) AUDIO_DIR.mkdir(exist_ok=True) MARKDOWN_DIR.mkdir(exist_ok=True) CLIENT_DIR.mkdir(exist_ok=True) EXTERNAL_APPS_DIR.mkdir(exist_ok=True) USER_DIR.mkdir(exist_ok=True) VOICEPRINT_DIR.mkdir(exist_ok=True) AVATAR_DIR.mkdir(exist_ok=True) # 数据库配置 DATABASE_CONFIG = { 'host': os.getenv('DB_HOST', '127.0.0.1'), 'user': os.getenv('DB_USER', 'root'), 'password': os.getenv('DB_PASSWORD', ''), 'database': os.getenv('DB_NAME', 'imeeting'), 'port': int(os.getenv('DB_PORT', '3306')), 'charset': 'utf8mb4' } # API配置 API_CONFIG = { 'host': os.getenv('API_HOST', '0.0.0.0'), 'port': int(os.getenv('API_PORT', '8000')) } # 七牛云配置 # QINIU_ACCESS_KEY = os.getenv('QINIU_ACCESS_KEY', 'A0tp96HCtg-wZCughTgi5vc2pJnw3btClwxRE_e8') # QINIU_SECRET_KEY = os.getenv('QINIU_SECRET_KEY', 'Lj-MSHpaVbmzpS86kMIjmwikvYOT9iPBjCk9hm6k') # QINIU_BUCKET = os.getenv('QINIU_BUCKET', 'imeeting_dev') # QINIU_DOMAIN = os.getenv('QINIU_DOMAIN', 't0vogyxkz.hn-bkt.clouddn.com') # 应用配置 APP_CONFIG = { 'base_url': os.getenv('BASE_URL', 'http://imeeting.unisspace.com') } # Redis配置 REDIS_CONFIG = { 'host': os.getenv('REDIS_HOST', '127.0.0.1'), 'port': int(os.getenv('REDIS_PORT', '6379')), 'db': int(os.getenv('REDIS_DB', '0')), 'password': os.getenv('REDIS_PASSWORD', ''), 'decode_responses': True } # Dashscope (Tongyi Qwen) API Key QWEN_API_KEY = os.getenv('QWEN_API_KEY', 'sk-c2bf06ea56b4491ea3d1e37fdb472b8f') # 转录轮询配置 - 用于 upload-audio-complete 接口 TRANSCRIPTION_POLL_CONFIG = { 'poll_interval': int(os.getenv('TRANSCRIPTION_POLL_INTERVAL', '10')), # 轮询间隔:10秒 'max_wait_time': int(os.getenv('TRANSCRIPTION_MAX_WAIT_TIME', '1800')), # 最大等待:30分钟 }