guanghulab/video-ai-system/tools/secrets-loader.py

59 lines
1.8 KiB
Python
Raw Normal View History

#!/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}")