guanghulab/video-ai-system/tools/secrets-loader.py
冰朔 7c05b1da93
Some checks failed
自动更新代码和重启 / update-and-restart (push) Has been cancelled
CI检查 + 自动部署 / check (push) Has been cancelled
CI检查 + 自动部署 / deploy (push) Has been cancelled
D146: 统一密钥加载器 · secrets-loader.py · 不再散落
- secrets-loader.py: 按LOCAL-SECRETS-PATH.hdlp顺序统一加载所有密钥
- qwen-vision.py: 改用secrets-loader.get()获取密钥,删除重复的加载逻辑
- 所有工具脚本今后统一import secrets_loader → 一个入口管理所有密钥
2026-06-26 13:59:30 +08:00

59 lines
1.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.

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