magic_hour 0.12.1__py3-none-any.whl → 0.14.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of magic_hour might be problematic. Click here for more details.
- magic_hour/environment.py +1 -1
- magic_hour/resources/v1/ai_meme_generator/README.md +41 -0
- magic_hour/resources/v1/ai_meme_generator/__init__.py +4 -0
- magic_hour/resources/v1/ai_meme_generator/client.py +127 -0
- magic_hour/resources/v1/ai_photo_editor/client.py +4 -0
- magic_hour/resources/v1/animation/client.py +10 -2
- magic_hour/resources/v1/client.py +8 -0
- magic_hour/resources/v1/face_swap/client.py +10 -2
- magic_hour/resources/v1/image_to_video/README.md +2 -2
- magic_hour/resources/v1/image_to_video/client.py +4 -4
- magic_hour/resources/v1/lip_sync/client.py +2 -0
- magic_hour/resources/v1/text_to_video/README.md +2 -2
- magic_hour/resources/v1/text_to_video/client.py +2 -2
- magic_hour/resources/v1/video_to_video/README.md +2 -2
- magic_hour/resources/v1/video_to_video/client.py +8 -2
- magic_hour/types/models/__init__.py +2 -0
- magic_hour/types/models/v1_ai_meme_generator_create_response.py +25 -0
- magic_hour/types/models/v1_image_projects_get_response.py +4 -10
- magic_hour/types/models/v1_video_projects_get_response.py +4 -10
- magic_hour/types/params/__init__.py +12 -0
- magic_hour/types/params/v1_ai_meme_generator_create_body.py +37 -0
- magic_hour/types/params/v1_ai_meme_generator_create_body_style.py +73 -0
- magic_hour/types/params/v1_image_to_video_create_body.py +3 -0
- magic_hour/types/params/v1_image_to_video_create_body_style.py +14 -5
- magic_hour/types/params/v1_text_to_video_create_body_style.py +12 -0
- {magic_hour-0.12.1.dist-info → magic_hour-0.14.0.dist-info}/METADATA +5 -1
- {magic_hour-0.12.1.dist-info → magic_hour-0.14.0.dist-info}/RECORD +29 -23
- {magic_hour-0.12.1.dist-info → magic_hour-0.14.0.dist-info}/LICENSE +0 -0
- {magic_hour-0.12.1.dist-info → magic_hour-0.14.0.dist-info}/WHEEL +0 -0
magic_hour/environment.py
CHANGED
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
|
|
2
|
+
### create <a name="create"></a>
|
|
3
|
+
AI Meme Generator
|
|
4
|
+
|
|
5
|
+
Create an AI generated meme. Each meme costs 10 frames.
|
|
6
|
+
|
|
7
|
+
**API Endpoint**: `POST /v1/ai-meme-generator`
|
|
8
|
+
|
|
9
|
+
#### Synchronous Client
|
|
10
|
+
|
|
11
|
+
```python
|
|
12
|
+
from magic_hour import Client
|
|
13
|
+
from os import getenv
|
|
14
|
+
|
|
15
|
+
client = Client(token=getenv("API_TOKEN"))
|
|
16
|
+
res = client.v1.ai_meme_generator.create(
|
|
17
|
+
style={
|
|
18
|
+
"search_web": False,
|
|
19
|
+
"template": "Drake Hotline Bling",
|
|
20
|
+
"topic": "When the code finally works",
|
|
21
|
+
},
|
|
22
|
+
name="My Funny Meme",
|
|
23
|
+
)
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
#### Asynchronous Client
|
|
27
|
+
|
|
28
|
+
```python
|
|
29
|
+
from magic_hour import AsyncClient
|
|
30
|
+
from os import getenv
|
|
31
|
+
|
|
32
|
+
client = AsyncClient(token=getenv("API_TOKEN"))
|
|
33
|
+
res = await client.v1.ai_meme_generator.create(
|
|
34
|
+
style={
|
|
35
|
+
"search_web": False,
|
|
36
|
+
"template": "Drake Hotline Bling",
|
|
37
|
+
"topic": "When the code finally works",
|
|
38
|
+
},
|
|
39
|
+
name="My Funny Meme",
|
|
40
|
+
)
|
|
41
|
+
```
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import typing
|
|
2
|
+
|
|
3
|
+
from magic_hour.core import (
|
|
4
|
+
AsyncBaseClient,
|
|
5
|
+
RequestOptions,
|
|
6
|
+
SyncBaseClient,
|
|
7
|
+
default_request_options,
|
|
8
|
+
to_encodable,
|
|
9
|
+
type_utils,
|
|
10
|
+
)
|
|
11
|
+
from magic_hour.types import models, params
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class AiMemeGeneratorClient:
|
|
15
|
+
def __init__(self, *, base_client: SyncBaseClient):
|
|
16
|
+
self._base_client = base_client
|
|
17
|
+
|
|
18
|
+
def create(
|
|
19
|
+
self,
|
|
20
|
+
*,
|
|
21
|
+
style: params.V1AiMemeGeneratorCreateBodyStyle,
|
|
22
|
+
name: typing.Union[
|
|
23
|
+
typing.Optional[str], type_utils.NotGiven
|
|
24
|
+
] = type_utils.NOT_GIVEN,
|
|
25
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
26
|
+
) -> models.V1AiMemeGeneratorCreateResponse:
|
|
27
|
+
"""
|
|
28
|
+
AI Meme Generator
|
|
29
|
+
|
|
30
|
+
Create an AI generated meme. Each meme costs 10 frames.
|
|
31
|
+
|
|
32
|
+
POST /v1/ai-meme-generator
|
|
33
|
+
|
|
34
|
+
Args:
|
|
35
|
+
name: The name of the meme.
|
|
36
|
+
style: V1AiMemeGeneratorCreateBodyStyle
|
|
37
|
+
request_options: Additional options to customize the HTTP request
|
|
38
|
+
|
|
39
|
+
Returns:
|
|
40
|
+
Success
|
|
41
|
+
|
|
42
|
+
Raises:
|
|
43
|
+
ApiError: A custom exception class that provides additional context
|
|
44
|
+
for API errors, including the HTTP status code and response body.
|
|
45
|
+
|
|
46
|
+
Examples:
|
|
47
|
+
```py
|
|
48
|
+
client.v1.ai_meme_generator.create(
|
|
49
|
+
style={
|
|
50
|
+
"search_web": False,
|
|
51
|
+
"template": "Drake Hotline Bling",
|
|
52
|
+
"topic": "When the code finally works",
|
|
53
|
+
},
|
|
54
|
+
name="My Funny Meme",
|
|
55
|
+
)
|
|
56
|
+
```
|
|
57
|
+
"""
|
|
58
|
+
_json = to_encodable(
|
|
59
|
+
item={"name": name, "style": style},
|
|
60
|
+
dump_with=params._SerializerV1AiMemeGeneratorCreateBody,
|
|
61
|
+
)
|
|
62
|
+
return self._base_client.request(
|
|
63
|
+
method="POST",
|
|
64
|
+
path="/v1/ai-meme-generator",
|
|
65
|
+
auth_names=["bearerAuth"],
|
|
66
|
+
json=_json,
|
|
67
|
+
cast_to=models.V1AiMemeGeneratorCreateResponse,
|
|
68
|
+
request_options=request_options or default_request_options(),
|
|
69
|
+
)
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
class AsyncAiMemeGeneratorClient:
|
|
73
|
+
def __init__(self, *, base_client: AsyncBaseClient):
|
|
74
|
+
self._base_client = base_client
|
|
75
|
+
|
|
76
|
+
async def create(
|
|
77
|
+
self,
|
|
78
|
+
*,
|
|
79
|
+
style: params.V1AiMemeGeneratorCreateBodyStyle,
|
|
80
|
+
name: typing.Union[
|
|
81
|
+
typing.Optional[str], type_utils.NotGiven
|
|
82
|
+
] = type_utils.NOT_GIVEN,
|
|
83
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
84
|
+
) -> models.V1AiMemeGeneratorCreateResponse:
|
|
85
|
+
"""
|
|
86
|
+
AI Meme Generator
|
|
87
|
+
|
|
88
|
+
Create an AI generated meme. Each meme costs 10 frames.
|
|
89
|
+
|
|
90
|
+
POST /v1/ai-meme-generator
|
|
91
|
+
|
|
92
|
+
Args:
|
|
93
|
+
name: The name of the meme.
|
|
94
|
+
style: V1AiMemeGeneratorCreateBodyStyle
|
|
95
|
+
request_options: Additional options to customize the HTTP request
|
|
96
|
+
|
|
97
|
+
Returns:
|
|
98
|
+
Success
|
|
99
|
+
|
|
100
|
+
Raises:
|
|
101
|
+
ApiError: A custom exception class that provides additional context
|
|
102
|
+
for API errors, including the HTTP status code and response body.
|
|
103
|
+
|
|
104
|
+
Examples:
|
|
105
|
+
```py
|
|
106
|
+
await client.v1.ai_meme_generator.create(
|
|
107
|
+
style={
|
|
108
|
+
"search_web": False,
|
|
109
|
+
"template": "Drake Hotline Bling",
|
|
110
|
+
"topic": "When the code finally works",
|
|
111
|
+
},
|
|
112
|
+
name="My Funny Meme",
|
|
113
|
+
)
|
|
114
|
+
```
|
|
115
|
+
"""
|
|
116
|
+
_json = to_encodable(
|
|
117
|
+
item={"name": name, "style": style},
|
|
118
|
+
dump_with=params._SerializerV1AiMemeGeneratorCreateBody,
|
|
119
|
+
)
|
|
120
|
+
return await self._base_client.request(
|
|
121
|
+
method="POST",
|
|
122
|
+
path="/v1/ai-meme-generator",
|
|
123
|
+
auth_names=["bearerAuth"],
|
|
124
|
+
json=_json,
|
|
125
|
+
cast_to=models.V1AiMemeGeneratorCreateResponse,
|
|
126
|
+
request_options=request_options or default_request_options(),
|
|
127
|
+
)
|
|
@@ -61,8 +61,10 @@ class AiPhotoEditorClient:
|
|
|
61
61
|
style={
|
|
62
62
|
"image_description": "A photo of a person",
|
|
63
63
|
"likeness_strength": 5.2,
|
|
64
|
+
"negative_prompt": "painting, cartoon, sketch",
|
|
64
65
|
"prompt": "A photo portrait of a person wearing a hat",
|
|
65
66
|
"prompt_strength": 3.75,
|
|
67
|
+
"steps": 4,
|
|
66
68
|
},
|
|
67
69
|
name="Photo Editor image",
|
|
68
70
|
)
|
|
@@ -138,8 +140,10 @@ class AsyncAiPhotoEditorClient:
|
|
|
138
140
|
style={
|
|
139
141
|
"image_description": "A photo of a person",
|
|
140
142
|
"likeness_strength": 5.2,
|
|
143
|
+
"negative_prompt": "painting, cartoon, sketch",
|
|
141
144
|
"prompt": "A photo portrait of a person wearing a hat",
|
|
142
145
|
"prompt_strength": 3.75,
|
|
146
|
+
"steps": 4,
|
|
143
147
|
},
|
|
144
148
|
name="Photo Editor image",
|
|
145
149
|
)
|
|
@@ -56,7 +56,11 @@ class AnimationClient:
|
|
|
56
56
|
Examples:
|
|
57
57
|
```py
|
|
58
58
|
client.v1.animation.create(
|
|
59
|
-
assets={
|
|
59
|
+
assets={
|
|
60
|
+
"audio_file_path": "api-assets/id/1234.mp3",
|
|
61
|
+
"audio_source": "file",
|
|
62
|
+
"image_file_path": "api-assets/id/1234.png",
|
|
63
|
+
},
|
|
60
64
|
end_seconds=15.0,
|
|
61
65
|
fps=12.0,
|
|
62
66
|
height=960,
|
|
@@ -139,7 +143,11 @@ class AsyncAnimationClient:
|
|
|
139
143
|
Examples:
|
|
140
144
|
```py
|
|
141
145
|
await client.v1.animation.create(
|
|
142
|
-
assets={
|
|
146
|
+
assets={
|
|
147
|
+
"audio_file_path": "api-assets/id/1234.mp3",
|
|
148
|
+
"audio_source": "file",
|
|
149
|
+
"image_file_path": "api-assets/id/1234.png",
|
|
150
|
+
},
|
|
143
151
|
end_seconds=15.0,
|
|
144
152
|
fps=12.0,
|
|
145
153
|
height=960,
|
|
@@ -15,6 +15,10 @@ from magic_hour.resources.v1.ai_image_upscaler import (
|
|
|
15
15
|
AiImageUpscalerClient,
|
|
16
16
|
AsyncAiImageUpscalerClient,
|
|
17
17
|
)
|
|
18
|
+
from magic_hour.resources.v1.ai_meme_generator import (
|
|
19
|
+
AiMemeGeneratorClient,
|
|
20
|
+
AsyncAiMemeGeneratorClient,
|
|
21
|
+
)
|
|
18
22
|
from magic_hour.resources.v1.ai_photo_editor import (
|
|
19
23
|
AiPhotoEditorClient,
|
|
20
24
|
AsyncAiPhotoEditorClient,
|
|
@@ -72,6 +76,7 @@ class V1Client:
|
|
|
72
76
|
)
|
|
73
77
|
self.ai_image_generator = AiImageGeneratorClient(base_client=self._base_client)
|
|
74
78
|
self.ai_image_upscaler = AiImageUpscalerClient(base_client=self._base_client)
|
|
79
|
+
self.ai_meme_generator = AiMemeGeneratorClient(base_client=self._base_client)
|
|
75
80
|
self.ai_photo_editor = AiPhotoEditorClient(base_client=self._base_client)
|
|
76
81
|
self.ai_qr_code_generator = AiQrCodeGeneratorClient(
|
|
77
82
|
base_client=self._base_client
|
|
@@ -107,6 +112,9 @@ class AsyncV1Client:
|
|
|
107
112
|
self.ai_image_upscaler = AsyncAiImageUpscalerClient(
|
|
108
113
|
base_client=self._base_client
|
|
109
114
|
)
|
|
115
|
+
self.ai_meme_generator = AsyncAiMemeGeneratorClient(
|
|
116
|
+
base_client=self._base_client
|
|
117
|
+
)
|
|
110
118
|
self.ai_photo_editor = AsyncAiPhotoEditorClient(base_client=self._base_client)
|
|
111
119
|
self.ai_qr_code_generator = AsyncAiQrCodeGeneratorClient(
|
|
112
120
|
base_client=self._base_client
|
|
@@ -57,7 +57,11 @@ class FaceSwapClient:
|
|
|
57
57
|
Examples:
|
|
58
58
|
```py
|
|
59
59
|
client.v1.face_swap.create(
|
|
60
|
-
assets={
|
|
60
|
+
assets={
|
|
61
|
+
"image_file_path": "image/id/1234.png",
|
|
62
|
+
"video_file_path": "api-assets/id/1234.mp4",
|
|
63
|
+
"video_source": "file",
|
|
64
|
+
},
|
|
61
65
|
end_seconds=15.0,
|
|
62
66
|
height=960,
|
|
63
67
|
start_seconds=0.0,
|
|
@@ -133,7 +137,11 @@ class AsyncFaceSwapClient:
|
|
|
133
137
|
Examples:
|
|
134
138
|
```py
|
|
135
139
|
await client.v1.face_swap.create(
|
|
136
|
-
assets={
|
|
140
|
+
assets={
|
|
141
|
+
"image_file_path": "image/id/1234.png",
|
|
142
|
+
"video_file_path": "api-assets/id/1234.mp4",
|
|
143
|
+
"video_source": "file",
|
|
144
|
+
},
|
|
137
145
|
end_seconds=15.0,
|
|
138
146
|
height=960,
|
|
139
147
|
start_seconds=0.0,
|
|
@@ -20,7 +20,7 @@ res = client.v1.image_to_video.create(
|
|
|
20
20
|
assets={"image_file_path": "api-assets/id/1234.png"},
|
|
21
21
|
end_seconds=5.0,
|
|
22
22
|
height=960,
|
|
23
|
-
style={"prompt":
|
|
23
|
+
style={"prompt": "a dog running"},
|
|
24
24
|
width=512,
|
|
25
25
|
name="Image To Video video",
|
|
26
26
|
)
|
|
@@ -37,7 +37,7 @@ res = await client.v1.image_to_video.create(
|
|
|
37
37
|
assets={"image_file_path": "api-assets/id/1234.png"},
|
|
38
38
|
end_seconds=5.0,
|
|
39
39
|
height=960,
|
|
40
|
-
style={"prompt":
|
|
40
|
+
style={"prompt": "a dog running"},
|
|
41
41
|
width=512,
|
|
42
42
|
name="Image To Video video",
|
|
43
43
|
)
|
|
@@ -43,7 +43,7 @@ class ImageToVideoClient:
|
|
|
43
43
|
assets: Provide the assets for image-to-video.
|
|
44
44
|
end_seconds: The total duration of the output video in seconds.
|
|
45
45
|
height: The height of the input video. This value will help determine the final orientation of the output video. The output video resolution may not match the input.
|
|
46
|
-
style:
|
|
46
|
+
style: Attributed used to dictate the style of the output
|
|
47
47
|
width: The width of the input video. This value will help determine the final orientation of the output video. The output video resolution may not match the input.
|
|
48
48
|
request_options: Additional options to customize the HTTP request
|
|
49
49
|
|
|
@@ -60,7 +60,7 @@ class ImageToVideoClient:
|
|
|
60
60
|
assets={"image_file_path": "api-assets/id/1234.png"},
|
|
61
61
|
end_seconds=5.0,
|
|
62
62
|
height=960,
|
|
63
|
-
style={"prompt": "
|
|
63
|
+
style={"prompt": "a dog running"},
|
|
64
64
|
width=512,
|
|
65
65
|
name="Image To Video video",
|
|
66
66
|
)
|
|
@@ -119,7 +119,7 @@ class AsyncImageToVideoClient:
|
|
|
119
119
|
assets: Provide the assets for image-to-video.
|
|
120
120
|
end_seconds: The total duration of the output video in seconds.
|
|
121
121
|
height: The height of the input video. This value will help determine the final orientation of the output video. The output video resolution may not match the input.
|
|
122
|
-
style:
|
|
122
|
+
style: Attributed used to dictate the style of the output
|
|
123
123
|
width: The width of the input video. This value will help determine the final orientation of the output video. The output video resolution may not match the input.
|
|
124
124
|
request_options: Additional options to customize the HTTP request
|
|
125
125
|
|
|
@@ -136,7 +136,7 @@ class AsyncImageToVideoClient:
|
|
|
136
136
|
assets={"image_file_path": "api-assets/id/1234.png"},
|
|
137
137
|
end_seconds=5.0,
|
|
138
138
|
height=960,
|
|
139
|
-
style={"prompt": "
|
|
139
|
+
style={"prompt": "a dog running"},
|
|
140
140
|
width=512,
|
|
141
141
|
name="Image To Video video",
|
|
142
142
|
)
|
|
@@ -63,6 +63,7 @@ class LipSyncClient:
|
|
|
63
63
|
client.v1.lip_sync.create(
|
|
64
64
|
assets={
|
|
65
65
|
"audio_file_path": "api-assets/id/1234.mp3",
|
|
66
|
+
"video_file_path": "api-assets/id/1234.mp4",
|
|
66
67
|
"video_source": "file",
|
|
67
68
|
},
|
|
68
69
|
end_seconds=15.0,
|
|
@@ -148,6 +149,7 @@ class AsyncLipSyncClient:
|
|
|
148
149
|
await client.v1.lip_sync.create(
|
|
149
150
|
assets={
|
|
150
151
|
"audio_file_path": "api-assets/id/1234.mp3",
|
|
152
|
+
"video_file_path": "api-assets/id/1234.mp4",
|
|
151
153
|
"video_source": "file",
|
|
152
154
|
},
|
|
153
155
|
end_seconds=15.0,
|
|
@@ -19,7 +19,7 @@ client = Client(token=getenv("API_TOKEN"))
|
|
|
19
19
|
res = client.v1.text_to_video.create(
|
|
20
20
|
end_seconds=5.0,
|
|
21
21
|
orientation="landscape",
|
|
22
|
-
style={"prompt": "
|
|
22
|
+
style={"prompt": "a dog running"},
|
|
23
23
|
name="Text To Video video",
|
|
24
24
|
)
|
|
25
25
|
```
|
|
@@ -34,7 +34,7 @@ client = AsyncClient(token=getenv("API_TOKEN"))
|
|
|
34
34
|
res = await client.v1.text_to_video.create(
|
|
35
35
|
end_seconds=5.0,
|
|
36
36
|
orientation="landscape",
|
|
37
|
-
style={"prompt": "
|
|
37
|
+
style={"prompt": "a dog running"},
|
|
38
38
|
name="Text To Video video",
|
|
39
39
|
)
|
|
40
40
|
```
|
|
@@ -56,7 +56,7 @@ class TextToVideoClient:
|
|
|
56
56
|
client.v1.text_to_video.create(
|
|
57
57
|
end_seconds=5.0,
|
|
58
58
|
orientation="landscape",
|
|
59
|
-
style={"prompt": "
|
|
59
|
+
style={"prompt": "a dog running"},
|
|
60
60
|
name="Text To Video video",
|
|
61
61
|
)
|
|
62
62
|
```
|
|
@@ -124,7 +124,7 @@ class AsyncTextToVideoClient:
|
|
|
124
124
|
await client.v1.text_to_video.create(
|
|
125
125
|
end_seconds=5.0,
|
|
126
126
|
orientation="landscape",
|
|
127
|
-
style={"prompt": "
|
|
127
|
+
style={"prompt": "a dog running"},
|
|
128
128
|
name="Text To Video video",
|
|
129
129
|
)
|
|
130
130
|
```
|
|
@@ -24,7 +24,7 @@ res = client.v1.video_to_video.create(
|
|
|
24
24
|
style={
|
|
25
25
|
"art_style": "3D Render",
|
|
26
26
|
"model": "Absolute Reality",
|
|
27
|
-
"prompt":
|
|
27
|
+
"prompt": "string",
|
|
28
28
|
"prompt_type": "append_default",
|
|
29
29
|
"version": "default",
|
|
30
30
|
},
|
|
@@ -49,7 +49,7 @@ res = await client.v1.video_to_video.create(
|
|
|
49
49
|
style={
|
|
50
50
|
"art_style": "3D Render",
|
|
51
51
|
"model": "Absolute Reality",
|
|
52
|
-
"prompt":
|
|
52
|
+
"prompt": "string",
|
|
53
53
|
"prompt_type": "append_default",
|
|
54
54
|
"version": "default",
|
|
55
55
|
},
|
|
@@ -67,7 +67,10 @@ class VideoToVideoClient:
|
|
|
67
67
|
Examples:
|
|
68
68
|
```py
|
|
69
69
|
client.v1.video_to_video.create(
|
|
70
|
-
assets={
|
|
70
|
+
assets={
|
|
71
|
+
"video_file_path": "api-assets/id/1234.mp4",
|
|
72
|
+
"video_source": "file",
|
|
73
|
+
},
|
|
71
74
|
end_seconds=15.0,
|
|
72
75
|
height=960,
|
|
73
76
|
start_seconds=0.0,
|
|
@@ -162,7 +165,10 @@ class AsyncVideoToVideoClient:
|
|
|
162
165
|
Examples:
|
|
163
166
|
```py
|
|
164
167
|
await client.v1.video_to_video.create(
|
|
165
|
-
assets={
|
|
168
|
+
assets={
|
|
169
|
+
"video_file_path": "api-assets/id/1234.mp4",
|
|
170
|
+
"video_source": "file",
|
|
171
|
+
},
|
|
166
172
|
end_seconds=15.0,
|
|
167
173
|
height=960,
|
|
168
174
|
start_seconds=0.0,
|
|
@@ -4,6 +4,7 @@ from .v1_ai_headshot_generator_create_response import (
|
|
|
4
4
|
)
|
|
5
5
|
from .v1_ai_image_generator_create_response import V1AiImageGeneratorCreateResponse
|
|
6
6
|
from .v1_ai_image_upscaler_create_response import V1AiImageUpscalerCreateResponse
|
|
7
|
+
from .v1_ai_meme_generator_create_response import V1AiMemeGeneratorCreateResponse
|
|
7
8
|
from .v1_ai_photo_editor_create_response import V1AiPhotoEditorCreateResponse
|
|
8
9
|
from .v1_ai_qr_code_generator_create_response import V1AiQrCodeGeneratorCreateResponse
|
|
9
10
|
from .v1_ai_talking_photo_create_response import V1AiTalkingPhotoCreateResponse
|
|
@@ -39,6 +40,7 @@ __all__ = [
|
|
|
39
40
|
"V1AiHeadshotGeneratorCreateResponse",
|
|
40
41
|
"V1AiImageGeneratorCreateResponse",
|
|
41
42
|
"V1AiImageUpscalerCreateResponse",
|
|
43
|
+
"V1AiMemeGeneratorCreateResponse",
|
|
42
44
|
"V1AiPhotoEditorCreateResponse",
|
|
43
45
|
"V1AiQrCodeGeneratorCreateResponse",
|
|
44
46
|
"V1AiTalkingPhotoCreateResponse",
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import pydantic
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class V1AiMemeGeneratorCreateResponse(pydantic.BaseModel):
|
|
5
|
+
"""
|
|
6
|
+
Success
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
model_config = pydantic.ConfigDict(
|
|
10
|
+
arbitrary_types_allowed=True,
|
|
11
|
+
populate_by_name=True,
|
|
12
|
+
)
|
|
13
|
+
|
|
14
|
+
frame_cost: int = pydantic.Field(
|
|
15
|
+
alias="frame_cost",
|
|
16
|
+
)
|
|
17
|
+
"""
|
|
18
|
+
The frame cost of the image generation
|
|
19
|
+
"""
|
|
20
|
+
id: str = pydantic.Field(
|
|
21
|
+
alias="id",
|
|
22
|
+
)
|
|
23
|
+
"""
|
|
24
|
+
Unique ID of the image. This value can be used in the [get image project API](https://docs.magichour.ai/api-reference/image-projects/get-image-details) to fetch additional details such as status
|
|
25
|
+
"""
|
|
@@ -68,15 +68,9 @@ class V1ImageProjectsGetResponse(pydantic.BaseModel):
|
|
|
68
68
|
"""
|
|
69
69
|
The amount of frames used to generate the image.
|
|
70
70
|
"""
|
|
71
|
-
type_:
|
|
72
|
-
"AI_HEADSHOT",
|
|
73
|
-
"AI_IMAGE",
|
|
74
|
-
"BACKGROUND_REMOVER",
|
|
75
|
-
"CLOTHES_CHANGER",
|
|
76
|
-
"FACE_SWAP",
|
|
77
|
-
"IMAGE_UPSCALER",
|
|
78
|
-
"PHOTO_EDITOR",
|
|
79
|
-
"QR_CODE",
|
|
80
|
-
] = pydantic.Field(
|
|
71
|
+
type_: str = pydantic.Field(
|
|
81
72
|
alias="type",
|
|
82
73
|
)
|
|
74
|
+
"""
|
|
75
|
+
The type of the image project. Possible values are AI_HEADSHOT, AI_IMAGE, IMAGE_UPSCALER, FACE_SWAP, PHOTO_EDITOR, QR_CODE, BACKGROUND_REMOVER, CLOTHES_CHANGER, AI_MEME, FACE_EDITOR, PHOTO_COLORIZER
|
|
76
|
+
"""
|
|
@@ -93,18 +93,12 @@ class V1VideoProjectsGetResponse(pydantic.BaseModel):
|
|
|
93
93
|
"""
|
|
94
94
|
The amount of frames used to generate the video. If the status is not 'complete', the cost is an estimate and will be adjusted when the video completes.
|
|
95
95
|
"""
|
|
96
|
-
type_:
|
|
97
|
-
"ANIMATION",
|
|
98
|
-
"AUTO_SUBTITLE",
|
|
99
|
-
"FACE_SWAP",
|
|
100
|
-
"IMAGE_TO_VIDEO",
|
|
101
|
-
"LIP_SYNC",
|
|
102
|
-
"TALKING_PHOTO",
|
|
103
|
-
"TEXT_TO_VIDEO",
|
|
104
|
-
"VIDEO_TO_VIDEO",
|
|
105
|
-
] = pydantic.Field(
|
|
96
|
+
type_: str = pydantic.Field(
|
|
106
97
|
alias="type",
|
|
107
98
|
)
|
|
99
|
+
"""
|
|
100
|
+
The type of the video project. Possible values are ANIMATION, IMAGE_TO_VIDEO, VIDEO_TO_VIDEO, TEXT_TO_VIDEO, FACE_SWAP, LIP_SYNC, AUTO_SUBTITLE, TALKING_PHOTO
|
|
101
|
+
"""
|
|
108
102
|
width: int = pydantic.Field(
|
|
109
103
|
alias="width",
|
|
110
104
|
)
|
|
@@ -38,6 +38,14 @@ from .v1_ai_image_upscaler_create_body_style import (
|
|
|
38
38
|
V1AiImageUpscalerCreateBodyStyle,
|
|
39
39
|
_SerializerV1AiImageUpscalerCreateBodyStyle,
|
|
40
40
|
)
|
|
41
|
+
from .v1_ai_meme_generator_create_body import (
|
|
42
|
+
V1AiMemeGeneratorCreateBody,
|
|
43
|
+
_SerializerV1AiMemeGeneratorCreateBody,
|
|
44
|
+
)
|
|
45
|
+
from .v1_ai_meme_generator_create_body_style import (
|
|
46
|
+
V1AiMemeGeneratorCreateBodyStyle,
|
|
47
|
+
_SerializerV1AiMemeGeneratorCreateBodyStyle,
|
|
48
|
+
)
|
|
41
49
|
from .v1_ai_photo_editor_create_body import (
|
|
42
50
|
V1AiPhotoEditorCreateBody,
|
|
43
51
|
_SerializerV1AiPhotoEditorCreateBody,
|
|
@@ -160,6 +168,8 @@ __all__ = [
|
|
|
160
168
|
"V1AiImageUpscalerCreateBody",
|
|
161
169
|
"V1AiImageUpscalerCreateBodyAssets",
|
|
162
170
|
"V1AiImageUpscalerCreateBodyStyle",
|
|
171
|
+
"V1AiMemeGeneratorCreateBody",
|
|
172
|
+
"V1AiMemeGeneratorCreateBodyStyle",
|
|
163
173
|
"V1AiPhotoEditorCreateBody",
|
|
164
174
|
"V1AiPhotoEditorCreateBodyAssets",
|
|
165
175
|
"V1AiPhotoEditorCreateBodyStyle",
|
|
@@ -198,6 +208,8 @@ __all__ = [
|
|
|
198
208
|
"_SerializerV1AiImageUpscalerCreateBody",
|
|
199
209
|
"_SerializerV1AiImageUpscalerCreateBodyAssets",
|
|
200
210
|
"_SerializerV1AiImageUpscalerCreateBodyStyle",
|
|
211
|
+
"_SerializerV1AiMemeGeneratorCreateBody",
|
|
212
|
+
"_SerializerV1AiMemeGeneratorCreateBodyStyle",
|
|
201
213
|
"_SerializerV1AiPhotoEditorCreateBody",
|
|
202
214
|
"_SerializerV1AiPhotoEditorCreateBodyAssets",
|
|
203
215
|
"_SerializerV1AiPhotoEditorCreateBodyStyle",
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import pydantic
|
|
2
|
+
import typing
|
|
3
|
+
import typing_extensions
|
|
4
|
+
|
|
5
|
+
from .v1_ai_meme_generator_create_body_style import (
|
|
6
|
+
V1AiMemeGeneratorCreateBodyStyle,
|
|
7
|
+
_SerializerV1AiMemeGeneratorCreateBodyStyle,
|
|
8
|
+
)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class V1AiMemeGeneratorCreateBody(typing_extensions.TypedDict):
|
|
12
|
+
"""
|
|
13
|
+
V1AiMemeGeneratorCreateBody
|
|
14
|
+
"""
|
|
15
|
+
|
|
16
|
+
name: typing_extensions.NotRequired[str]
|
|
17
|
+
"""
|
|
18
|
+
The name of the meme.
|
|
19
|
+
"""
|
|
20
|
+
|
|
21
|
+
style: typing_extensions.Required[V1AiMemeGeneratorCreateBodyStyle]
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
class _SerializerV1AiMemeGeneratorCreateBody(pydantic.BaseModel):
|
|
25
|
+
"""
|
|
26
|
+
Serializer for V1AiMemeGeneratorCreateBody handling case conversions
|
|
27
|
+
and file omissions as dictated by the API
|
|
28
|
+
"""
|
|
29
|
+
|
|
30
|
+
model_config = pydantic.ConfigDict(
|
|
31
|
+
populate_by_name=True,
|
|
32
|
+
)
|
|
33
|
+
|
|
34
|
+
name: typing.Optional[str] = pydantic.Field(alias="name", default=None)
|
|
35
|
+
style: _SerializerV1AiMemeGeneratorCreateBodyStyle = pydantic.Field(
|
|
36
|
+
alias="style",
|
|
37
|
+
)
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import pydantic
|
|
2
|
+
import typing
|
|
3
|
+
import typing_extensions
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
class V1AiMemeGeneratorCreateBodyStyle(typing_extensions.TypedDict):
|
|
7
|
+
"""
|
|
8
|
+
V1AiMemeGeneratorCreateBodyStyle
|
|
9
|
+
"""
|
|
10
|
+
|
|
11
|
+
search_web: typing_extensions.NotRequired[bool]
|
|
12
|
+
"""
|
|
13
|
+
Whether to search the web for meme content.
|
|
14
|
+
"""
|
|
15
|
+
|
|
16
|
+
template: typing_extensions.Required[
|
|
17
|
+
typing_extensions.Literal[
|
|
18
|
+
"Bike Fall",
|
|
19
|
+
"Change My Mind",
|
|
20
|
+
"Disappointed Guy",
|
|
21
|
+
"Drake Hotline Bling",
|
|
22
|
+
"Galaxy Brain",
|
|
23
|
+
"Gru's Plan",
|
|
24
|
+
"Is This a Pigeon",
|
|
25
|
+
"Panik Kalm Panik",
|
|
26
|
+
"Random",
|
|
27
|
+
"Side Eyeing Chloe",
|
|
28
|
+
"Tuxedo Winnie The Pooh",
|
|
29
|
+
"Two Buttons",
|
|
30
|
+
"Waiting Skeleton",
|
|
31
|
+
]
|
|
32
|
+
]
|
|
33
|
+
"""
|
|
34
|
+
To use our templates, pass in one of the enum values.
|
|
35
|
+
"""
|
|
36
|
+
|
|
37
|
+
topic: typing_extensions.Required[str]
|
|
38
|
+
"""
|
|
39
|
+
The topic of the meme.
|
|
40
|
+
"""
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
class _SerializerV1AiMemeGeneratorCreateBodyStyle(pydantic.BaseModel):
|
|
44
|
+
"""
|
|
45
|
+
Serializer for V1AiMemeGeneratorCreateBodyStyle handling case conversions
|
|
46
|
+
and file omissions as dictated by the API
|
|
47
|
+
"""
|
|
48
|
+
|
|
49
|
+
model_config = pydantic.ConfigDict(
|
|
50
|
+
populate_by_name=True,
|
|
51
|
+
)
|
|
52
|
+
|
|
53
|
+
search_web: typing.Optional[bool] = pydantic.Field(alias="searchWeb", default=None)
|
|
54
|
+
template: typing_extensions.Literal[
|
|
55
|
+
"Bike Fall",
|
|
56
|
+
"Change My Mind",
|
|
57
|
+
"Disappointed Guy",
|
|
58
|
+
"Drake Hotline Bling",
|
|
59
|
+
"Galaxy Brain",
|
|
60
|
+
"Gru's Plan",
|
|
61
|
+
"Is This a Pigeon",
|
|
62
|
+
"Panik Kalm Panik",
|
|
63
|
+
"Random",
|
|
64
|
+
"Side Eyeing Chloe",
|
|
65
|
+
"Tuxedo Winnie The Pooh",
|
|
66
|
+
"Two Buttons",
|
|
67
|
+
"Waiting Skeleton",
|
|
68
|
+
] = pydantic.Field(
|
|
69
|
+
alias="template",
|
|
70
|
+
)
|
|
71
|
+
topic: str = pydantic.Field(
|
|
72
|
+
alias="topic",
|
|
73
|
+
)
|
|
@@ -38,6 +38,9 @@ class V1ImageToVideoCreateBody(typing_extensions.TypedDict):
|
|
|
38
38
|
"""
|
|
39
39
|
|
|
40
40
|
style: typing_extensions.Required[V1ImageToVideoCreateBodyStyle]
|
|
41
|
+
"""
|
|
42
|
+
Attributed used to dictate the style of the output
|
|
43
|
+
"""
|
|
41
44
|
|
|
42
45
|
width: typing_extensions.Required[int]
|
|
43
46
|
"""
|
|
@@ -5,19 +5,27 @@ import typing_extensions
|
|
|
5
5
|
|
|
6
6
|
class V1ImageToVideoCreateBodyStyle(typing_extensions.TypedDict):
|
|
7
7
|
"""
|
|
8
|
-
|
|
8
|
+
Attributed used to dictate the style of the output
|
|
9
9
|
"""
|
|
10
10
|
|
|
11
11
|
high_quality: typing_extensions.NotRequired[bool]
|
|
12
12
|
"""
|
|
13
|
-
|
|
13
|
+
Deprecated: Please use `quality_mode` instead. For backward compatibility, setting `high_quality: true` and `quality_mode: quick` will map to `quality_mode: studio`. Note: `quality_mode: studio` offers the same quality as `high_quality: true`.
|
|
14
14
|
"""
|
|
15
15
|
|
|
16
|
-
prompt: typing_extensions.
|
|
16
|
+
prompt: typing_extensions.NotRequired[str]
|
|
17
17
|
"""
|
|
18
18
|
The prompt used for the video.
|
|
19
19
|
"""
|
|
20
20
|
|
|
21
|
+
quality_mode: typing_extensions.NotRequired[
|
|
22
|
+
typing_extensions.Literal["quick", "studio"]
|
|
23
|
+
]
|
|
24
|
+
"""
|
|
25
|
+
* `quick` - Fastest option for rapid results. Takes ~3 minutes per 5s of video.
|
|
26
|
+
* `studio` - Polished visuals with longer runtime. Takes ~8.5 minutes per 5s of video.
|
|
27
|
+
"""
|
|
28
|
+
|
|
21
29
|
|
|
22
30
|
class _SerializerV1ImageToVideoCreateBodyStyle(pydantic.BaseModel):
|
|
23
31
|
"""
|
|
@@ -32,6 +40,7 @@ class _SerializerV1ImageToVideoCreateBodyStyle(pydantic.BaseModel):
|
|
|
32
40
|
high_quality: typing.Optional[bool] = pydantic.Field(
|
|
33
41
|
alias="high_quality", default=None
|
|
34
42
|
)
|
|
35
|
-
prompt: typing.Optional[str] = pydantic.Field(
|
|
36
|
-
|
|
43
|
+
prompt: typing.Optional[str] = pydantic.Field(alias="prompt", default=None)
|
|
44
|
+
quality_mode: typing.Optional[typing_extensions.Literal["quick", "studio"]] = (
|
|
45
|
+
pydantic.Field(alias="quality_mode", default=None)
|
|
37
46
|
)
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import pydantic
|
|
2
|
+
import typing
|
|
2
3
|
import typing_extensions
|
|
3
4
|
|
|
4
5
|
|
|
@@ -12,6 +13,14 @@ class V1TextToVideoCreateBodyStyle(typing_extensions.TypedDict):
|
|
|
12
13
|
The prompt used for the video.
|
|
13
14
|
"""
|
|
14
15
|
|
|
16
|
+
quality_mode: typing_extensions.NotRequired[
|
|
17
|
+
typing_extensions.Literal["quick", "studio"]
|
|
18
|
+
]
|
|
19
|
+
"""
|
|
20
|
+
* `quick` - Fastest option for rapid results. Takes ~3 minutes per 5s of video.
|
|
21
|
+
* `studio` - Polished visuals with longer runtime. Takes ~8.5 minutes per 5s of video.
|
|
22
|
+
"""
|
|
23
|
+
|
|
15
24
|
|
|
16
25
|
class _SerializerV1TextToVideoCreateBodyStyle(pydantic.BaseModel):
|
|
17
26
|
"""
|
|
@@ -26,3 +35,6 @@ class _SerializerV1TextToVideoCreateBodyStyle(pydantic.BaseModel):
|
|
|
26
35
|
prompt: str = pydantic.Field(
|
|
27
36
|
alias="prompt",
|
|
28
37
|
)
|
|
38
|
+
quality_mode: typing.Optional[typing_extensions.Literal["quick", "studio"]] = (
|
|
39
|
+
pydantic.Field(alias="quality_mode", default=None)
|
|
40
|
+
)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: magic_hour
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.14.0
|
|
4
4
|
Summary: Python SDK for Magic Hour API
|
|
5
5
|
Requires-Python: >=3.8,<4.0
|
|
6
6
|
Classifier: Programming Language :: Python :: 3
|
|
@@ -75,6 +75,10 @@ client = AsyncClient(token="my api key")
|
|
|
75
75
|
|
|
76
76
|
* [create](magic_hour/resources/v1/ai_image_upscaler/README.md#create) - AI Image Upscaler
|
|
77
77
|
|
|
78
|
+
### [v1.ai_meme_generator](magic_hour/resources/v1/ai_meme_generator/README.md)
|
|
79
|
+
|
|
80
|
+
* [create](magic_hour/resources/v1/ai_meme_generator/README.md#create) - AI Meme Generator
|
|
81
|
+
|
|
78
82
|
### [v1.ai_photo_editor](magic_hour/resources/v1/ai_photo_editor/README.md)
|
|
79
83
|
|
|
80
84
|
* [create](magic_hour/resources/v1/ai_photo_editor/README.md#create) - AI Photo Editor
|
|
@@ -10,7 +10,7 @@ magic_hour/core/request.py,sha256=lyHrh2VWY238D7JPbgZJlodTqBlHSmQn4fBJiBfE1Es,50
|
|
|
10
10
|
magic_hour/core/response.py,sha256=Sl7nPL2axmz7em_6d9TkFSnQQKUpalWaVWbPPWoXJgM,10180
|
|
11
11
|
magic_hour/core/type_utils.py,sha256=4bU9WXnMXJ6YTtuqOMiB8t6Xw0RlfVWJ-IDBONlqEtQ,461
|
|
12
12
|
magic_hour/core/utils.py,sha256=34SiC1vw2A0TkYHONgMA_d09soIIYiiBWRXCZGdwGIk,1669
|
|
13
|
-
magic_hour/environment.py,sha256=
|
|
13
|
+
magic_hour/environment.py,sha256=f6sXlVm-SfxzdDLBMF2uFwouyMuLK7wm329NvbtRwRA,213
|
|
14
14
|
magic_hour/resources/v1/__init__.py,sha256=Aj0sjVcoijjQyieNBxv2_uewPYC2vO2UG-ehoBgCz5E,86
|
|
15
15
|
magic_hour/resources/v1/ai_clothes_changer/README.md,sha256=KQTvbttct5GcdOJW3NG5gCsWF6G2qlwIoBjBd92TjUs,977
|
|
16
16
|
magic_hour/resources/v1/ai_clothes_changer/__init__.py,sha256=6W_Y2HxG2sDOBiJyzngK3Q2S3xfQgpK-j8xFRmBAhbQ,142
|
|
@@ -24,9 +24,12 @@ magic_hour/resources/v1/ai_image_generator/client.py,sha256=QKTbP9uyU0aCis70eKUR
|
|
|
24
24
|
magic_hour/resources/v1/ai_image_upscaler/README.md,sha256=MNmxGtfnow27ukASpD5GC_JTMg5c9WF6VvCZktteQI4,877
|
|
25
25
|
magic_hour/resources/v1/ai_image_upscaler/__init__.py,sha256=9b1-2XfnAVa4qE3S-4WL8vN3wuqLkUuHKjdl_km8hUc,138
|
|
26
26
|
magic_hour/resources/v1/ai_image_upscaler/client.py,sha256=h06UydWxHm2axdCK7fnENB3qSveBPO9lfWrB9j-20XI,4531
|
|
27
|
+
magic_hour/resources/v1/ai_meme_generator/README.md,sha256=apoW6OAAuK6DJh43ZZt1SwGsjawkVl-IQTiqqMNrDOA,864
|
|
28
|
+
magic_hour/resources/v1/ai_meme_generator/__init__.py,sha256=x4vtin1KKvoA-va7vhaQ91c__M2z3PmDySLX7yJpRDA,138
|
|
29
|
+
magic_hour/resources/v1/ai_meme_generator/client.py,sha256=koIrShmzJ5duMoNFe28gli9temiSReKTDv24s2CcB9g,3831
|
|
27
30
|
magic_hour/resources/v1/ai_photo_editor/README.md,sha256=H5mahQ4cU15c_ISYSxIwBCx4pROxUtaOSseZCq2ZcF4,1434
|
|
28
31
|
magic_hour/resources/v1/ai_photo_editor/__init__.py,sha256=RPG6WaL2KN_DmgrtxImA_jNnEDMm-Ku2o2m2EnNwxts,130
|
|
29
|
-
magic_hour/resources/v1/ai_photo_editor/client.py,sha256=
|
|
32
|
+
magic_hour/resources/v1/ai_photo_editor/client.py,sha256=oNXR7XhA_pzUpUJ6n0aDJ3mWo8mIyqL-kXFv8GBGCZ0,6233
|
|
30
33
|
magic_hour/resources/v1/ai_qr_code_generator/README.md,sha256=w6IE0mm_D-PnW-bDsIu9k8oPePekZ2TuW3gOFhi95_w,734
|
|
31
34
|
magic_hour/resources/v1/ai_qr_code_generator/__init__.py,sha256=HnSTg7tB8M5LibZoCDRdE5Q71efmiqZIkNEve5SO1Mg,146
|
|
32
35
|
magic_hour/resources/v1/ai_qr_code_generator/client.py,sha256=jeqU-1cDWHTpYrfeEq-ABIQqC-jO2elusrfo69Q6pDI,3849
|
|
@@ -35,11 +38,11 @@ magic_hour/resources/v1/ai_talking_photo/__init__.py,sha256=ZTDD_IRBoR7GSdGWCVEK
|
|
|
35
38
|
magic_hour/resources/v1/ai_talking_photo/client.py,sha256=TQNwMP3DhDj5jb51diMxcONDbdMPsIe_GSnNahZg8AM,4623
|
|
36
39
|
magic_hour/resources/v1/animation/README.md,sha256=uIVfUwD7iAOe2eJDgrxj4UyYmq9R30fdI3Z0JuEChc4,1477
|
|
37
40
|
magic_hour/resources/v1/animation/__init__.py,sha256=M6KUe6TEZl_DAdyn1HFQ2kHYanZo6xy3mvUdCN264hQ,114
|
|
38
|
-
magic_hour/resources/v1/animation/client.py,sha256=
|
|
39
|
-
magic_hour/resources/v1/client.py,sha256=
|
|
41
|
+
magic_hour/resources/v1/animation/client.py,sha256=YYjggl_hszTW-Sn9SFs3m7bz7PvtRTruhHSSnrkkD9c,6401
|
|
42
|
+
magic_hour/resources/v1/client.py,sha256=ml5WQYIOi5GMw6fAa1e1JXJaRoA19U5ZYBcPoERILGM,5782
|
|
40
43
|
magic_hour/resources/v1/face_swap/README.md,sha256=7b6OeNBhMHJkxaQ7NFEuGUtgDUHOkpasXlU05KE5jkQ,1306
|
|
41
44
|
magic_hour/resources/v1/face_swap/__init__.py,sha256=lyg5uAHyYHEUVAiAZtP3zwjGCEGqq8IWbQKexVdhr00,110
|
|
42
|
-
magic_hour/resources/v1/face_swap/client.py,sha256=
|
|
45
|
+
magic_hour/resources/v1/face_swap/client.py,sha256=yhBmF1CrYZQfd4W_oerU96W7z-2oza_D83aqliEOsxY,6383
|
|
43
46
|
magic_hour/resources/v1/face_swap_photo/README.md,sha256=9iGINuGkWn60ZaZgZ4xz0Iho0lvfE-e_YVEA2vId6QU,964
|
|
44
47
|
magic_hour/resources/v1/face_swap_photo/__init__.py,sha256=NZEplYX5kDPL_0qY0Q5tuxhDevipN0otByTYKMmF_1k,130
|
|
45
48
|
magic_hour/resources/v1/face_swap_photo/client.py,sha256=wRkC3o5fJoATrCYvnlw4PfVoSXU_fPDyKtzBozn01Rk,4027
|
|
@@ -54,26 +57,27 @@ magic_hour/resources/v1/image_background_remover/client.py,sha256=xhinD3VIPOFamp
|
|
|
54
57
|
magic_hour/resources/v1/image_projects/README.md,sha256=-mcL1vJbk9PI3bT1VAmq7XWl7hruM73PbCURdndz-f4,1589
|
|
55
58
|
magic_hour/resources/v1/image_projects/__init__.py,sha256=oBlV4e5IVYe8SclhoEy2VOYB53kKP2DORXwcztAwU3E,130
|
|
56
59
|
magic_hour/resources/v1/image_projects/client.py,sha256=FbqvgvoLFcAjBtqgGtQZMNT8jG5f2bJH7Poxod446sw,5527
|
|
57
|
-
magic_hour/resources/v1/image_to_video/README.md,sha256=
|
|
60
|
+
magic_hour/resources/v1/image_to_video/README.md,sha256=RHo1mqVzymPELMVroYrJN_F4VGzuWuTSufa94iKWcFw,1180
|
|
58
61
|
magic_hour/resources/v1/image_to_video/__init__.py,sha256=tY_ABo6evwKQBRSq-M84lNX-pXqmxoozukmrO6NhCgA,126
|
|
59
|
-
magic_hour/resources/v1/image_to_video/client.py,sha256=
|
|
62
|
+
magic_hour/resources/v1/image_to_video/client.py,sha256=m512tJStl0prro97wyIetZ9jWqbVxI83HslnbBBu6Vs,6043
|
|
60
63
|
magic_hour/resources/v1/lip_sync/README.md,sha256=uNZzAXARbUTmq9CcM3uYFhtfpJbM6xICqxkE6woL0BU,1350
|
|
61
64
|
magic_hour/resources/v1/lip_sync/__init__.py,sha256=MlKUAoHNSKcuNzVyqNfLnLtD_PsqEn3l1TtVpPC1JqQ,106
|
|
62
|
-
magic_hour/resources/v1/lip_sync/client.py,sha256=
|
|
63
|
-
magic_hour/resources/v1/text_to_video/README.md,sha256=
|
|
65
|
+
magic_hour/resources/v1/lip_sync/client.py,sha256=jVP-RrJSKJSdhLp-FZLnMWWhmxdA45upCzPfiSUV6ao,7339
|
|
66
|
+
magic_hour/resources/v1/text_to_video/README.md,sha256=ecMH9s8N7DrIL_DkDvrCElbvRGnNxNMvSoX8uHMxyP4,1052
|
|
64
67
|
magic_hour/resources/v1/text_to_video/__init__.py,sha256=F18iHSi9tuYSdgpatznBzb7lbSySNpK-82w96-Om_k4,122
|
|
65
|
-
magic_hour/resources/v1/text_to_video/client.py,sha256=
|
|
68
|
+
magic_hour/resources/v1/text_to_video/client.py,sha256=HFFj6a9VaYEzEsa--5lI8HhsS9az-mpDtpIgjV_Nf6M,5028
|
|
66
69
|
magic_hour/resources/v1/video_projects/README.md,sha256=8z3EpBwXMR1nZL-ba34DAkoCfRZ0S2CyMaYCwLBYCEo,1589
|
|
67
70
|
magic_hour/resources/v1/video_projects/__init__.py,sha256=1aj_tE-GAf8BuQ76RQvjGVn8Y39CjdAJDlcsCPucX0w,130
|
|
68
71
|
magic_hour/resources/v1/video_projects/client.py,sha256=JvhYhf3phYkdVj8VpWxvxF8qWBRU-WaZYi-8lhVgpSQ,5511
|
|
69
|
-
magic_hour/resources/v1/video_to_video/README.md,sha256=
|
|
72
|
+
magic_hour/resources/v1/video_to_video/README.md,sha256=yOIRj1EPTVl8rl15SPWhpc2PZi1ddKGMix8WbaxlXzQ,1630
|
|
70
73
|
magic_hour/resources/v1/video_to_video/__init__.py,sha256=1SHaRLlsrlBkdxxKBYgdbHrGATlRvqlXc22RpjjHaOA,126
|
|
71
|
-
magic_hour/resources/v1/video_to_video/client.py,sha256=
|
|
72
|
-
magic_hour/types/models/__init__.py,sha256=
|
|
74
|
+
magic_hour/resources/v1/video_to_video/client.py,sha256=dYb2zi8MMhm1YUBFxGhFno4ikbMEjcLrs3JofapyP-s,8368
|
|
75
|
+
magic_hour/types/models/__init__.py,sha256=7LI5u95pRS5knhfmPXR-zl4Y2ZWAvL29uH30_SeRDac,3076
|
|
73
76
|
magic_hour/types/models/v1_ai_clothes_changer_create_response.py,sha256=gpPZLGvSukhBSK2LzTckn4HFcNDseP_XtfwasxzE2uc,625
|
|
74
77
|
magic_hour/types/models/v1_ai_headshot_generator_create_response.py,sha256=s4OheUpwh5jW1XAP4x_M7j-Xafq_gq9Lbz3NbUsFhs8,628
|
|
75
78
|
magic_hour/types/models/v1_ai_image_generator_create_response.py,sha256=gqRQUTb1dznt9trj5i4vIc2GcPac910ti7EXzz49btc,625
|
|
76
79
|
magic_hour/types/models/v1_ai_image_upscaler_create_response.py,sha256=u5z8WHJA7iT3u3EsTcDuAzwJ9JL9wMi0K93JhahjpGk,624
|
|
80
|
+
magic_hour/types/models/v1_ai_meme_generator_create_response.py,sha256=l71aVk0golbDVn3UjIML0NqGWYiBTPDVQkzKsQ2k7Uc,624
|
|
77
81
|
magic_hour/types/models/v1_ai_photo_editor_create_response.py,sha256=6a72cPZeaMUxIwbViir682fOBYDpy-REcIQOQHv_Yd8,622
|
|
78
82
|
magic_hour/types/models/v1_ai_qr_code_generator_create_response.py,sha256=N38DZ71d3w2DumFlsj48D8ItRxb_AybRL1znBR-X7tM,626
|
|
79
83
|
magic_hour/types/models/v1_ai_talking_photo_create_response.py,sha256=2R3_2-1KkDZCMOcm4pMM0RxUFb0Qqoch_-wkcXzZO0Q,738
|
|
@@ -83,18 +87,18 @@ magic_hour/types/models/v1_face_swap_photo_create_response.py,sha256=d68oxwceXya
|
|
|
83
87
|
magic_hour/types/models/v1_files_upload_urls_create_response.py,sha256=ecdnxoo-ZBTa2kAusHq4nyz6RdugzyN7w4oazJt5ri0,460
|
|
84
88
|
magic_hour/types/models/v1_files_upload_urls_create_response_items_item.py,sha256=AjW1Myj-dB10IdM3zTMEsXouY3tnx8vdN5CW3HLQX_M,799
|
|
85
89
|
magic_hour/types/models/v1_image_background_remover_create_response.py,sha256=jK_RVF3V0VSZn70FzsEjCrA_SEbpvcDdxy1RSlvsygw,631
|
|
86
|
-
magic_hour/types/models/v1_image_projects_get_response.py,sha256=
|
|
90
|
+
magic_hour/types/models/v1_image_projects_get_response.py,sha256=FEt7O6Z_C2pDzFnjkBciC2Cq6A9OfRsq-u8db4JTEqY,2141
|
|
87
91
|
magic_hour/types/models/v1_image_projects_get_response_downloads_item.py,sha256=kC0UhiMug52kxN6Ib1H_u_JQGUbeRc91gjuVaXYaM-c,410
|
|
88
92
|
magic_hour/types/models/v1_image_projects_get_response_error.py,sha256=R1qg-aIt63h6Q7bQ4AvgeC0lbUg5u35rwFXFvU_gvZs,568
|
|
89
93
|
magic_hour/types/models/v1_image_to_video_create_response.py,sha256=9I3MptKUR2gdQW6SbGSZr5Usdte9PRSniq-pjwJySk4,736
|
|
90
94
|
magic_hour/types/models/v1_lip_sync_create_response.py,sha256=YtxDlPf9LdW8awpxoahwrleIeqOsrbpHQFQE0DgOKUg,731
|
|
91
95
|
magic_hour/types/models/v1_text_to_video_create_response.py,sha256=B7Lx3XNbqZIVA5SESc_g-ShktN9uC-bGtdgeXKKCww0,735
|
|
92
|
-
magic_hour/types/models/v1_video_projects_get_response.py,sha256=
|
|
96
|
+
magic_hour/types/models/v1_video_projects_get_response.py,sha256=4uoH6xRhI_G2b9zl1NR4gairyU0EDBQhDW8rraY8es4,3252
|
|
93
97
|
magic_hour/types/models/v1_video_projects_get_response_download.py,sha256=nudDCN30TsVk9UE_uXMtTT0JHIAGlWgjDeHpkZ0vIfU,450
|
|
94
98
|
magic_hour/types/models/v1_video_projects_get_response_downloads_item.py,sha256=DlUuLBSGa7jWoozxferkaOsGc4jASItcjjWbBXGu620,410
|
|
95
99
|
magic_hour/types/models/v1_video_projects_get_response_error.py,sha256=49QxnXAmYHcvSWuuhbQZeGlUfqVcO4YwZ414GczQnvA,568
|
|
96
100
|
magic_hour/types/models/v1_video_to_video_create_response.py,sha256=dRQql5qEQvcF0wbGO8M0yabgMef26w5T3JGtgnqLZ-Y,736
|
|
97
|
-
magic_hour/types/params/__init__.py,sha256=
|
|
101
|
+
magic_hour/types/params/__init__.py,sha256=MK23bdbkHemaWLPy2Cbkip5Wu7olb9tH0WoyfetdiVA,8734
|
|
98
102
|
magic_hour/types/params/v1_ai_clothes_changer_create_body.py,sha256=X5koqrTxYLiKcRMqPF7r-VwQzy4r_7k81o1289zHJvo,1006
|
|
99
103
|
magic_hour/types/params/v1_ai_clothes_changer_create_body_assets.py,sha256=GGnXOExxXtnHT9wQpDCEkLHQlQB5MbAbYuU47iHGf70,1509
|
|
100
104
|
magic_hour/types/params/v1_ai_headshot_generator_create_body.py,sha256=Ydzqxzfo6mMEIUc8R_PTWJujfnTDdzt7Ze4ZYiWxWJM,1405
|
|
@@ -105,6 +109,8 @@ magic_hour/types/params/v1_ai_image_generator_create_body_style.py,sha256=IJ5utg
|
|
|
105
109
|
magic_hour/types/params/v1_ai_image_upscaler_create_body.py,sha256=aoD7r6Vkho__ZvzXlhr8neNdxETISr6B9hRRjFQnXxs,1511
|
|
106
110
|
magic_hour/types/params/v1_ai_image_upscaler_create_body_assets.py,sha256=M1RgIPdfvTz4Eu7fLi-47hXTaTTFelEKoEHuVoA3M8M,827
|
|
107
111
|
magic_hour/types/params/v1_ai_image_upscaler_create_body_style.py,sha256=XRNxQslCeMQ9RD6gV-bqOGB62tVE-u_mlBYmBzgPRyA,993
|
|
112
|
+
magic_hour/types/params/v1_ai_meme_generator_create_body.py,sha256=aYbnLZcqeIL4vPKkH6CePFTmCyVcnoQxl-n9dEu9Yds,934
|
|
113
|
+
magic_hour/types/params/v1_ai_meme_generator_create_body_style.py,sha256=olHEhM1LlYDjqcRYXglayUfxklnVBThCv86QP9s28no,1822
|
|
108
114
|
magic_hour/types/params/v1_ai_photo_editor_create_body.py,sha256=KrlvaPla47WKbH79y_NWruDNEcF4Xl4l3_zw7MqrkF0,1940
|
|
109
115
|
magic_hour/types/params/v1_ai_photo_editor_create_body_assets.py,sha256=xoDh4VwV-VapU8zUYV6Xnq5LDeE7z-OxNmsmlMlfre0,841
|
|
110
116
|
magic_hour/types/params/v1_ai_photo_editor_create_body_style.py,sha256=VPBkdZRjQ7rAFLBcwWt7I-sWmD_oApCa0gyMM0P2-DQ,2073
|
|
@@ -123,17 +129,17 @@ magic_hour/types/params/v1_files_upload_urls_create_body.py,sha256=X6-ZcUqVVTM3w
|
|
|
123
129
|
magic_hour/types/params/v1_files_upload_urls_create_body_items_item.py,sha256=I26O2Jx5_uhsCOrQCL_-wPeenu0rzhNwCDy0AEI6YuQ,962
|
|
124
130
|
magic_hour/types/params/v1_image_background_remover_create_body.py,sha256=l3sb8UTXjie3gMd4ZJhHik-N1o3zaVzsZ7xDaS_uTG4,1063
|
|
125
131
|
magic_hour/types/params/v1_image_background_remover_create_body_assets.py,sha256=aw9P_bdBTi8YMvgJxH8G0adwn1YswQzvtc0LgNAPQ8s,873
|
|
126
|
-
magic_hour/types/params/v1_image_to_video_create_body.py,sha256=
|
|
132
|
+
magic_hour/types/params/v1_image_to_video_create_body.py,sha256=jU1k75k6Q30RC1Hf41h2_e2fhQbSydiCKhF_ESTTZKc,2113
|
|
127
133
|
magic_hour/types/params/v1_image_to_video_create_body_assets.py,sha256=J39Jv5Bv9bjMaskHzMfbO5VE6QWh-saN3eWOUPRtuRk,830
|
|
128
|
-
magic_hour/types/params/v1_image_to_video_create_body_style.py,sha256=
|
|
134
|
+
magic_hour/types/params/v1_image_to_video_create_body_style.py,sha256=Q7KKr3i0ed7pj2HtwYW0dHQgY-Jjh9xTxUKxGYcBnU0,1535
|
|
129
135
|
magic_hour/types/params/v1_lip_sync_create_body.py,sha256=U5mk_4Oy_e3NyfQIt-Av_FDvt4EYed10hvZZ6tMcEP4,2448
|
|
130
136
|
magic_hour/types/params/v1_lip_sync_create_body_assets.py,sha256=UypixyrVpyyv2nysMgXFj1iyvALCE0D4WRy1D3XEWuI,1883
|
|
131
137
|
magic_hour/types/params/v1_text_to_video_create_body.py,sha256=ax7CQZQ7keVjOWIsYFTQ9lb_PhhwvfMBXzHWX4x1nB8,1436
|
|
132
|
-
magic_hour/types/params/v1_text_to_video_create_body_style.py,sha256=
|
|
138
|
+
magic_hour/types/params/v1_text_to_video_create_body_style.py,sha256=9NTboy7J4efsA8tVub2uOZpmgriiggfOyf5uAodBN3o,1065
|
|
133
139
|
magic_hour/types/params/v1_video_to_video_create_body.py,sha256=iOb3qGXySlI4unyWPAXDmiLMUSHH6ymuDHeiwpmhKeE,2942
|
|
134
140
|
magic_hour/types/params/v1_video_to_video_create_body_assets.py,sha256=_-6iA5d8ndka6iJWyWvlJwzRkQcmurJE6hkg-fDwBmQ,1531
|
|
135
141
|
magic_hour/types/params/v1_video_to_video_create_body_style.py,sha256=2jgpJ3A8LNXksTPQ5pp1tWXtd753zBuhBjA22qqCsTE,5697
|
|
136
|
-
magic_hour-0.
|
|
137
|
-
magic_hour-0.
|
|
138
|
-
magic_hour-0.
|
|
139
|
-
magic_hour-0.
|
|
142
|
+
magic_hour-0.14.0.dist-info/LICENSE,sha256=F3fxj7JXPgB2K0uj8YXRsVss4u-Dgt_-U3V4VXsivNI,1070
|
|
143
|
+
magic_hour-0.14.0.dist-info/METADATA,sha256=eLoBI-qD410IkJndKZydTo7CTO141nMZmvS7_NabfVg,4997
|
|
144
|
+
magic_hour-0.14.0.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
|
|
145
|
+
magic_hour-0.14.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|