2 lines
1.5 KiB
JavaScript
2 lines
1.5 KiB
JavaScript
|
|
import{a}from"./index-2fb4354b.js";const c={createTask(t){if(!t)throw new Error("参数不能为空");if(!t.prompt||t.prompt.trim()==="")throw new Error("文本描述不能为空");if(t.prompt.trim().length>1e3)throw new Error("文本描述不能超过1000个字符");if(!t.aspectRatio)throw new Error("视频比例不能为空");if(!t.duration||t.duration<1||t.duration>60)throw new Error("视频时长必须在1-60秒之间");return a({url:"/text-to-video/create",method:"POST",data:{prompt:t.prompt.trim(),aspectRatio:t.aspectRatio,duration:t.duration,hdMode:t.hdMode}})},getTasks(t=0,i=10){return a({url:"/text-to-video/tasks",method:"GET",params:{page:t,size:i}})},getTaskDetail(t){return a({url:`/text-to-video/tasks/${t}`,method:"GET"})},getTaskStatus(t){return a({url:`/text-to-video/tasks/${t}/status`,method:"GET"})},pollTaskStatus(t,i,l,e){let s=!0,u=0;const d=30,n=async()=>{if(!s||u>=d){u>=d&&e&&e(new Error("任务超时"));return}try{const o=await a({url:`/text-to-video/tasks/${t}/status`,method:"GET"});if(!o||!o.data||!o.data.success){e&&e(new Error("获取任务状态失败")),s=!1;return}const r=o.data.data;if(!r||!r.status){e&&e(new Error("无效的任务数据")),s=!1;return}if(r.status==="COMPLETED"){l&&l(r),s=!1;return}if(r.status==="FAILED"||r.status==="CANCELLED"){e&&e(new Error(r.errorMessage||"任务失败")),s=!1;return}i&&i({status:r.status,progress:r.progress||0,resultUrl:r.resultUrl}),u++,setTimeout(n,12e4)}catch(o){console.error("轮询任务状态失败:",o),e&&e(o),s=!1}};return n(),()=>{s=!1}}};export{c as t};
|