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