mirror of
https://github.com/foxhui/WebAI2API.git
synced 2026-06-16 21:03:59 +08:00
66 lines
2.2 KiB
JavaScript
66 lines
2.2 KiB
JavaScript
import fs from 'fs';
|
|
import path from 'path';
|
|
import { loadConfig } from '../utils/config.js';
|
|
import * as lmarenaBackend from './adapter/lmarena.js';
|
|
import * as geminiBackend from './adapter/gemini_biz.js';
|
|
import * as nanobananafreeBackend from './adapter/nanobananafree_ai.js';
|
|
import * as zaiIsBackend from './adapter/zai_is.js';
|
|
|
|
// --- 集中管理的路径常量 ---
|
|
const USER_DATA_DIR = path.join(process.cwd(), 'data', 'camoufoxUserData');
|
|
const TEMP_DIR = path.join(process.cwd(), 'data', 'temp');
|
|
|
|
// 确保必要目录存在
|
|
if (!fs.existsSync(USER_DATA_DIR)) {
|
|
fs.mkdirSync(USER_DATA_DIR, { recursive: true });
|
|
}
|
|
if (!fs.existsSync(TEMP_DIR)) {
|
|
fs.mkdirSync(TEMP_DIR, { recursive: true });
|
|
}
|
|
|
|
const config = loadConfig();
|
|
|
|
// 将路径常量注入 config 对象
|
|
config.paths = {
|
|
userDataDir: USER_DATA_DIR,
|
|
tempDir: TEMP_DIR
|
|
};
|
|
|
|
let activeBackend;
|
|
|
|
switch (config.backend?.type) {
|
|
case 'gemini_biz':
|
|
activeBackend = {
|
|
name: 'gemini_biz',
|
|
initBrowser: (cfg) => geminiBackend.initBrowser(cfg),
|
|
generateImage: (ctx, prompt, paths, model, meta) => geminiBackend.generateImage(ctx, prompt, paths, model, meta)
|
|
};
|
|
break;
|
|
case 'nanobananafree_ai':
|
|
activeBackend = {
|
|
name: 'nanobananafree_ai',
|
|
initBrowser: (cfg) => nanobananafreeBackend.initBrowser(cfg),
|
|
generateImage: (ctx, prompt, paths, model, meta) => nanobananafreeBackend.generateImage(ctx, prompt, paths, model, meta)
|
|
};
|
|
break;
|
|
case 'zai_is':
|
|
activeBackend = {
|
|
name: 'zai_is',
|
|
initBrowser: (cfg) => zaiIsBackend.initBrowser(cfg),
|
|
generateImage: (ctx, prompt, paths, model, meta) => zaiIsBackend.generateImage(ctx, prompt, paths, model, meta)
|
|
};
|
|
break;
|
|
case 'lmarena':
|
|
default:
|
|
activeBackend = {
|
|
name: 'lmarena',
|
|
initBrowser: (cfg) => lmarenaBackend.initBrowser(cfg),
|
|
generateImage: (ctx, prompt, paths, model, meta) => lmarenaBackend.generateImage(ctx, prompt, paths, model, meta)
|
|
};
|
|
break;
|
|
}
|
|
|
|
export function getBackend() {
|
|
return { config, TEMP_DIR, ...activeBackend };
|
|
}
|