2025-05-31 21:17:01 +08:00

78 lines
2.3 KiB
TypeScript

import _ from "lodash";
import Request from "@/lib/request/Request.ts";
import { generateVideo } from "@/api/controllers/video.ts";
import { tokenSplit } from "@/api/controllers/core.ts";
import util from "@/lib/util.ts";
import { VideoTaskCache } from '@/api/VideoTaskCache.ts';
export default {
prefix: "/v1/video",
get: {
"/query": async (request: Request) => {
const videoTaskCache = VideoTaskCache.getInstance();
request
.validate("query.task_id", _.isString) // 从 query 中校验
const {
task_id,
} = request.query; // 从 query 中获取
let res = videoTaskCache.getTaskStatus(task_id);
// console.log("查询任务状态", task_id, 'res:',res);
if(typeof res === 'string'){
return {
created: util.unixTimestamp(),
data:{task_id, url:res, status:-1},
};
}else{
return {
created: util.unixTimestamp(),
data:{task_id, url:"", status:res||0},
};
}
},
},
post: {
"/generations": async (request: Request) => {
request
.validate("body.model", v => _.isUndefined(v) || _.isString(v))
.validate("body.task_id", _.isString)
.validate("body.prompt", _.isString)
.validate("body.image", v => _.isUndefined(v) || _.isString(v))
.validate("body.width", v => _.isUndefined(v) || _.isFinite(v))
.validate("body.height", v => _.isUndefined(v) || _.isFinite(v))
.validate("body.duration", v => _.isUndefined(v) || _.isFinite(v))
.validate("headers.authorization", _.isString);
// refresh_token切分
const tokens = tokenSplit(request.headers.authorization);
// 随机挑选一个refresh_token
const token = _.sample(tokens);
const {
task_id,
model,
prompt,
width,
height,
image,
duration,
} = request.body;
// const imageUrls = await generateVideo(model, task_id, prompt, {
//不等结果 直接返回
generateVideo(model, task_id, prompt, {
width,
height,
imgURL:image,
duration:duration*1000,
}, token);
// let data = [];
// data = imageUrls.map((url) => ({
// url,
// }));
return {
created: util.unixTimestamp(),
data:'success',
};
},
},
};