48 lines
1.2 KiB
TypeScript
48 lines
1.2 KiB
TypeScript
import express from "express";
|
|
import { success, error } from "@/lib/responseFormat";
|
|
import u from "@/utils";
|
|
import { validateFields } from "@/middleware/middleware";
|
|
import { z } from "zod";
|
|
const router = express.Router();
|
|
|
|
// 检查语言模型
|
|
export default router.post(
|
|
"/",
|
|
validateFields({
|
|
modelName: z.string().optional(),
|
|
apiKey: z.string(),
|
|
baseURL: z.string().optional(),
|
|
manufacturer: z.string(),
|
|
}),
|
|
async (req, res) => {
|
|
const { modelName, apiKey, baseURL, manufacturer } = req.body;
|
|
try {
|
|
const duration = manufacturer == "gemini" ? 4 : 5;
|
|
const videoPath = await u.ai.video(
|
|
{
|
|
imageBase64: [],
|
|
savePath: "test.mp4",
|
|
prompt: "stickman Dances",
|
|
duration: duration,
|
|
resolution: "720p",
|
|
aspectRatio: "16:9",
|
|
audio: false,
|
|
mode: "single",
|
|
},
|
|
{
|
|
model: modelName,
|
|
apiKey,
|
|
baseURL,
|
|
manufacturer,
|
|
},
|
|
);
|
|
const url = await u.oss.getFileUrl(videoPath);
|
|
res.status(200).send(success(url));
|
|
} catch (err: any) {
|
|
const msg = u.error(err).message;
|
|
console.error(msg);
|
|
res.status(500).send(error(msg));
|
|
}
|
|
},
|
|
);
|