teston / config.py
tang568's picture
Upload 10 files
0364a21 verified
Raw
History Blame Contribute Delete
2.72 kB
import os
from dotenv import load_dotenv
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
env_path = os.path.join(BASE_DIR, ".env")
load_dotenv(env_path)
def _load_accounts():
accounts = []
# 1. Try reading from accounts.txt
accounts_file = os.path.join(BASE_DIR, "accounts.txt")
if os.path.exists(accounts_file):
try:
with open(accounts_file, "r", encoding="utf-8") as f:
for line in f:
line = line.strip()
if line and ":" in line and not line.startswith("#"):
accounts.append(line)
except Exception:
pass
# 2. Try environments
if not accounts:
env_acc = os.getenv("ONYX_ACCOUNTS", "")
if env_acc:
accounts = [a.strip() for a in env_acc.split(",") if a.strip() and ":" in a]
return accounts
ONYX_ACCOUNTS = _load_accounts()
# --- Onyx settings ---
ONYX_BASE_URL = os.getenv("ONYX_BASE_URL", "https://cloud.onyx.app").rstrip("/")
ONYX_AUTH_COOKIE_RAW = os.getenv("ONYX_AUTH_COOKIE", "")
ONYX_AUTH_COOKIES = [c.strip() for c in ONYX_AUTH_COOKIE_RAW.split(",") if c.strip()]
# 为了保持向下兼容或作为默认值,保留单数变量指向第一个 Cookie
ONYX_AUTH_COOKIE = ONYX_AUTH_COOKIES[0] if ONYX_AUTH_COOKIES else ""
try:
ONYX_PERSONA_ID = int(os.getenv("ONYX_PERSONA_ID", "0"))
except ValueError:
ONYX_PERSONA_ID = 0
ONYX_ORIGIN = os.getenv("ONYX_ORIGIN", "webapp")
ONYX_REFERER = os.getenv("ONYX_REFERER", "https://cloud.onyx.app/app")
# --- Server settings ---
API_KEY = os.getenv("API_KEY", "") # Empty = no auth required
try:
PORT = int(os.getenv("PORT", "8896"))
except ValueError:
PORT = 8896
LOG_LEVEL = os.getenv("LOG_LEVEL", "INFO")
try:
REQUEST_TIMEOUT = int(os.getenv("REQUEST_TIMEOUT", "300"))
except ValueError:
REQUEST_TIMEOUT = 300
# --- Stealth settings ---
STEALTH_MODE = os.getenv("STEALTH_MODE", "true").lower() == "true"
STEALTH_MIN_DELAY = float(os.getenv("STEALTH_MIN_DELAY", "0.05"))
STEALTH_MAX_DELAY = float(os.getenv("STEALTH_MAX_DELAY", "0.3"))
# --- Model mapping: external name -> (provider, version) ---
MODEL_MAP = {
"claude-opus-4.7": ("Anthropic", "claude-opus-4-7"),
"claude-opus-4.6": ("Anthropic", "claude-opus-4-6"),
"claude-opus-4.5": ("Anthropic", "claude-opus-4-5"),
"claude-sonnet-4.5": ("Anthropic", "claude-sonnet-4-5"),
"gpt-5.4": ("OpenAI", "gpt-5.4"),
"gpt-5.2": ("OpenAI", "gpt-5.2"),
"gpt-5-mini": ("OpenAI", "gpt-5-mini"),
"gpt-4.1": ("OpenAI", "gpt-4.1"),
"gpt-4o": ("OpenAI", "gpt-4o"),
"o3": ("OpenAI", "o3"),
}