File size: 2,083 Bytes
65d68f5
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
import { apiGet, apiPost } from "@/lib/api/client";
import type {
  GenerateAudioRequest,
  GenerateAudioResponse,
  RenderFinalVideoRequest,
  RenderFinalVideoResponse,
  StudyVideoJobRequest,
  StudyVideoJobResponse,
  StudyVideoPreviewResponse,
  VideoRenderJob,
  VideoRenderListResponse,
  VideoRenderRequest,
  VideoRenderStatusResponse,
  VideoScenePlanRequest,
  VideoScenePlanResponse,
} from "@/lib/api/types";

export async function createVideoScenePlan(payload: VideoScenePlanRequest) {
  return apiPost<VideoScenePlanResponse, VideoScenePlanRequest>(
    "/video/scene-plan",
    payload,
    { timeoutMs: 60000 },
  );
}

export async function generateVideoAudio(payload: GenerateAudioRequest) {
  return apiPost<GenerateAudioResponse, GenerateAudioRequest>(
    "/video/generate-audio",
    payload,
    { timeoutMs: 300000 },
  );
}

export async function renderFinalVideo(payload: RenderFinalVideoRequest) {
  return apiPost<RenderFinalVideoResponse, RenderFinalVideoRequest>(
    "/video/render-final",
    payload,
    { timeoutMs: 120000 },
  );
}

export async function createVideoRenderJob(payload: VideoRenderRequest) {
  return apiPost<VideoRenderJob, VideoRenderRequest>(
    "/video/render-jobs",
    payload,
    { timeoutMs: 60000 },
  );
}

export async function createStudyVideoJob(payload: StudyVideoJobRequest) {
  return apiPost<StudyVideoJobResponse, StudyVideoJobRequest>(
    "/video/study-video-jobs",
    payload,
    { timeoutMs: 60000 },
  );
}

export async function renderStudyVideoPreview(jobId: string) {
  return apiPost<StudyVideoPreviewResponse, Record<string, never>>(
    `/video/study-video-jobs/${jobId}/render-preview`,
    {},
    { timeoutMs: 60000 },
  );
}

export async function getVideoRenderJob(jobId: string) {
  return apiGet<VideoRenderStatusResponse>(`/video/render-jobs/${jobId}`);
}

export async function listVideoRenderJobs(limit = 20) {
  return apiGet<VideoRenderListResponse>(`/video/render-jobs?limit=${limit}`);
}

export const getVideoJob = getVideoRenderJob;
export const listVideoJobs = listVideoRenderJobs;