-
Notifications
You must be signed in to change notification settings - Fork 23
Expand file tree
/
Copy pathvideos.py
More file actions
126 lines (114 loc) · 3.69 KB
/
videos.py
File metadata and controls
126 lines (114 loc) · 3.69 KB
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
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
from __future__ import annotations
from typing import TYPE_CHECKING, List, Optional
import httpx
from zai.core import (
NOT_GIVEN,
BaseAPI,
Body,
Headers,
NotGiven,
deepcopy_minimal,
make_request_options,
maybe_transform,
)
from zai.types.sensitive_word_check import SensitiveWordCheckRequest
from zai.types.video import VideoObject, video_create_params
if TYPE_CHECKING:
from zai._client import ZaiClient
class Videos(BaseAPI):
"""
API resource for video generation operations
"""
def __init__(self, client: 'ZaiClient') -> None:
super().__init__(client)
def generations(
self,
*,
model: str,
prompt: str = None,
image_url: str | List[str] | dict | None = None,
quality: str = None,
with_audio: bool = None,
size: str = None,
duration: int = None,
fps: int = None,
style: str = None,
aspect_ratio: str = None,
movement_amplitude: str = None,
sensitive_word_check: Optional[SensitiveWordCheckRequest] | NotGiven = NOT_GIVEN,
request_id: str = None,
user_id: str = None,
extra_headers: Headers | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
) -> VideoObject:
"""
Generate videos from text prompts or images
Arguments:
model (str): The model to use for video generation
prompt (str): Text description for video generation
image_url (str | List[str] | dict): Image(s) for video generation (URL, Base64, or object)
quality (str): Output mode, "quality" or "speed"
with_audio (bool): Whether to include audio in the video
size (str): Size/resolution of the generated video
duration (int): Duration of the video in seconds
fps (int): Frames per second for the video
style (str): Style, e.g., "general", "anime"
aspect_ratio (str): Aspect ratio, e.g., "16:9", "9:16", "1:1"
movement_amplitude (str): Movement amplitude, e.g., "auto", "small", "medium", "large"
sensitive_word_check (Optional[SensitiveWordCheckRequest]): Sensitive word check configuration
request_id (str): Unique identifier for the request
user_id (str): User identifier
extra_headers (Headers): Additional headers to send
extra_body (Body): Additional body parameters
timeout (float | httpx.Timeout): Request timeout
"""
if not model:
raise ValueError('`model` must be provided.')
body = deepcopy_minimal(
{
'model': model,
'prompt': prompt,
'image_url': image_url,
'quality': quality,
'with_audio': with_audio,
'size': size,
'duration': duration,
'fps': fps,
'style': style,
'aspect_ratio': aspect_ratio,
'movement_amplitude': movement_amplitude,
'sensitive_word_check': sensitive_word_check,
'request_id': request_id,
'user_id': user_id,
}
)
return self._post(
'/videos/generations',
body=maybe_transform(body, video_create_params.VideoCreateParams),
options=make_request_options(extra_headers=extra_headers, extra_body=extra_body, timeout=timeout),
cast_type=VideoObject,
)
def retrieve_videos_result(
self,
id: str,
*,
extra_headers: Headers | None = None,
extra_body: Body | None = None,
timeout: float | httpx.Timeout | None | NotGiven = NOT_GIVEN,
) -> VideoObject:
"""
Retrieve the result of a video generation operation
Arguments:
id (str): Unique identifier for the video generation operation
extra_headers (Headers): Additional headers to send
extra_body (Body): Additional body parameters
timeout (float | httpx.Timeout): Request timeout
"""
if not id:
raise ValueError('At least one of `id` must be provided.')
return self._get(
f'/async-result/{id}',
options=make_request_options(extra_headers=extra_headers, extra_body=extra_body, timeout=timeout),
cast_type=VideoObject,
)