magic_hour 0.30.0__py3-none-any.whl → 0.31.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 CHANGED
@@ -6,7 +6,7 @@ class Environment(enum.Enum):
6
6
  """Pre-defined base URLs for the API"""
7
7
 
8
8
  ENVIRONMENT = "https://api.magichour.ai"
9
- MOCK_SERVER = "https://api.sideko.dev/v1/mock/magichour/magic-hour/0.30.0"
9
+ MOCK_SERVER = "https://api.sideko.dev/v1/mock/magichour/magic-hour/0.31.0"
10
10
 
11
11
 
12
12
  def _get_base_url(
@@ -44,6 +44,7 @@ class FaceDetectionClient:
44
44
  return self._base_client.request(
45
45
  method="GET",
46
46
  path=f"/v1/face-detection/{id}",
47
+ auth_names=["bearerAuth"],
47
48
  cast_to=models.V1FaceDetectionGetResponse,
48
49
  request_options=request_options or default_request_options(),
49
50
  )
@@ -134,6 +135,7 @@ class AsyncFaceDetectionClient:
134
135
  return await self._base_client.request(
135
136
  method="GET",
136
137
  path=f"/v1/face-detection/{id}",
138
+ auth_names=["bearerAuth"],
137
139
  cast_to=models.V1FaceDetectionGetResponse,
138
140
  request_options=request_options or default_request_options(),
139
141
  )
@@ -3,7 +3,7 @@
3
3
 
4
4
  Create a Face Swap video. The estimated frame cost is calculated using 30 FPS. This amount is deducted from your account balance when a video is queued. Once the video is complete, the cost will be updated based on the actual number of frames rendered.
5
5
 
6
- Get more information about this mode at our [product page](/products/face-swap).
6
+ Get more information about this mode at our [product page](https://magichour.ai/products/face-swap).
7
7
 
8
8
 
9
9
  **API Endpoint**: `POST /v1/face-swap`
@@ -12,7 +12,7 @@ Get more information about this mode at our [product page](/products/face-swap).
12
12
 
13
13
  | Parameter | Required | Description | Example |
14
14
  |-----------|:--------:|-------------|--------|
15
- | `assets` | ✓ | Provide the assets for face swap. For video, The `video_source` field determines whether `video_file_path` or `youtube_url` field is used | `{"image_file_path": "image/id/1234.png", "video_file_path": "api-assets/id/1234.mp4", "video_source": "file"}` |
15
+ | `assets` | ✓ | Provide the assets for face swap. For video, The `video_source` field determines whether `video_file_path` or `youtube_url` field is used | `{"face_mappings": [{"new_face": "api-assets/id/1234.png", "original_face": "api-assets/id/0-0.png"}], "face_swap_mode": "all-faces", "image_file_path": "image/id/1234.png", "video_file_path": "api-assets/id/1234.mp4", "video_source": "file"}` |
16
16
  | `end_seconds` | ✓ | The end time of the input video in seconds | `15.0` |
17
17
  | `start_seconds` | ✓ | The start time of the input video in seconds | `0.0` |
18
18
  | `height` | ✗ | Used to determine the dimensions of the output video. * If height is provided, width will also be required. The larger value between width and height will be used to determine the maximum output resolution while maintaining the original aspect ratio. * If both height and width are omitted, the video will be resized according to your subscription's maximum resolution, while preserving aspect ratio. Note: if the video's original resolution is less than the maximum, the video will not be resized. See our [pricing page](https://magichour.ai/pricing) for more details. | `960` |
@@ -28,6 +28,13 @@ from os import getenv
28
28
  client = Client(token=getenv("API_TOKEN"))
29
29
  res = client.v1.face_swap.create(
30
30
  assets={
31
+ "face_mappings": [
32
+ {
33
+ "new_face": "api-assets/id/1234.png",
34
+ "original_face": "api-assets/id/0-0.png",
35
+ }
36
+ ],
37
+ "face_swap_mode": "all-faces",
31
38
  "image_file_path": "image/id/1234.png",
32
39
  "video_file_path": "api-assets/id/1234.mp4",
33
40
  "video_source": "file",
@@ -50,6 +57,13 @@ from os import getenv
50
57
  client = AsyncClient(token=getenv("API_TOKEN"))
51
58
  res = await client.v1.face_swap.create(
52
59
  assets={
60
+ "face_mappings": [
61
+ {
62
+ "new_face": "api-assets/id/1234.png",
63
+ "original_face": "api-assets/id/0-0.png",
64
+ }
65
+ ],
66
+ "face_swap_mode": "all-faces",
53
67
  "image_file_path": "image/id/1234.png",
54
68
  "video_file_path": "api-assets/id/1234.mp4",
55
69
  "video_source": "file",
@@ -37,7 +37,7 @@ class FaceSwapClient:
37
37
 
38
38
  Create a Face Swap video. The estimated frame cost is calculated using 30 FPS. This amount is deducted from your account balance when a video is queued. Once the video is complete, the cost will be updated based on the actual number of frames rendered.
39
39
 
40
- Get more information about this mode at our [product page](/products/face-swap).
40
+ Get more information about this mode at our [product page](https://magichour.ai/products/face-swap).
41
41
 
42
42
 
43
43
  POST /v1/face-swap
@@ -76,6 +76,13 @@ class FaceSwapClient:
76
76
  ```py
77
77
  client.v1.face_swap.create(
78
78
  assets={
79
+ "face_mappings": [
80
+ {
81
+ "new_face": "api-assets/id/1234.png",
82
+ "original_face": "api-assets/id/0-0.png",
83
+ }
84
+ ],
85
+ "face_swap_mode": "all-faces",
79
86
  "image_file_path": "image/id/1234.png",
80
87
  "video_file_path": "api-assets/id/1234.mp4",
81
88
  "video_source": "file",
@@ -135,7 +142,7 @@ class AsyncFaceSwapClient:
135
142
 
136
143
  Create a Face Swap video. The estimated frame cost is calculated using 30 FPS. This amount is deducted from your account balance when a video is queued. Once the video is complete, the cost will be updated based on the actual number of frames rendered.
137
144
 
138
- Get more information about this mode at our [product page](/products/face-swap).
145
+ Get more information about this mode at our [product page](https://magichour.ai/products/face-swap).
139
146
 
140
147
 
141
148
  POST /v1/face-swap
@@ -174,6 +181,13 @@ class AsyncFaceSwapClient:
174
181
  ```py
175
182
  await client.v1.face_swap.create(
176
183
  assets={
184
+ "face_mappings": [
185
+ {
186
+ "new_face": "api-assets/id/1234.png",
187
+ "original_face": "api-assets/id/0-0.png",
188
+ }
189
+ ],
190
+ "face_swap_mode": "all-faces",
177
191
  "image_file_path": "image/id/1234.png",
178
192
  "video_file_path": "api-assets/id/1234.mp4",
179
193
  "video_source": "file",
@@ -1,7 +1,7 @@
1
1
 
2
2
  ### Face Swap Photo <a name="create"></a>
3
3
 
4
- Create a face swap photo. Each photo costs 5 credits. The height/width of the output image depends on your subscription. Please refer to our [pricing](/pricing) page for more details
4
+ Create a face swap photo. Each photo costs 5 credits. The height/width of the output image depends on your subscription. Please refer to our [pricing](https://magichour.ai/pricing) page for more details
5
5
 
6
6
  **API Endpoint**: `POST /v1/face-swap-photo`
7
7
 
@@ -27,7 +27,7 @@ class FaceSwapPhotoClient:
27
27
  """
28
28
  Face Swap Photo
29
29
 
30
- Create a face swap photo. Each photo costs 5 credits. The height/width of the output image depends on your subscription. Please refer to our [pricing](/pricing) page for more details
30
+ Create a face swap photo. Each photo costs 5 credits. The height/width of the output image depends on your subscription. Please refer to our [pricing](https://magichour.ai/pricing) page for more details
31
31
 
32
32
  POST /v1/face-swap-photo
33
33
 
@@ -91,7 +91,7 @@ class AsyncFaceSwapPhotoClient:
91
91
  """
92
92
  Face Swap Photo
93
93
 
94
- Create a face swap photo. Each photo costs 5 credits. The height/width of the output image depends on your subscription. Please refer to our [pricing](/pricing) page for more details
94
+ Create a face swap photo. Each photo costs 5 credits. The height/width of the output image depends on your subscription. Please refer to our [pricing](https://magichour.ai/pricing) page for more details
95
95
 
96
96
  POST /v1/face-swap-photo
97
97
 
@@ -3,7 +3,7 @@
3
3
 
4
4
  Create a Image To Video video. The estimated frame cost is calculated using 30 FPS. This amount is deducted from your account balance when a video is queued. Once the video is complete, the cost will be updated based on the actual number of frames rendered.
5
5
 
6
- Get more information about this mode at our [product page](/products/image-to-video).
6
+ Get more information about this mode at our [product page](https://magichour.ai/products/image-to-video).
7
7
 
8
8
 
9
9
  **API Endpoint**: `POST /v1/image-to-video`
@@ -44,7 +44,7 @@ class ImageToVideoClient:
44
44
 
45
45
  Create a Image To Video video. The estimated frame cost is calculated using 30 FPS. This amount is deducted from your account balance when a video is queued. Once the video is complete, the cost will be updated based on the actual number of frames rendered.
46
46
 
47
- Get more information about this mode at our [product page](/products/image-to-video).
47
+ Get more information about this mode at our [product page](https://magichour.ai/products/image-to-video).
48
48
 
49
49
 
50
50
  POST /v1/image-to-video
@@ -140,7 +140,7 @@ class AsyncImageToVideoClient:
140
140
 
141
141
  Create a Image To Video video. The estimated frame cost is calculated using 30 FPS. This amount is deducted from your account balance when a video is queued. Once the video is complete, the cost will be updated based on the actual number of frames rendered.
142
142
 
143
- Get more information about this mode at our [product page](/products/image-to-video).
143
+ Get more information about this mode at our [product page](https://magichour.ai/products/image-to-video).
144
144
 
145
145
 
146
146
  POST /v1/image-to-video
@@ -3,7 +3,7 @@
3
3
 
4
4
  Create a Lip Sync video. The estimated frame cost is calculated using 30 FPS. This amount is deducted from your account balance when a video is queued. Once the video is complete, the cost will be updated based on the actual number of frames rendered.
5
5
 
6
- Get more information about this mode at our [product page](/products/lip-sync).
6
+ Get more information about this mode at our [product page](https://magichour.ai/products/lip-sync).
7
7
 
8
8
 
9
9
  **API Endpoint**: `POST /v1/lip-sync`
@@ -40,7 +40,7 @@ class LipSyncClient:
40
40
 
41
41
  Create a Lip Sync video. The estimated frame cost is calculated using 30 FPS. This amount is deducted from your account balance when a video is queued. Once the video is complete, the cost will be updated based on the actual number of frames rendered.
42
42
 
43
- Get more information about this mode at our [product page](/products/lip-sync).
43
+ Get more information about this mode at our [product page](https://magichour.ai/products/lip-sync).
44
44
 
45
45
 
46
46
  POST /v1/lip-sync
@@ -144,7 +144,7 @@ class AsyncLipSyncClient:
144
144
 
145
145
  Create a Lip Sync video. The estimated frame cost is calculated using 30 FPS. This amount is deducted from your account balance when a video is queued. Once the video is complete, the cost will be updated based on the actual number of frames rendered.
146
146
 
147
- Get more information about this mode at our [product page](/products/lip-sync).
147
+ Get more information about this mode at our [product page](https://magichour.ai/products/lip-sync).
148
148
 
149
149
 
150
150
  POST /v1/lip-sync
@@ -3,7 +3,7 @@
3
3
 
4
4
  Create a Text To Video video. The estimated frame cost is calculated using 30 FPS. This amount is deducted from your account balance when a video is queued. Once the video is complete, the cost will be updated based on the actual number of frames rendered.
5
5
 
6
- Get more information about this mode at our [product page](/products/text-to-video).
6
+ Get more information about this mode at our [product page](https://magichour.ai/products/text-to-video).
7
7
 
8
8
 
9
9
  **API Endpoint**: `POST /v1/text-to-video`
@@ -36,7 +36,7 @@ class TextToVideoClient:
36
36
 
37
37
  Create a Text To Video video. The estimated frame cost is calculated using 30 FPS. This amount is deducted from your account balance when a video is queued. Once the video is complete, the cost will be updated based on the actual number of frames rendered.
38
38
 
39
- Get more information about this mode at our [product page](/products/text-to-video).
39
+ Get more information about this mode at our [product page](https://magichour.ai/products/text-to-video).
40
40
 
41
41
 
42
42
  POST /v1/text-to-video
@@ -115,7 +115,7 @@ class AsyncTextToVideoClient:
115
115
 
116
116
  Create a Text To Video video. The estimated frame cost is calculated using 30 FPS. This amount is deducted from your account balance when a video is queued. Once the video is complete, the cost will be updated based on the actual number of frames rendered.
117
117
 
118
- Get more information about this mode at our [product page](/products/text-to-video).
118
+ Get more information about this mode at our [product page](https://magichour.ai/products/text-to-video).
119
119
 
120
120
 
121
121
  POST /v1/text-to-video
@@ -3,7 +3,7 @@
3
3
 
4
4
  Create a Video To Video video. The estimated frame cost is calculated using 30 FPS. This amount is deducted from your account balance when a video is queued. Once the video is complete, the cost will be updated based on the actual number of frames rendered.
5
5
 
6
- Get more information about this mode at our [product page](/products/video-to-video).
6
+ Get more information about this mode at our [product page](https://magichour.ai/products/video-to-video).
7
7
 
8
8
 
9
9
  **API Endpoint**: `POST /v1/video-to-video`
@@ -43,7 +43,7 @@ class VideoToVideoClient:
43
43
 
44
44
  Create a Video To Video video. The estimated frame cost is calculated using 30 FPS. This amount is deducted from your account balance when a video is queued. Once the video is complete, the cost will be updated based on the actual number of frames rendered.
45
45
 
46
- Get more information about this mode at our [product page](/products/video-to-video).
46
+ Get more information about this mode at our [product page](https://magichour.ai/products/video-to-video).
47
47
 
48
48
 
49
49
  POST /v1/video-to-video
@@ -159,7 +159,7 @@ class AsyncVideoToVideoClient:
159
159
 
160
160
  Create a Video To Video video. The estimated frame cost is calculated using 30 FPS. This amount is deducted from your account balance when a video is queued. Once the video is complete, the cost will be updated based on the actual number of frames rendered.
161
161
 
162
- Get more information about this mode at our [product page](/products/video-to-video).
162
+ Get more information about this mode at our [product page](https://magichour.ai/products/video-to-video).
163
163
 
164
164
 
165
165
  POST /v1/video-to-video
@@ -154,6 +154,10 @@ from .v1_face_swap_create_body_assets import (
154
154
  V1FaceSwapCreateBodyAssets,
155
155
  _SerializerV1FaceSwapCreateBodyAssets,
156
156
  )
157
+ from .v1_face_swap_create_body_assets_face_mappings_item import (
158
+ V1FaceSwapCreateBodyAssetsFaceMappingsItem,
159
+ _SerializerV1FaceSwapCreateBodyAssetsFaceMappingsItem,
160
+ )
157
161
  from .v1_face_swap_photo_create_body import (
158
162
  V1FaceSwapPhotoCreateBody,
159
163
  _SerializerV1FaceSwapPhotoCreateBody,
@@ -269,6 +273,7 @@ __all__ = [
269
273
  "V1FaceDetectionCreateBodyAssets",
270
274
  "V1FaceSwapCreateBody",
271
275
  "V1FaceSwapCreateBodyAssets",
276
+ "V1FaceSwapCreateBodyAssetsFaceMappingsItem",
272
277
  "V1FaceSwapPhotoCreateBody",
273
278
  "V1FaceSwapPhotoCreateBodyAssets",
274
279
  "V1FaceSwapPhotoCreateBodyAssetsFaceMappingsItem",
@@ -327,6 +332,7 @@ __all__ = [
327
332
  "_SerializerV1FaceDetectionCreateBodyAssets",
328
333
  "_SerializerV1FaceSwapCreateBody",
329
334
  "_SerializerV1FaceSwapCreateBodyAssets",
335
+ "_SerializerV1FaceSwapCreateBodyAssetsFaceMappingsItem",
330
336
  "_SerializerV1FaceSwapPhotoCreateBody",
331
337
  "_SerializerV1FaceSwapPhotoCreateBodyAssets",
332
338
  "_SerializerV1FaceSwapPhotoCreateBodyAssetsFaceMappingsItem",
@@ -2,15 +2,38 @@ import pydantic
2
2
  import typing
3
3
  import typing_extensions
4
4
 
5
+ from .v1_face_swap_create_body_assets_face_mappings_item import (
6
+ V1FaceSwapCreateBodyAssetsFaceMappingsItem,
7
+ _SerializerV1FaceSwapCreateBodyAssetsFaceMappingsItem,
8
+ )
9
+
5
10
 
6
11
  class V1FaceSwapCreateBodyAssets(typing_extensions.TypedDict):
7
12
  """
8
13
  Provide the assets for face swap. For video, The `video_source` field determines whether `video_file_path` or `youtube_url` field is used
9
14
  """
10
15
 
16
+ face_mappings: typing_extensions.NotRequired[
17
+ typing.List[V1FaceSwapCreateBodyAssetsFaceMappingsItem]
18
+ ]
19
+ """
20
+ This is the array of face mappings used for multiple face swap. The value is required if `face_swap_mode` is `individual-faces`.
21
+ """
22
+
23
+ face_swap_mode: typing_extensions.NotRequired[
24
+ typing_extensions.Literal["all-faces", "individual-faces"]
25
+ ]
26
+ """
27
+ The mode of face swap.
28
+ * `all-faces` - Swap all faces in the target image or video. `source_file_path` is required.
29
+ * `individual-faces` - Swap individual faces in the target image or video. `source_faces` is required.
30
+ """
31
+
11
32
  image_file_path: typing_extensions.Required[str]
12
33
  """
13
- The path of the input image. This value can be either the `file_path` field from the response of the [upload urls API](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls), or the url of the file.
34
+ The path of the input image with the face to be swapped. The value is required if `face_swap_mode` is `all-faces`.
35
+
36
+ This value can be either the `file_path` field from the response of the [upload urls API](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls), or the url of the file.
14
37
  """
15
38
 
16
39
  video_file_path: typing_extensions.NotRequired[str]
@@ -38,6 +61,12 @@ class _SerializerV1FaceSwapCreateBodyAssets(pydantic.BaseModel):
38
61
  populate_by_name=True,
39
62
  )
40
63
 
64
+ face_mappings: typing.Optional[
65
+ typing.List[_SerializerV1FaceSwapCreateBodyAssetsFaceMappingsItem]
66
+ ] = pydantic.Field(alias="face_mappings", default=None)
67
+ face_swap_mode: typing.Optional[
68
+ typing_extensions.Literal["all-faces", "individual-faces"]
69
+ ] = pydantic.Field(alias="face_swap_mode", default=None)
41
70
  image_file_path: str = pydantic.Field(
42
71
  alias="image_file_path",
43
72
  )
@@ -0,0 +1,39 @@
1
+ import pydantic
2
+ import typing_extensions
3
+
4
+
5
+ class V1FaceSwapCreateBodyAssetsFaceMappingsItem(typing_extensions.TypedDict):
6
+ """
7
+ V1FaceSwapCreateBodyAssetsFaceMappingsItem
8
+ """
9
+
10
+ new_face: typing_extensions.Required[str]
11
+ """
12
+ The face image that will be used to replace the face in the `original_face`. This value can be either the `file_path` field from the response of the [upload urls API](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls), or the url of the file.
13
+ """
14
+
15
+ original_face: typing_extensions.Required[str]
16
+ """
17
+ The face detected from the image in `target_file_path`. The file name is in the format of `<face_frame>-<face_index>.png`. This value is corresponds to the response in the [face detection API](https://docs.magichour.ai/api-reference/files/get-face-detection-details).
18
+
19
+ * The face_frame is the frame number of the face in the target image. For images, the frame number is always 0.
20
+ * The face_index is the index of the face in the target image, starting from 0 going left to right.
21
+ """
22
+
23
+
24
+ class _SerializerV1FaceSwapCreateBodyAssetsFaceMappingsItem(pydantic.BaseModel):
25
+ """
26
+ Serializer for V1FaceSwapCreateBodyAssetsFaceMappingsItem 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
+ new_face: str = pydantic.Field(
35
+ alias="new_face",
36
+ )
37
+ original_face: str = pydantic.Field(
38
+ alias="original_face",
39
+ )
@@ -25,8 +25,8 @@ class V1FaceSwapPhotoCreateBodyAssets(typing_extensions.TypedDict):
25
25
  ]
26
26
  """
27
27
  The mode of face swap.
28
- * `all-faces` - Swap all faces in the target image. `source_file_path` is required.
29
- * `individual-faces` - Swap individual faces in the target image. `source_faces` is required.
28
+ * `all-faces` - Swap all faces in the target image or video. `source_file_path` is required.
29
+ * `individual-faces` - Swap individual faces in the target image or video. `source_faces` is required.
30
30
  """
31
31
 
32
32
  source_file_path: typing_extensions.NotRequired[str]
@@ -14,7 +14,7 @@ class V1FaceSwapPhotoCreateBodyAssetsFaceMappingsItem(typing_extensions.TypedDic
14
14
 
15
15
  original_face: typing_extensions.Required[str]
16
16
  """
17
- The face detected from the image in `target_file_path`. The file name is in the format of `<face_frame>-<face_index>.png`. This value is corresponds to the response in the face detection API [COMING SOON].
17
+ The face detected from the image in `target_file_path`. The file name is in the format of `<face_frame>-<face_index>.png`. This value is corresponds to the response in the [face detection API](https://docs.magichour.ai/api-reference/files/get-face-detection-details).
18
18
 
19
19
  * The face_frame is the frame number of the face in the target image. For images, the frame number is always 0.
20
20
  * The face_index is the index of the face in the target image, starting from 0 going left to right.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: magic_hour
3
- Version: 0.30.0
3
+ Version: 0.31.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
@@ -10,7 +10,7 @@ magic_hour/core/request.py,sha256=_ikn8iZ2fU9Ubqnt7M9hdEnXGV6AAFHJYmDKBtxEY4I,52
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=UHZwPSDACt4Te7qmhCyVpckUCu4kcddbgnUIBp7Uztw,535
13
+ magic_hour/environment.py,sha256=TJ4rB_GcNGOULIQADV9K4fs_IOmeqVnxFMAXOiOpdLI,535
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=x9cVTx9nHsyIutYjoUk1DeJg55cti6DAN_C-kBI_47Q,1564
16
16
  magic_hour/resources/v1/ai_clothes_changer/__init__.py,sha256=6W_Y2HxG2sDOBiJyzngK3Q2S3xfQgpK-j8xFRmBAhbQ,142
@@ -54,13 +54,13 @@ magic_hour/resources/v1/auto_subtitle_generator/client.py,sha256=6HvbAVsB9cJol6u
54
54
  magic_hour/resources/v1/client.py,sha256=ERCl_sMEwUgTEoo7hmknz4c4QoyPkSc5Hvlci976Xt8,7563
55
55
  magic_hour/resources/v1/face_detection/README.md,sha256=tbnVcaHIWrRcaGc8Ea3Cg5XlyrVTtxaXXHnCWdzDSIw,2445
56
56
  magic_hour/resources/v1/face_detection/__init__.py,sha256=nLsNn9D1wGryYyD41H7QqAeeHuSsfFSJtYQTMVCQQUk,130
57
- magic_hour/resources/v1/face_detection/client.py,sha256=UOhnkvkUR772QGXVFWraJJ3LWcq-Hnp2-Guwtl0F7jI,6271
58
- magic_hour/resources/v1/face_swap/README.md,sha256=-bENF57lpZQu55C1psxKc45Ev1kMcD8GYWXGxa9hbzU,3334
57
+ magic_hour/resources/v1/face_detection/client.py,sha256=mH70WIk0UK5el3aqk1f321qkd9YZYidu6PIlmHVixyM,6349
58
+ magic_hour/resources/v1/face_swap/README.md,sha256=JeuB-bO68x6YkGW2hbSrTmim8Ha1TdTprBNy71ekt_o,3920
59
59
  magic_hour/resources/v1/face_swap/__init__.py,sha256=lyg5uAHyYHEUVAiAZtP3zwjGCEGqq8IWbQKexVdhr00,110
60
- magic_hour/resources/v1/face_swap/client.py,sha256=-BpJae7J4PZPUG45BMA3HBB2XhrbHpgWqwwyaDFH88A,8519
61
- magic_hour/resources/v1/face_swap_photo/README.md,sha256=bjPkF7J9ThR5nrOrl6jPD1ZvMDgCtjFoeKUvXXvg_-Y,2072
60
+ magic_hour/resources/v1/face_swap/client.py,sha256=s7TmdfmzeO1M8JizCfRjs2ObkMXFiKXC1df94UKxnOw,9105
61
+ magic_hour/resources/v1/face_swap_photo/README.md,sha256=21FGZ1b4xALLp5Z9hsn8P8pzKcvLRnhPQg-acVJjBO0,2092
62
62
  magic_hour/resources/v1/face_swap_photo/__init__.py,sha256=NZEplYX5kDPL_0qY0Q5tuxhDevipN0otByTYKMmF_1k,130
63
- magic_hour/resources/v1/face_swap_photo/client.py,sha256=NfAG4YbOHP4k88p6WndEMw_pO4XHNI3tDEBJgb7Csdo,4575
63
+ magic_hour/resources/v1/face_swap_photo/client.py,sha256=lwpzNmbSKJ0YpWot0GC3hLHGBz76q5Xdr8Z2YC9uTas,4615
64
64
  magic_hour/resources/v1/files/__init__.py,sha256=ucXmaXDdZqXfRhnnioJeQAXeRLzBDb44gTfWijrub28,98
65
65
  magic_hour/resources/v1/files/client.py,sha256=kJ636UbY_XZENwpqIKdz_2bxnr1P7TK9SDj_epNnItw,562
66
66
  magic_hour/resources/v1/files/upload_urls/README.md,sha256=iTF6QEbODlTPzszTZeQv681xG4XEJOIGPsgZSUlQLNg,2215
@@ -72,24 +72,24 @@ magic_hour/resources/v1/image_background_remover/client.py,sha256=A6T1Kq3Lh4dsCV
72
72
  magic_hour/resources/v1/image_projects/README.md,sha256=iarr0Cu2a_ls4A6_NtjeDxNVhIsP5ZuFHMNidUh2oiE,2524
73
73
  magic_hour/resources/v1/image_projects/__init__.py,sha256=oBlV4e5IVYe8SclhoEy2VOYB53kKP2DORXwcztAwU3E,130
74
74
  magic_hour/resources/v1/image_projects/client.py,sha256=FbqvgvoLFcAjBtqgGtQZMNT8jG5f2bJH7Poxod446sw,5527
75
- magic_hour/resources/v1/image_to_video/README.md,sha256=ZRBTdv5WnpQzejVdDoga4YM5lYy5gIvdD_-hfePSZGo,2726
75
+ magic_hour/resources/v1/image_to_video/README.md,sha256=yBKt2U7Tl3ech8ZUac1o8AlUGydFBfZ4DbQ8GjUNNzA,2746
76
76
  magic_hour/resources/v1/image_to_video/__init__.py,sha256=tY_ABo6evwKQBRSq-M84lNX-pXqmxoozukmrO6NhCgA,126
77
- magic_hour/resources/v1/image_to_video/client.py,sha256=dQ6RxISgqRTKAeL3UlfaToRm34OhmnY5tM5VRCbJFcY,8180
78
- magic_hour/resources/v1/lip_sync/README.md,sha256=vJaOR5E2m3TFSgiF6oQr4DpgX8i9L5Fk5r_HjXK2qmM,3674
77
+ magic_hour/resources/v1/image_to_video/client.py,sha256=x29Yx66QksBFXwpgjBZO4bGcFcjtkkOS46PT9sgmqGc,8220
78
+ magic_hour/resources/v1/lip_sync/README.md,sha256=nOBX3e_B5Wfy-BTMJN7kABAgdKmsSWQ_v7IQg_r7gcg,3694
79
79
  magic_hour/resources/v1/lip_sync/__init__.py,sha256=MlKUAoHNSKcuNzVyqNfLnLtD_PsqEn3l1TtVpPC1JqQ,106
80
- magic_hour/resources/v1/lip_sync/client.py,sha256=LnIzY3bTqSwB0h-44d9Escv7iQAiYsGOSzL4GKn3iMs,9475
80
+ magic_hour/resources/v1/lip_sync/client.py,sha256=WpNGwvk0EEI8qjIlDVOdIUH7lZHV_ODOAfe7hNPPSns,9515
81
81
  magic_hour/resources/v1/photo_colorizer/README.md,sha256=vQU6emuGwMncXPrt5zucCDlvn7l0SJG-SZ1ze2UYjIM,1192
82
82
  magic_hour/resources/v1/photo_colorizer/__init__.py,sha256=7rDjkeUzWG5GXw_4RD1XH7Ygy-_0_OUFX99IgE_RVbE,134
83
83
  magic_hour/resources/v1/photo_colorizer/client.py,sha256=hsGfDYN4wjzxk4kM193IJhxgAp8XaMaPJ2biB4Y-yns,3591
84
- magic_hour/resources/v1/text_to_video/README.md,sha256=BH1IjiTV9YDzTtl3_A9qMnftKXi6JvMsxTgsURYjX9s,2133
84
+ magic_hour/resources/v1/text_to_video/README.md,sha256=oFYbt9zTjyZYDMTh-rFjJPKVtLlsWAjCxasd7IsTOuE,2153
85
85
  magic_hour/resources/v1/text_to_video/__init__.py,sha256=F18iHSi9tuYSdgpatznBzb7lbSySNpK-82w96-Om_k4,122
86
- magic_hour/resources/v1/text_to_video/client.py,sha256=oy33GFX0UcnIbKR2p0NxxpJ0vnkIhe3j_niI7LKkkXY,6426
86
+ magic_hour/resources/v1/text_to_video/client.py,sha256=dr_sNmgJfIzTZtZU4v0c-3ErRx-xIeQOvS5ZVsPH7mc,6466
87
87
  magic_hour/resources/v1/video_projects/README.md,sha256=EAOknjKAszIh8FuYP_0EV8zBm9ToC7_sMokEeVf-kfM,2696
88
88
  magic_hour/resources/v1/video_projects/__init__.py,sha256=1aj_tE-GAf8BuQ76RQvjGVn8Y39CjdAJDlcsCPucX0w,130
89
89
  magic_hour/resources/v1/video_projects/client.py,sha256=JvhYhf3phYkdVj8VpWxvxF8qWBRU-WaZYi-8lhVgpSQ,5511
90
- magic_hour/resources/v1/video_to_video/README.md,sha256=-b1nUKbUxXgtffS0yNPmvkYGL8ZVSAM4K3cVfT4-ghs,4081
90
+ magic_hour/resources/v1/video_to_video/README.md,sha256=SbNV27MuIhefZwyGwA_6lXEJU83Ws9R80lP57TgQEEw,4101
91
91
  magic_hour/resources/v1/video_to_video/__init__.py,sha256=1SHaRLlsrlBkdxxKBYgdbHrGATlRvqlXc22RpjjHaOA,126
92
- magic_hour/resources/v1/video_to_video/client.py,sha256=WFmYL3ZBLyKLDBOOOc9tJigtwviI6JLjbH7yJSsiIyM,10404
92
+ magic_hour/resources/v1/video_to_video/client.py,sha256=5OlZs_w5k24EbHuQ69YLSE1kA68O745qqbDUPofuz7A,10444
93
93
  magic_hour/types/models/__init__.py,sha256=VLH_NXpUAVSZd16zlv4DobqAQdQFPWkWORqttLv5iDw,4048
94
94
  magic_hour/types/models/v1_ai_clothes_changer_create_response.py,sha256=rQJqlDf7Ql46hR4eAepU6SnZS3fH-gewmSJ-OvEY5K0,1102
95
95
  magic_hour/types/models/v1_ai_face_editor_create_response.py,sha256=pGpfZMCRhhDYCV-tj3hfmuXvQPhb44csnyrcwh9tfQM,1098
@@ -124,7 +124,7 @@ magic_hour/types/models/v1_video_projects_get_response_download.py,sha256=nudDCN
124
124
  magic_hour/types/models/v1_video_projects_get_response_downloads_item.py,sha256=DlUuLBSGa7jWoozxferkaOsGc4jASItcjjWbBXGu620,410
125
125
  magic_hour/types/models/v1_video_projects_get_response_error.py,sha256=49QxnXAmYHcvSWuuhbQZeGlUfqVcO4YwZ414GczQnvA,568
126
126
  magic_hour/types/models/v1_video_to_video_create_response.py,sha256=HCquU2Dciu6jCvhlpce8sGg1CypZngvtrvkwyCWOkSY,1346
127
- magic_hour/types/params/__init__.py,sha256=5p8SY-XeAXQFQPu0aoVa9jkQ4_LSxGI3rYbp-eF8PMY,12951
127
+ magic_hour/types/params/__init__.py,sha256=AYSZd_i-A0hX9FcLGKx5Iw7KZfm1xN_0-iDNl5l6m2o,13237
128
128
  magic_hour/types/params/v1_ai_clothes_changer_create_body.py,sha256=X5koqrTxYLiKcRMqPF7r-VwQzy4r_7k81o1289zHJvo,1006
129
129
  magic_hour/types/params/v1_ai_clothes_changer_create_body_assets.py,sha256=GGnXOExxXtnHT9wQpDCEkLHQlQB5MbAbYuU47iHGf70,1509
130
130
  magic_hour/types/params/v1_ai_face_editor_create_body.py,sha256=sF7mJbqratllYwQ3slqUTctOndAYnH9BDMJu-49Db-4,1313
@@ -163,10 +163,11 @@ magic_hour/types/params/v1_auto_subtitle_generator_create_body_style_custom_conf
163
163
  magic_hour/types/params/v1_face_detection_create_body.py,sha256=GSk6zzi5jqb-oluAf5IpPfVuwXkKyKceWblieLZ572s,1277
164
164
  magic_hour/types/params/v1_face_detection_create_body_assets.py,sha256=tprBC360DJze2fyyQaWFH28CgW-kwg5sRvoBmYuHYyM,867
165
165
  magic_hour/types/params/v1_face_swap_create_body.py,sha256=ZLxWHSs5NHHeBxBAE-8AEgUwEpEhpYQC4fW9dkmDXxQ,2923
166
- magic_hour/types/params/v1_face_swap_create_body_assets.py,sha256=CYcleQ4o_YLxRjRiVRwB-L_Cr0WTjsb6417uwdT0fas,1888
166
+ magic_hour/types/params/v1_face_swap_create_body_assets.py,sha256=NVlEkU2pKmARCHaIWFqK62ga4z-CznBTAjbUW5rc92k,3138
167
+ magic_hour/types/params/v1_face_swap_create_body_assets_face_mappings_item.py,sha256=vqn76tk-LZ08Ugjle5XaXh5Cm-fv_asqNLlo8WMTKio,1541
167
168
  magic_hour/types/params/v1_face_swap_photo_create_body.py,sha256=OYsrz7d7i7eg28bR_YS5ucl6k_bMhmNrOt2dF7MYdM4,979
168
- magic_hour/types/params/v1_face_swap_photo_create_body_assets.py,sha256=zf4WQtVPxAsy0kQZ1HynW19cmI8MiCLiG2D6AzuTRe4,2555
169
- magic_hour/types/params/v1_face_swap_photo_create_body_assets_face_mappings_item.py,sha256=zdvKjguVS0puNA1CFUSvJwrCGPlLdfmX-FJFxnoEL4w,1499
169
+ magic_hour/types/params/v1_face_swap_photo_create_body_assets.py,sha256=K8LcgfMbAu9nhdPmZceKg1qgyMImxz3472kMi-I58GE,2573
170
+ magic_hour/types/params/v1_face_swap_photo_create_body_assets_face_mappings_item.py,sha256=4RjKJWPt7AHJHO3uhhZ1gMto9PoF1hYtJdfTg5K16po,1561
170
171
  magic_hour/types/params/v1_files_upload_urls_create_body.py,sha256=X6-ZcUqVVTM3w_y1HjU1zvicle5h0RvTK59yK3opZ-s,841
171
172
  magic_hour/types/params/v1_files_upload_urls_create_body_items_item.py,sha256=I26O2Jx5_uhsCOrQCL_-wPeenu0rzhNwCDy0AEI6YuQ,962
172
173
  magic_hour/types/params/v1_image_background_remover_create_body.py,sha256=l3sb8UTXjie3gMd4ZJhHik-N1o3zaVzsZ7xDaS_uTG4,1063
@@ -183,7 +184,7 @@ magic_hour/types/params/v1_text_to_video_create_body_style.py,sha256=cEZO917hipE
183
184
  magic_hour/types/params/v1_video_to_video_create_body.py,sha256=Pgok6GUVHrpW6H3rwdVFA3O5YJvjgviCZkmmHddOSWo,3802
184
185
  magic_hour/types/params/v1_video_to_video_create_body_assets.py,sha256=_-6iA5d8ndka6iJWyWvlJwzRkQcmurJE6hkg-fDwBmQ,1531
185
186
  magic_hour/types/params/v1_video_to_video_create_body_style.py,sha256=RrDBhN2KQnCf9hGsnl3sAYvuFRsxth2JXfe5la0IYJg,5749
186
- magic_hour-0.30.0.dist-info/LICENSE,sha256=F3fxj7JXPgB2K0uj8YXRsVss4u-Dgt_-U3V4VXsivNI,1070
187
- magic_hour-0.30.0.dist-info/METADATA,sha256=GYEMkJXeN9w8Ip84R1eupCy9bIdGwDauEfRLu53hkQ8,6092
188
- magic_hour-0.30.0.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
189
- magic_hour-0.30.0.dist-info/RECORD,,
187
+ magic_hour-0.31.0.dist-info/LICENSE,sha256=F3fxj7JXPgB2K0uj8YXRsVss4u-Dgt_-U3V4VXsivNI,1070
188
+ magic_hour-0.31.0.dist-info/METADATA,sha256=id5P_5FvkiXqEM09jEmcOVbiwrXKMsb4zbK13Ab8o9c,6092
189
+ magic_hour-0.31.0.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
190
+ magic_hour-0.31.0.dist-info/RECORD,,