#!/usr/bin/env python3 """视频AI系统 · 统一密钥加载器 所有工具脚本通过本模块获取密钥,不各自散落读取逻辑。 用法: from tools.secrets_loader import secrets key = secrets["JIMENG_API_KEY"] 密钥来源: video-ai-system/LOCAL-SECRETS-PATH.hdlp 读取顺序: 本地secrets文件 → 仓库.env → 环境变量 → 空值不覆盖 """ import os # 密钥文件路径(按优先级) _SECRET_FILES = [ "/Users/bingshuolingdianyuanhe/Documents/guanghulab-local-secrets/video-ai-system.env", os.path.expanduser("~/guanghulab/video-ai-system/.env"), ] def _load(): """加载所有密钥到 dict,高优先级文件的同名 key 不被低优先级覆盖""" result = {} # 先从低优先级加载 for path in reversed(_SECRET_FILES): if os.path.exists(path): with open(path) as f: for line in f: line = line.strip() if not line or line.startswith("#") or "=" not in line: continue k, v = line.split("=", 1) k, v = k.strip(), v.strip() if k not in result: result[k] = v # 最后加载环境变量(最高优先级) for key in list(result.keys()): env_val = os.environ.get(key) if env_val: result[key] = env_val return result secrets = _load() # 快速访问 def get(key, default=None): return secrets.get(key, default) if __name__ == "__main__": # 诊断模式:列出所有已加载的密钥变量名(不显示值) print("=== 已加载密钥变量 ===") for k in sorted(secrets.keys()): v = secrets[k] masked = v[:8] + "..." + v[-4:] if len(v) > 12 else "***" print(f" {k} = {masked}")