Files
WebAI2API/lib/backend/index.js
T

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 };
}