forked from 77media/video-flow
82 lines
2.2 KiB
TypeScript
82 lines
2.2 KiB
TypeScript
import { post } from './request';
|
|
import { ProjectTypeEnum } from './enums';
|
|
import { ApiResponse } from './common';
|
|
|
|
// 剧本转分镜头请求接口
|
|
export interface ScriptToSceneRequest {
|
|
script: string;
|
|
episode_id: number;
|
|
script_id: number;
|
|
project_type: ProjectTypeEnum.SCRIPT_TO_VIDEO;
|
|
}
|
|
|
|
// 视频转分镜头请求接口
|
|
export interface VideoToSceneRequest {
|
|
video_url: string;
|
|
episode_id: number;
|
|
script_id: number;
|
|
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<ConvertScenePromptData>;
|
|
|
|
/**
|
|
* 将剧本或视频转换为分镜头提示词
|
|
* @param request - 请求参数,根据 project_type 自动判断是剧本还是视频模式
|
|
* @returns Promise<ConvertScenePromptResponse>
|
|
*/
|
|
export const convertScenePrompt = async (
|
|
request: ConvertScenePromptRequest
|
|
): Promise<ConvertScenePromptResponse> => {
|
|
return post<ConvertScenePromptResponse>('/video_flow/convert-scene-prompts', request);
|
|
};
|
|
|
|
/**
|
|
* 剧本转分镜头提示词
|
|
* @param script - 剧本内容
|
|
* @returns Promise<ConvertScenePromptResponse>
|
|
*/
|
|
export const convertScriptToScene = async (
|
|
script: string,
|
|
episode_id: number,
|
|
script_id: number
|
|
): Promise<ConvertScenePromptResponse> => {
|
|
return convertScenePrompt({
|
|
script,
|
|
episode_id,
|
|
script_id,
|
|
project_type: ProjectTypeEnum.SCRIPT_TO_VIDEO
|
|
});
|
|
};
|
|
|
|
/**
|
|
* 视频转分镜头提示词
|
|
* @param video_url - 视频链接
|
|
* @returns Promise<ConvertScenePromptResponse>
|
|
*/
|
|
export const convertVideoToScene = async (
|
|
video_url: string,
|
|
episode_id: number,
|
|
script_id: number
|
|
): Promise<ConvertScenePromptResponse> => {
|
|
return convertScenePrompt({
|
|
video_url,
|
|
episode_id,
|
|
script_id,
|
|
project_type: ProjectTypeEnum.VIDEO_TO_VIDEO
|
|
});
|
|
};
|