import { post } from './request'; import { ProjectTypeEnum } from './enums'; import { ApiResponse } from './common'; // 剧本转分镜头请求接口 export interface ScriptToSceneRequest { script: string; project_type: ProjectTypeEnum.SCRIPT_TO_VIDEO; } // 视频转分镜头请求接口 export interface VideoToSceneRequest { video_url: string; project_type: ProjectTypeEnum.VIDEO_TO_VIDEO; } // 转换分镜头请求类型 export type ConvertScenePromptRequest = ScriptToSceneRequest | VideoToSceneRequest; // 转换分镜头响应数据接口 export interface ConvertScenePromptData { task_id: string; status: string; shots_count?: number; // 剧本模式返回的分镜头数量 video_url?: string; // 视频模式返回的视频链接 estimated_time: number; // 预估处理时间(秒) } // 转换分镜头响应接口 export type ConvertScenePromptResponse = ApiResponse; /** * 将剧本或视频转换为分镜头提示词 * @param request - 请求参数,根据 project_type 自动判断是剧本还是视频模式 * @returns Promise */ export const convertScenePrompt = async ( request: ConvertScenePromptRequest ): Promise => { return post('/video_flow/convert-scene-prompts', request); }; /** * 剧本转分镜头提示词 * @param script - 剧本内容 * @returns Promise */ export const convertScriptToScene = async ( script: string ): Promise => { return convertScenePrompt({ script, project_type: ProjectTypeEnum.SCRIPT_TO_VIDEO }); }; /** * 视频转分镜头提示词 * @param video_url - 视频链接 * @returns Promise */ export const convertVideoToScene = async ( video_url: string ): Promise => { return convertScenePrompt({ video_url, project_type: ProjectTypeEnum.VIDEO_TO_VIDEO }); };