Full blog engine source: build_blog.py, content, deploy scripts

This commit is contained in:
2026-06-28 17:36:44 +00:00
commit 7767979538
34 changed files with 3272 additions and 0 deletions

92
config.py Normal file
View File

@ -0,0 +1,92 @@
"""
GFIL BLOG 统一配置加载器
用法: from config import TELEGRAPH_TOKEN, BLOG_URL, ...
所有密钥从 .env 加载,修改密钥只需改 .env 一个文件
"""
import os
import sys
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
ENV_FILE = os.path.join(BASE_DIR, ".env")
def _load_env():
"""手动解析 .env零依赖"""
env = {}
if os.path.exists(ENV_FILE):
with open(ENV_FILE, "r", encoding="utf-8") as f:
for line in f:
line = line.strip()
if not line or line.startswith("#") or "=" not in line:
continue
key, _, val = line.partition("=")
env[key.strip()] = val.strip().strip('"').strip("'")
return env
_env = _load_env()
def _get(key, default=""):
"""优先环境变量,其次 .env 文件"""
return os.environ.get(key) or _env.get(key, default)
# --- 服务器 ---
SSH_HOST = _get("SSH_HOST", "")
SSH_USER = _get("SSH_USER", "root")
SSH_PASS = _get("SSH_PASS")
SSH_PORT = int(_get("SSH_PORT", "22"))
# --- API Keys ---
TELEGRAPH_TOKEN = _get("TELEGRAPH_TOKEN")
GITHUB_TOKEN = _get("GITHUB_TOKEN")
GITHUB_TOKEN_ALT = _get("GITHUB_TOKEN_ALT")
TG_BOT_TOKEN = _get("TG_BOT_TOKEN")
DISCORD_WEBHOOK = _get("DISCORD_WEBHOOK")
DEEPSEEK_KEY = _get("DEEPSEEK_KEY")
DEVTO_KEY = _get("DEVTO_KEY")
INDEXNOW_KEY = _get("INDEXNOW_KEY")
SCREENSHOTONE_KEY = _get("SCREENSHOTONE_KEY")
SHOTSTACK_KEY = _get("SHOTSTACK_KEY")
BUFFER_TOKEN = _get("BUFFER_TOKEN")
# --- Google ---
GOOGLE_EMAIL = _get("GOOGLE_EMAIL")
GOOGLE_PASS = _get("GOOGLE_PASS")
SMTP_PASS = _get("SMTP_PASS")
GA_ID = _get("GA_ID")
GOOGLE_VERIFY = _get("GOOGLE_VERIFY")
# --- URLs ---
BLOG_URL = _get("BLOG_URL", "https://blog.quant-view.xyz")
TERMINAL_URL = _get("TERMINAL_URL", "https://gfil-intel.xyz")
LANDING_URL = _get("LANDING_URL", "https://gold-node.xyz")
TG_CHANNEL = _get("TG_CHANNEL", "https://t.me/GFIL_Trading")
DISCORD_INVITE = _get("DISCORD_INVITE", "https://discord.gg/GMmMCD4MCr")
TOOLS_URL = f"{BLOG_URL}/tools/"
# --- 本地代理 ---
HTTP_PROXY = _get("HTTP_PROXY")
# --- 邮箱 ---
MAILERLITE_GROUP_ID = "189341033455158511"
# --- 密钥状态检查 ---
def check_config():
"""打印配置状态,快速发现过期密钥"""
keys = {
"Telegraph": TELEGRAPH_TOKEN,
"GitHub": GITHUB_TOKEN,
"TG Bot": TG_BOT_TOKEN,
"Discord": DISCORD_WEBHOOK,
"DeepSeek": DEEPSEEK_KEY,
}
print("=== 配置状态检查 ===")
for name, val in keys.items():
if not val:
print(f" {name}: MISSING!")
elif "expired" in val.lower() or "invalid" in val.lower():
print(f" {name}: EXPIRED/INVALID")
else:
masked = val[:15] + "..." if len(val) > 15 else val
print(f" {name}: {masked}")
if __name__ == "__main__":
check_config()