forked from 77media/video-flow
84 lines
2.7 KiB
TypeScript
84 lines
2.7 KiB
TypeScript
import {
|
|
TaskObject,
|
|
SketchItem,
|
|
VideoItem,
|
|
MOCK_SKETCH_URLS,
|
|
MOCK_SKETCH_SCRIPT,
|
|
MOCK_VIDEO_URLS,
|
|
MOCK_SKETCH_COUNT
|
|
} from './constants';
|
|
|
|
// 模拟接口请求 获取任务详情
|
|
export const getTaskDetail = async (taskId: string): Promise<TaskObject> => {
|
|
// const response = await fetch(`/api/task/${taskId}`);
|
|
// const data = await response.json();
|
|
// mock data
|
|
const data: TaskObject = {
|
|
projectId: 'projectId-123',
|
|
projectName: "Project 1",
|
|
taskId: taskId,
|
|
taskName: "Task 1",
|
|
taskDescription: "Task 1 Description",
|
|
taskStatus: "1", // '1' 绘制分镜、'2' 绘制角色、'3' 生成分镜视频、'4' 视频后期制作、'5' 最终成品
|
|
taskProgress: 0,
|
|
mode: 'auto', // 全自动模式、人工干预模式
|
|
resolution: '1080p', // 1080p、2160p
|
|
};
|
|
return data;
|
|
};
|
|
|
|
// 模拟接口请求 每次获取一个分镜草图 轮询获取
|
|
export const getTaskSketch = async (
|
|
taskId: string,
|
|
onProgress: (sketch: SketchItem, index: number) => void
|
|
): Promise<void> => {
|
|
// 模拟分批获取分镜草图
|
|
for (let i = 0; i < MOCK_SKETCH_COUNT; i++) {
|
|
await new Promise(resolve => setTimeout(resolve, 2000)); // 模拟2秒延迟
|
|
|
|
const newSketch: SketchItem = {
|
|
id: `sketch-${i}`,
|
|
url: MOCK_SKETCH_URLS[i % MOCK_SKETCH_URLS.length],
|
|
script: MOCK_SKETCH_SCRIPT[i % MOCK_SKETCH_SCRIPT.length],
|
|
status: 'done'
|
|
};
|
|
|
|
onProgress(newSketch, i);
|
|
}
|
|
};
|
|
|
|
// 模拟接口请求 每次获取一个角色 轮询获取
|
|
export const getTaskRole = async (taskId: string): Promise<void> => {
|
|
await new Promise(resolve => setTimeout(resolve, 2000)); // 模拟2秒延迟
|
|
};
|
|
|
|
// 模拟接口请求 获取背景音
|
|
export const getTaskBackgroundAudio = async (taskId: string): Promise<void> => {
|
|
await new Promise(resolve => setTimeout(resolve, 2000)); // 模拟2秒延迟
|
|
};
|
|
|
|
// 模拟接口请求 获取最终成品
|
|
export const getTaskFinalProduct = async (taskId: string): Promise<void> => {
|
|
await new Promise(resolve => setTimeout(resolve, 2000)); // 模拟2秒延迟
|
|
};
|
|
|
|
// 模拟接口请求 每次获取一个分镜视频 轮询获取
|
|
export const getTaskVideo = async (
|
|
taskId: string,
|
|
sketchCount: number,
|
|
onProgress: (video: VideoItem, index: number) => void
|
|
): Promise<void> => {
|
|
// 模拟分批获取分镜视频
|
|
for (let i = 0; i < sketchCount; i++) {
|
|
await new Promise(resolve => setTimeout(resolve, 5000)); // 模拟5秒延迟
|
|
|
|
const newVideo: VideoItem = {
|
|
id: `video-${i}`,
|
|
url: MOCK_VIDEO_URLS[i % MOCK_VIDEO_URLS.length],
|
|
script: MOCK_SKETCH_SCRIPT[i % MOCK_SKETCH_SCRIPT.length],
|
|
status: 'done'
|
|
};
|
|
|
|
onProgress(newVideo, i);
|
|
}
|
|
};
|