magic_hour 0.9.3__py3-none-any.whl → 0.9.4__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/client.py +1 -1
- magic_hour/core/__init__.py +2 -3
- magic_hour/core/query.py +106 -0
- magic_hour/core/request.py +3 -5
- magic_hour/core/utils.py +1 -1
- magic_hour/environment.py +1 -1
- magic_hour/types/models/get_v1_image_projects_id_response.py +1 -1
- magic_hour/types/models/get_v1_video_projects_id_response.py +1 -1
- magic_hour/types/models/post_v1_ai_clothes_changer_response.py +1 -1
- magic_hour/types/models/post_v1_ai_headshot_generator_response.py +1 -1
- magic_hour/types/models/post_v1_ai_image_generator_response.py +1 -1
- magic_hour/types/models/post_v1_ai_image_upscaler_response.py +1 -1
- magic_hour/types/models/post_v1_ai_photo_editor_response.py +1 -1
- magic_hour/types/models/post_v1_ai_qr_code_generator_response.py +1 -1
- magic_hour/types/models/post_v1_animation_response.py +1 -1
- magic_hour/types/models/post_v1_face_swap_photo_response.py +1 -1
- magic_hour/types/models/post_v1_face_swap_response.py +1 -1
- magic_hour/types/models/post_v1_image_background_remover_response.py +1 -1
- magic_hour/types/models/post_v1_image_to_video_response.py +1 -1
- magic_hour/types/models/post_v1_lip_sync_response.py +1 -1
- magic_hour/types/models/post_v1_text_to_video_response.py +1 -1
- magic_hour/types/models/post_v1_video_to_video_response.py +1 -1
- magic_hour/types/params/post_v1_ai_clothes_changer_body_assets.py +2 -2
- magic_hour/types/params/post_v1_ai_headshot_generator_body_assets.py +1 -1
- magic_hour/types/params/post_v1_ai_image_upscaler_body_assets.py +1 -1
- magic_hour/types/params/post_v1_ai_photo_editor_body_assets.py +1 -1
- magic_hour/types/params/post_v1_animation_body_assets.py +2 -2
- magic_hour/types/params/post_v1_face_swap_body_assets.py +2 -2
- magic_hour/types/params/post_v1_face_swap_photo_body_assets.py +2 -2
- magic_hour/types/params/post_v1_image_background_remover_body_assets.py +1 -1
- magic_hour/types/params/post_v1_image_to_video_body_assets.py +1 -1
- magic_hour/types/params/post_v1_lip_sync_body_assets.py +2 -2
- magic_hour/types/params/post_v1_video_to_video_body_assets.py +1 -1
- {magic_hour-0.9.3.dist-info → magic_hour-0.9.4.dist-info}/METADATA +1 -1
- {magic_hour-0.9.3.dist-info → magic_hour-0.9.4.dist-info}/RECORD +37 -36
- {magic_hour-0.9.3.dist-info → magic_hour-0.9.4.dist-info}/LICENSE +0 -0
- {magic_hour-0.9.3.dist-info → magic_hour-0.9.4.dist-info}/WHEEL +0 -0
magic_hour/client.py
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import httpx
|
|
2
2
|
import typing
|
|
3
3
|
|
|
4
|
-
from magic_hour.resources.v1 import AsyncV1Client, V1Client
|
|
5
4
|
from magic_hour.environment import Environment
|
|
6
5
|
from magic_hour.core import AsyncBaseClient, AuthBearer, SyncBaseClient
|
|
6
|
+
from magic_hour.resources.v1 import AsyncV1Client, V1Client
|
|
7
7
|
|
|
8
8
|
|
|
9
9
|
class Client:
|
magic_hour/core/__init__.py
CHANGED
|
@@ -13,14 +13,13 @@ from .auth import (
|
|
|
13
13
|
)
|
|
14
14
|
from .base_client import AsyncBaseClient, BaseClient, SyncBaseClient
|
|
15
15
|
from .binary_response import BinaryResponse
|
|
16
|
+
from .query import encode_query_param, QueryParams
|
|
16
17
|
from .request import (
|
|
17
|
-
encode_param,
|
|
18
18
|
filter_not_given,
|
|
19
19
|
to_content,
|
|
20
20
|
to_encodable,
|
|
21
21
|
RequestOptions,
|
|
22
22
|
default_request_options,
|
|
23
|
-
QueryParams,
|
|
24
23
|
)
|
|
25
24
|
from .response import from_encodable, AsyncStreamResponse, StreamResponse
|
|
26
25
|
|
|
@@ -45,7 +44,7 @@ __all__ = [
|
|
|
45
44
|
"to_encodable",
|
|
46
45
|
"filter_not_given",
|
|
47
46
|
"to_content",
|
|
48
|
-
"
|
|
47
|
+
"encode_query_param",
|
|
49
48
|
"from_encodable",
|
|
50
49
|
"AsyncStreamResponse",
|
|
51
50
|
"StreamResponse",
|
magic_hour/core/query.py
ADDED
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
from typing import Any, Dict, Union
|
|
2
|
+
from typing_extensions import Literal, Sequence
|
|
3
|
+
from urllib.parse import quote_plus, quote
|
|
4
|
+
|
|
5
|
+
import httpx
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
# Type alias for query parameters that can handle both primitive data and sequences
|
|
9
|
+
QueryParams = Dict[
|
|
10
|
+
str, Union[httpx._types.PrimitiveData, Sequence[httpx._types.PrimitiveData]]
|
|
11
|
+
]
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
def encode_query_param(
|
|
15
|
+
params: QueryParams,
|
|
16
|
+
name: str,
|
|
17
|
+
value: Any,
|
|
18
|
+
style: Literal["form", "spaceDelimited", "pipeDelimited", "deepObject"] = "form",
|
|
19
|
+
explode: bool = True,
|
|
20
|
+
):
|
|
21
|
+
if style == "form":
|
|
22
|
+
_encode_form(params, name, value, explode)
|
|
23
|
+
elif style == "spaceDelimited":
|
|
24
|
+
_encode_spaced_delimited(params, name, value, explode)
|
|
25
|
+
elif style == "pipeDelimited":
|
|
26
|
+
_encode_pipe_delimited(params, name, value, explode)
|
|
27
|
+
elif style == "deepObject":
|
|
28
|
+
_encode_deep_object(params, name, value, explode)
|
|
29
|
+
else:
|
|
30
|
+
raise NotImplementedError(f"query param style '{style}' not implemented")
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
def _encode_form(params: QueryParams, name: str, value: Any, explode: bool):
|
|
34
|
+
"""
|
|
35
|
+
Encodes query params in the `form` style as defined by OpenAPI with both explode and non-explode
|
|
36
|
+
variants.
|
|
37
|
+
"""
|
|
38
|
+
if isinstance(value, list) and not explode:
|
|
39
|
+
# non-explode form lists should be encoded like /users?id=3,4,5
|
|
40
|
+
params[name] = quote_plus(",".join(map(str, value)))
|
|
41
|
+
elif isinstance(value, dict):
|
|
42
|
+
if explode:
|
|
43
|
+
# explode form objects should be encoded like /users?key0=val0&key1=val1
|
|
44
|
+
# the input param name will be omitted
|
|
45
|
+
for k, v in value.items():
|
|
46
|
+
params[k] = quote_plus(str(v))
|
|
47
|
+
else:
|
|
48
|
+
# non-explode form objects should be encoded like /users?id=key0,val0,key1,val1
|
|
49
|
+
encoded_chunks = []
|
|
50
|
+
for k, v in value.items():
|
|
51
|
+
encoded_chunks.extend([str(k), str(v)])
|
|
52
|
+
params[name] = quote_plus(",".join(encoded_chunks))
|
|
53
|
+
else:
|
|
54
|
+
params[name] = value
|
|
55
|
+
|
|
56
|
+
|
|
57
|
+
def _encode_spaced_delimited(params: QueryParams, name: str, value: Any, explode: bool):
|
|
58
|
+
"""
|
|
59
|
+
Encodes query params in the `spaceDelimited` style as defined by OpenAPI with both explode and non-explode
|
|
60
|
+
variants.
|
|
61
|
+
"""
|
|
62
|
+
if isinstance(value, list) and not explode:
|
|
63
|
+
# non-explode spaceDelimited lists should be encoded like /users?id=3%204%205
|
|
64
|
+
params[name] = quote(" ".join(map(str, value)))
|
|
65
|
+
else:
|
|
66
|
+
# according to the docs, spaceDelimited + explode=false only effects lists,
|
|
67
|
+
# all other encodings are marked as n/a or are the same as `form` style
|
|
68
|
+
# fall back on form style as it is the default for query params
|
|
69
|
+
_encode_form(params, name, value, explode)
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
def _encode_pipe_delimited(params: QueryParams, name: str, value: Any, explode: bool):
|
|
73
|
+
"""
|
|
74
|
+
Encodes query params in the `pipeDelimited` style as defined by OpenAPI with both explode and non-explode
|
|
75
|
+
variants.
|
|
76
|
+
"""
|
|
77
|
+
if isinstance(value, list) and not explode:
|
|
78
|
+
# non-explode pipeDelimited lists should be encoded like /users?id=3|4|5
|
|
79
|
+
params[name] = quote("|".join(map(str, value)))
|
|
80
|
+
else:
|
|
81
|
+
# according to the docs, pipeDelimited + explode=false only effects lists,
|
|
82
|
+
# all other encodings are marked as n/a or are the same as `form` style
|
|
83
|
+
# fall back on form style as it is the default for query params
|
|
84
|
+
_encode_form(params, name, value, explode)
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
def _encode_deep_object(params: QueryParams, name: str, value: Any, explode: bool):
|
|
88
|
+
""" """
|
|
89
|
+
if isinstance(value, dict):
|
|
90
|
+
_encode_deep_object_key(params, name, value)
|
|
91
|
+
else:
|
|
92
|
+
# according to the docs, deepObject style only applies to
|
|
93
|
+
# object encodes, encodings for primitives & arrays are listed as n/a,
|
|
94
|
+
# fall back on form style as it is the default for query params
|
|
95
|
+
_encode_form(params, name, value, explode)
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
def _encode_deep_object_key(params: QueryParams, key: str, value: Any):
|
|
99
|
+
if isinstance(value, dict):
|
|
100
|
+
for k, v in value.items():
|
|
101
|
+
_encode_deep_object_key(params, f"{key}[{k}]", v)
|
|
102
|
+
elif isinstance(value, list):
|
|
103
|
+
for i, v in enumerate(value):
|
|
104
|
+
_encode_deep_object_key(params, f"{key}[{i}]", v)
|
|
105
|
+
else:
|
|
106
|
+
params[key] = value
|
magic_hour/core/request.py
CHANGED
|
@@ -1,9 +1,12 @@
|
|
|
1
1
|
from typing import Any, Dict, Type, Union, Sequence, List
|
|
2
2
|
from urllib.parse import quote_plus
|
|
3
|
+
|
|
3
4
|
import httpx
|
|
4
5
|
from typing_extensions import TypedDict, Required, NotRequired
|
|
5
6
|
from pydantic import TypeAdapter, BaseModel
|
|
7
|
+
|
|
6
8
|
from .type_utils import NotGiven
|
|
9
|
+
from .query import QueryParams
|
|
7
10
|
|
|
8
11
|
"""
|
|
9
12
|
Request configuration and utility functions for handling HTTP requests.
|
|
@@ -11,11 +14,6 @@ This module provides type definitions and helper functions for building
|
|
|
11
14
|
and processing HTTP requests in a type-safe manner.
|
|
12
15
|
"""
|
|
13
16
|
|
|
14
|
-
# Type alias for query parameters that can handle both primitive data and sequences
|
|
15
|
-
QueryParams = Dict[
|
|
16
|
-
str, Union[httpx._types.PrimitiveData, Sequence[httpx._types.PrimitiveData]]
|
|
17
|
-
]
|
|
18
|
-
|
|
19
17
|
|
|
20
18
|
class RequestConfig(TypedDict):
|
|
21
19
|
"""
|
magic_hour/core/utils.py
CHANGED
|
@@ -21,7 +21,7 @@ def get_response_type(headers: httpx.Headers) -> Literal["json", "text", "binary
|
|
|
21
21
|
"""Check response type based on content type"""
|
|
22
22
|
content_type = headers.get("content-type")
|
|
23
23
|
|
|
24
|
-
if re.search("^application/(
|
|
24
|
+
if re.search("^application/(.+[+])?json", content_type):
|
|
25
25
|
return "json"
|
|
26
26
|
elif re.search("^text/(.+)", content_type):
|
|
27
27
|
return "text"
|
magic_hour/environment.py
CHANGED
|
@@ -40,7 +40,7 @@ class GetV1ImageProjectsIdResponse(pydantic.BaseModel):
|
|
|
40
40
|
alias="id",
|
|
41
41
|
)
|
|
42
42
|
"""
|
|
43
|
-
Unique ID of the image. This value can be used in the [get image project API](/api/
|
|
43
|
+
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
|
|
44
44
|
"""
|
|
45
45
|
image_count: int = pydantic.Field(
|
|
46
46
|
alias="image_count",
|
|
@@ -67,7 +67,7 @@ class GetV1VideoProjectsIdResponse(pydantic.BaseModel):
|
|
|
67
67
|
alias="id",
|
|
68
68
|
)
|
|
69
69
|
"""
|
|
70
|
-
Unique ID of the video. This value can be used in the [get video project API](/api/
|
|
70
|
+
Unique ID of the video. This value can be used in the [get video project API](https://docs.magichour.ai/api-reference/video-projects/get-video-details) to fetch additional details such as status
|
|
71
71
|
"""
|
|
72
72
|
name: typing.Optional[str] = pydantic.Field(
|
|
73
73
|
alias="name",
|
|
@@ -21,5 +21,5 @@ class PostV1AiClothesChangerResponse(pydantic.BaseModel):
|
|
|
21
21
|
alias="id",
|
|
22
22
|
)
|
|
23
23
|
"""
|
|
24
|
-
Unique ID of the image. This value can be used in the [get image project API](/api/
|
|
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
25
|
"""
|
|
@@ -21,5 +21,5 @@ class PostV1AiHeadshotGeneratorResponse(pydantic.BaseModel):
|
|
|
21
21
|
alias="id",
|
|
22
22
|
)
|
|
23
23
|
"""
|
|
24
|
-
Unique ID of the image. This value can be used in the [get image project API](/api/
|
|
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
25
|
"""
|
|
@@ -21,5 +21,5 @@ class PostV1AiImageGeneratorResponse(pydantic.BaseModel):
|
|
|
21
21
|
alias="id",
|
|
22
22
|
)
|
|
23
23
|
"""
|
|
24
|
-
Unique ID of the image. This value can be used in the [get image project API](/api/
|
|
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
25
|
"""
|
|
@@ -21,5 +21,5 @@ class PostV1AiImageUpscalerResponse(pydantic.BaseModel):
|
|
|
21
21
|
alias="id",
|
|
22
22
|
)
|
|
23
23
|
"""
|
|
24
|
-
Unique ID of the image. This value can be used in the [get image project API](/api/
|
|
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
25
|
"""
|
|
@@ -21,5 +21,5 @@ class PostV1AiPhotoEditorResponse(pydantic.BaseModel):
|
|
|
21
21
|
alias="id",
|
|
22
22
|
)
|
|
23
23
|
"""
|
|
24
|
-
Unique ID of the image. This value can be used in the [get image project API](/api/
|
|
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
25
|
"""
|
|
@@ -21,5 +21,5 @@ class PostV1AiQrCodeGeneratorResponse(pydantic.BaseModel):
|
|
|
21
21
|
alias="id",
|
|
22
22
|
)
|
|
23
23
|
"""
|
|
24
|
-
Unique ID of the image. This value can be used in the [get image project API](/api/
|
|
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
25
|
"""
|
|
@@ -21,5 +21,5 @@ class PostV1AnimationResponse(pydantic.BaseModel):
|
|
|
21
21
|
alias="id",
|
|
22
22
|
)
|
|
23
23
|
"""
|
|
24
|
-
Unique ID of the video. This value can be used in the [get video project API](/api/
|
|
24
|
+
Unique ID of the video. This value can be used in the [get video project API](https://docs.magichour.ai/api-reference/video-projects/get-video-details) to fetch additional details such as status
|
|
25
25
|
"""
|
|
@@ -21,5 +21,5 @@ class PostV1FaceSwapPhotoResponse(pydantic.BaseModel):
|
|
|
21
21
|
alias="id",
|
|
22
22
|
)
|
|
23
23
|
"""
|
|
24
|
-
Unique ID of the image. This value can be used in the [get image project API](/api/
|
|
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
25
|
"""
|
|
@@ -21,5 +21,5 @@ class PostV1FaceSwapResponse(pydantic.BaseModel):
|
|
|
21
21
|
alias="id",
|
|
22
22
|
)
|
|
23
23
|
"""
|
|
24
|
-
Unique ID of the image. This value can be used in the [get image project API](/api/
|
|
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
25
|
"""
|
|
@@ -21,5 +21,5 @@ class PostV1ImageBackgroundRemoverResponse(pydantic.BaseModel):
|
|
|
21
21
|
alias="id",
|
|
22
22
|
)
|
|
23
23
|
"""
|
|
24
|
-
Unique ID of the image. This value can be used in the [get image project API](/api/
|
|
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
25
|
"""
|
|
@@ -21,5 +21,5 @@ class PostV1ImageToVideoResponse(pydantic.BaseModel):
|
|
|
21
21
|
alias="id",
|
|
22
22
|
)
|
|
23
23
|
"""
|
|
24
|
-
Unique ID of the video. This value can be used in the [get video project API](/api/
|
|
24
|
+
Unique ID of the video. This value can be used in the [get video project API](https://docs.magichour.ai/api-reference/video-projects/get-video-details) to fetch additional details such as status
|
|
25
25
|
"""
|
|
@@ -21,5 +21,5 @@ class PostV1LipSyncResponse(pydantic.BaseModel):
|
|
|
21
21
|
alias="id",
|
|
22
22
|
)
|
|
23
23
|
"""
|
|
24
|
-
Unique ID of the video. This value can be used in the [get video project API](/api/
|
|
24
|
+
Unique ID of the video. This value can be used in the [get video project API](https://docs.magichour.ai/api-reference/video-projects/get-video-details) to fetch additional details such as status
|
|
25
25
|
"""
|
|
@@ -21,5 +21,5 @@ class PostV1TextToVideoResponse(pydantic.BaseModel):
|
|
|
21
21
|
alias="id",
|
|
22
22
|
)
|
|
23
23
|
"""
|
|
24
|
-
Unique ID of the video. This value can be used in the [get video project API](/api/
|
|
24
|
+
Unique ID of the video. This value can be used in the [get video project API](https://docs.magichour.ai/api-reference/video-projects/get-video-details) to fetch additional details such as status
|
|
25
25
|
"""
|
|
@@ -21,5 +21,5 @@ class PostV1VideoToVideoResponse(pydantic.BaseModel):
|
|
|
21
21
|
alias="id",
|
|
22
22
|
)
|
|
23
23
|
"""
|
|
24
|
-
Unique ID of the video. This value can be used in the [get video project API](/api/
|
|
24
|
+
Unique ID of the video. This value can be used in the [get video project API](https://docs.magichour.ai/api-reference/video-projects/get-video-details) to fetch additional details such as status
|
|
25
25
|
"""
|
|
@@ -9,7 +9,7 @@ class PostV1AiClothesChangerBodyAssets(typing_extensions.TypedDict):
|
|
|
9
9
|
|
|
10
10
|
garment_file_path: typing_extensions.Required[str]
|
|
11
11
|
"""
|
|
12
|
-
The image of the outfit. This value can be either the `file_path` field from the response of the [upload urls API](
|
|
12
|
+
The image of the outfit. 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
13
|
"""
|
|
14
14
|
|
|
15
15
|
garment_type: typing_extensions.Required[
|
|
@@ -18,7 +18,7 @@ class PostV1AiClothesChangerBodyAssets(typing_extensions.TypedDict):
|
|
|
18
18
|
|
|
19
19
|
person_file_path: typing_extensions.Required[str]
|
|
20
20
|
"""
|
|
21
|
-
The image with the person. This value can be either the `file_path` field from the response of the [upload urls API](
|
|
21
|
+
The image with the person. 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..
|
|
22
22
|
"""
|
|
23
23
|
|
|
24
24
|
|
|
@@ -9,7 +9,7 @@ class PostV1AiHeadshotGeneratorBodyAssets(typing_extensions.TypedDict):
|
|
|
9
9
|
|
|
10
10
|
image_file_path: typing_extensions.Required[str]
|
|
11
11
|
"""
|
|
12
|
-
The image used to generate the headshot. This image must contain one detectable face. This value can be either the `file_path` field from the response of the [upload urls API](
|
|
12
|
+
The image used to generate the headshot. This image must contain one detectable 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
13
|
"""
|
|
14
14
|
|
|
15
15
|
|
|
@@ -9,7 +9,7 @@ class PostV1AiImageUpscalerBodyAssets(typing_extensions.TypedDict):
|
|
|
9
9
|
|
|
10
10
|
image_file_path: typing_extensions.Required[str]
|
|
11
11
|
"""
|
|
12
|
-
The image to upscale. This value can be either the `file_path` field from the response of the [upload urls API](
|
|
12
|
+
The image to upscale. 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
13
|
"""
|
|
14
14
|
|
|
15
15
|
|
|
@@ -9,7 +9,7 @@ class PostV1AiPhotoEditorBodyAssets(typing_extensions.TypedDict):
|
|
|
9
9
|
|
|
10
10
|
image_file_path: typing_extensions.Required[str]
|
|
11
11
|
"""
|
|
12
|
-
The image used to generate the output. This value can be either the `file_path` field from the response of the [upload urls API](
|
|
12
|
+
The image used to generate the output. 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
13
|
"""
|
|
14
14
|
|
|
15
15
|
|
|
@@ -10,7 +10,7 @@ class PostV1AnimationBodyAssets(typing_extensions.TypedDict):
|
|
|
10
10
|
|
|
11
11
|
audio_file_path: typing_extensions.NotRequired[str]
|
|
12
12
|
"""
|
|
13
|
-
The path of the input audio. This field is required if `audio_source` is `file`. This value can be either the `file_path` field from the response of the [upload urls API](
|
|
13
|
+
The path of the input audio. This field is required if `audio_source` is `file`. 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
14
|
"""
|
|
15
15
|
|
|
16
16
|
audio_source: typing_extensions.Required[
|
|
@@ -22,7 +22,7 @@ class PostV1AnimationBodyAssets(typing_extensions.TypedDict):
|
|
|
22
22
|
|
|
23
23
|
image_file_path: typing_extensions.NotRequired[str]
|
|
24
24
|
"""
|
|
25
|
-
An initial image to use a the first frame of the video. This value can be either the `file_path` field from the response of the [upload urls API](
|
|
25
|
+
An initial image to use a the first frame of the video. 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.
|
|
26
26
|
"""
|
|
27
27
|
|
|
28
28
|
youtube_url: typing_extensions.NotRequired[str]
|
|
@@ -10,12 +10,12 @@ class PostV1FaceSwapBodyAssets(typing_extensions.TypedDict):
|
|
|
10
10
|
|
|
11
11
|
image_file_path: typing_extensions.Required[str]
|
|
12
12
|
"""
|
|
13
|
-
The path of the input image. This value can be either the `file_path` field from the response of the [upload urls API](
|
|
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.
|
|
14
14
|
"""
|
|
15
15
|
|
|
16
16
|
video_file_path: typing_extensions.NotRequired[str]
|
|
17
17
|
"""
|
|
18
|
-
The path of the input video. This field is required if `video_source` is `file`. This value can be either the `file_path` field from the response of the [upload urls API](
|
|
18
|
+
The path of the input video. This field is required if `video_source` is `file`. 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.
|
|
19
19
|
"""
|
|
20
20
|
|
|
21
21
|
video_source: typing_extensions.Required[
|
|
@@ -9,12 +9,12 @@ class PostV1FaceSwapPhotoBodyAssets(typing_extensions.TypedDict):
|
|
|
9
9
|
|
|
10
10
|
source_file_path: typing_extensions.Required[str]
|
|
11
11
|
"""
|
|
12
|
-
This is the image from which the face is extracted. This value can be either the `file_path` field from the response of the [upload urls API](
|
|
12
|
+
This is the image from which the face is extracted. 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
13
|
"""
|
|
14
14
|
|
|
15
15
|
target_file_path: typing_extensions.Required[str]
|
|
16
16
|
"""
|
|
17
|
-
This is the image where the face from the source image will be placed. This value can be either the `file_path` field from the response of the [upload urls API](
|
|
17
|
+
This is the image where the face from the source image will be placed. 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.
|
|
18
18
|
"""
|
|
19
19
|
|
|
20
20
|
|
|
@@ -9,7 +9,7 @@ class PostV1ImageBackgroundRemoverBodyAssets(typing_extensions.TypedDict):
|
|
|
9
9
|
|
|
10
10
|
image_file_path: typing_extensions.Required[str]
|
|
11
11
|
"""
|
|
12
|
-
The image used to generate the image. This value can be either the `file_path` field from the response of the [upload urls API](
|
|
12
|
+
The image used to generate the 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.
|
|
13
13
|
"""
|
|
14
14
|
|
|
15
15
|
|
|
@@ -9,7 +9,7 @@ class PostV1ImageToVideoBodyAssets(typing_extensions.TypedDict):
|
|
|
9
9
|
|
|
10
10
|
image_file_path: typing_extensions.Required[str]
|
|
11
11
|
"""
|
|
12
|
-
The path of the image file. This value can be either the `file_path` field from the response of the [upload urls API](
|
|
12
|
+
The path of the image file. 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
13
|
"""
|
|
14
14
|
|
|
15
15
|
|
|
@@ -10,12 +10,12 @@ class PostV1LipSyncBodyAssets(typing_extensions.TypedDict):
|
|
|
10
10
|
|
|
11
11
|
audio_file_path: typing_extensions.Required[str]
|
|
12
12
|
"""
|
|
13
|
-
The path of the audio file. This value can be either the `file_path` field from the response of the [upload urls API](
|
|
13
|
+
The path of the audio file. 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
14
|
"""
|
|
15
15
|
|
|
16
16
|
video_file_path: typing_extensions.NotRequired[str]
|
|
17
17
|
"""
|
|
18
|
-
The path of the input video. This field is required if `video_source` is `file`. This value can be either the `file_path` field from the response of the [upload urls API](
|
|
18
|
+
The path of the input video. This field is required if `video_source` is `file`. 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.
|
|
19
19
|
"""
|
|
20
20
|
|
|
21
21
|
video_source: typing_extensions.Required[
|
|
@@ -10,7 +10,7 @@ class PostV1VideoToVideoBodyAssets(typing_extensions.TypedDict):
|
|
|
10
10
|
|
|
11
11
|
video_file_path: typing_extensions.NotRequired[str]
|
|
12
12
|
"""
|
|
13
|
-
The path of the input video. This field is required if `video_source` is `file`. This value can be either the `file_path` field from the response of the [upload urls API](
|
|
13
|
+
The path of the input video. This field is required if `video_source` is `file`. 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
14
|
"""
|
|
15
15
|
|
|
16
16
|
video_source: typing_extensions.Required[
|
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
magic_hour/__init__.py,sha256=9mcpfN52bfc0cw9wEz7dXOVpOsUuGmVdqFQ79NdnGYU,203
|
|
2
|
-
magic_hour/client.py,sha256=
|
|
3
|
-
magic_hour/core/__init__.py,sha256=
|
|
2
|
+
magic_hour/client.py,sha256=PL9UGz8eA4fSqP-xuo4znQYO27rOyr8fSf2z7DA6yBY,2014
|
|
3
|
+
magic_hour/core/__init__.py,sha256=s2y_QWfn976ilhDlvKGz-QWhAYcRDzvtAYnLbMMOTEA,1167
|
|
4
4
|
magic_hour/core/api_error.py,sha256=K1d47qRbhLBNEaUVbs0NPgxee24X3qGZ37gBhleUzEE,1760
|
|
5
5
|
magic_hour/core/auth.py,sha256=NSjPcmTyHelRag9FqH1ufbchBWQgGDpH2P0akfppIPo,9130
|
|
6
6
|
magic_hour/core/base_client.py,sha256=H9FJtNvN3ZfjjnPq4t9HXgh0c1324x1RFtAHXWEnqWk,18846
|
|
7
7
|
magic_hour/core/binary_response.py,sha256=T-DATvb21P2ZRnYa4LlXmF77VfM8Tut2951QHEQct_U,681
|
|
8
|
-
magic_hour/core/
|
|
8
|
+
magic_hour/core/query.py,sha256=Z4NB5gSkJ8KMJU2vleHP_dx0NisP0v8S0em5XVlS_tE,4247
|
|
9
|
+
magic_hour/core/request.py,sha256=lyHrh2VWY238D7JPbgZJlodTqBlHSmQn4fBJiBfE1Es,5069
|
|
9
10
|
magic_hour/core/response.py,sha256=Sl7nPL2axmz7em_6d9TkFSnQQKUpalWaVWbPPWoXJgM,10180
|
|
10
11
|
magic_hour/core/type_utils.py,sha256=4bU9WXnMXJ6YTtuqOMiB8t6Xw0RlfVWJ-IDBONlqEtQ,461
|
|
11
|
-
magic_hour/core/utils.py,sha256=
|
|
12
|
-
magic_hour/environment.py,sha256=
|
|
12
|
+
magic_hour/core/utils.py,sha256=34SiC1vw2A0TkYHONgMA_d09soIIYiiBWRXCZGdwGIk,1669
|
|
13
|
+
magic_hour/environment.py,sha256=7sYhqvIiBoGQZQ_Q_OS09mpUx0fMGm1D1nv1azv65cI,167
|
|
13
14
|
magic_hour/resources/v1/__init__.py,sha256=Aj0sjVcoijjQyieNBxv2_uewPYC2vO2UG-ehoBgCz5E,86
|
|
14
15
|
magic_hour/resources/v1/ai_clothes_changer/README.md,sha256=KQTvbttct5GcdOJW3NG5gCsWF6G2qlwIoBjBd92TjUs,977
|
|
15
16
|
magic_hour/resources/v1/ai_clothes_changer/__init__.py,sha256=6W_Y2HxG2sDOBiJyzngK3Q2S3xfQgpK-j8xFRmBAhbQ,142
|
|
@@ -66,66 +67,66 @@ magic_hour/resources/v1/video_to_video/README.md,sha256=yzTvpH-7hwXiuwNDykzVIfzr
|
|
|
66
67
|
magic_hour/resources/v1/video_to_video/__init__.py,sha256=1SHaRLlsrlBkdxxKBYgdbHrGATlRvqlXc22RpjjHaOA,126
|
|
67
68
|
magic_hour/resources/v1/video_to_video/client.py,sha256=2ITdQuy2t8oxQCJ23YKqX_XSmQpoiJlivP6wo5qwDn8,8162
|
|
68
69
|
magic_hour/types/models/__init__.py,sha256=fNhJtvVAFiSKzXt57UnvNozv6QYWZURU36pWTVoZQ-M,2790
|
|
69
|
-
magic_hour/types/models/get_v1_image_projects_id_response.py,sha256=
|
|
70
|
+
magic_hour/types/models/get_v1_image_projects_id_response.py,sha256=5bLmMY2Hr83SIen1JR-tCX_IHBkAEvWAl519DrQ3x1A,2162
|
|
70
71
|
magic_hour/types/models/get_v1_image_projects_id_response_downloads_item.py,sha256=ianjZWSKWOIRWAtakZKO_nn9YZXUuhVRatzXJnzQwKg,412
|
|
71
72
|
magic_hour/types/models/get_v1_image_projects_id_response_error.py,sha256=nsgmUJ4wxhgRaBuOLSGw6c7AZcj7QZ8EUbuyR1Y0rZg,576
|
|
72
|
-
magic_hour/types/models/get_v1_video_projects_id_response.py,sha256=
|
|
73
|
+
magic_hour/types/models/get_v1_video_projects_id_response.py,sha256=iSnHXHEjLRUBey6rK_cQfI7dJhuuVOXeDJ1WWUpQEO4,3463
|
|
73
74
|
magic_hour/types/models/get_v1_video_projects_id_response_download.py,sha256=2UMuKoaYw75FI2Fy0vxiOmhCZTyqp8CqCnzrRoOmCuM,452
|
|
74
75
|
magic_hour/types/models/get_v1_video_projects_id_response_downloads_item.py,sha256=u7yc9t6ezffB-QY95LrmE5NULdsQr0LqrJHGf3v8FYU,412
|
|
75
76
|
magic_hour/types/models/get_v1_video_projects_id_response_error.py,sha256=5kkCjHrcT2WkyEyGkbkhhbfOTRFR6kmxxVG1OvSVzh0,576
|
|
76
|
-
magic_hour/types/models/post_v1_ai_clothes_changer_response.py,sha256=
|
|
77
|
-
magic_hour/types/models/post_v1_ai_headshot_generator_response.py,sha256=
|
|
78
|
-
magic_hour/types/models/post_v1_ai_image_generator_response.py,sha256=
|
|
79
|
-
magic_hour/types/models/post_v1_ai_image_upscaler_response.py,sha256=
|
|
80
|
-
magic_hour/types/models/post_v1_ai_photo_editor_response.py,sha256=
|
|
81
|
-
magic_hour/types/models/post_v1_ai_qr_code_generator_response.py,sha256=
|
|
82
|
-
magic_hour/types/models/post_v1_animation_response.py,sha256=
|
|
83
|
-
magic_hour/types/models/post_v1_face_swap_photo_response.py,sha256=
|
|
84
|
-
magic_hour/types/models/post_v1_face_swap_response.py,sha256=
|
|
77
|
+
magic_hour/types/models/post_v1_ai_clothes_changer_response.py,sha256=V_rk2UV7b06knrVik-vvAQdMCv0uz_P6V7aV5FmMRZQ,623
|
|
78
|
+
magic_hour/types/models/post_v1_ai_headshot_generator_response.py,sha256=gs5Fw7EL3G-6pjTIq7nz_rUKAPjlQT8Yh1O4Pl2liSE,626
|
|
79
|
+
magic_hour/types/models/post_v1_ai_image_generator_response.py,sha256=07lgeQTwvtmst3QWY2B1HXZ4reaNY7lGbvFAJzxjZR0,623
|
|
80
|
+
magic_hour/types/models/post_v1_ai_image_upscaler_response.py,sha256=L4BbZeaoiWm3tIkr9Q_Xtng0cfOmhxIUvMHS5cHqzTE,622
|
|
81
|
+
magic_hour/types/models/post_v1_ai_photo_editor_response.py,sha256=F508dGQqh4-EKhKOre5gi4VFVYWJtVs-MIKj7OlEBXw,620
|
|
82
|
+
magic_hour/types/models/post_v1_ai_qr_code_generator_response.py,sha256=XIgb2ctWKIK_sMctwt1Dmm6HyEltTlGuI-a2wazXeIU,624
|
|
83
|
+
magic_hour/types/models/post_v1_animation_response.py,sha256=Hvz5a8MDAUjCA_8Zf_db1H7shO364tAOBayDHvGEoeQ,731
|
|
84
|
+
magic_hour/types/models/post_v1_face_swap_photo_response.py,sha256=VZYNPAZUTYOnHROI50Q_nojWPcvYdb-b-IQw2uWgtbw,620
|
|
85
|
+
magic_hour/types/models/post_v1_face_swap_response.py,sha256=h3TtemKBbbuXGwKrGj8ced10jkrFrAoMxTWAaUF6_Vg,730
|
|
85
86
|
magic_hour/types/models/post_v1_files_upload_urls_response.py,sha256=dPHBPnCyigVy2GJptnFazGUgweE1CUzQsSXYrvNNOaE,452
|
|
86
87
|
magic_hour/types/models/post_v1_files_upload_urls_response_items_item.py,sha256=ABemYYr4T6GOocxngMXq33gfM7oW_r6fqpPQypyNnNU,795
|
|
87
|
-
magic_hour/types/models/post_v1_image_background_remover_response.py,sha256=
|
|
88
|
-
magic_hour/types/models/post_v1_image_to_video_response.py,sha256=
|
|
89
|
-
magic_hour/types/models/post_v1_lip_sync_response.py,sha256=
|
|
90
|
-
magic_hour/types/models/post_v1_text_to_video_response.py,sha256=
|
|
91
|
-
magic_hour/types/models/post_v1_video_to_video_response.py,sha256=
|
|
88
|
+
magic_hour/types/models/post_v1_image_background_remover_response.py,sha256=A2RPPB0b2PSmdvhoc1W9zuLMRi_O4nbA1_kllRdxFF8,629
|
|
89
|
+
magic_hour/types/models/post_v1_image_to_video_response.py,sha256=IZ-itRZq-5y4wdn1K7j_DzMzRgcLP5V9GT7UrApUias,734
|
|
90
|
+
magic_hour/types/models/post_v1_lip_sync_response.py,sha256=2dFcwP4NhTbkHAhgC1zbch2dImE2WBfM6aPkNOeTdwI,729
|
|
91
|
+
magic_hour/types/models/post_v1_text_to_video_response.py,sha256=j--7szYxsDP_MDHTGUvo5WVzOqw0zceW3WKO3LPuQfE,733
|
|
92
|
+
magic_hour/types/models/post_v1_video_to_video_response.py,sha256=X1SwCuS4vdLVEz_5fkWG1ujupsGVmSyaVSN4Kpnd928,734
|
|
92
93
|
magic_hour/types/params/__init__.py,sha256=Jhjcz5AamCr5Uv5YK1PStOOsYlFTwzzhd1rPvSAcmz8,7225
|
|
93
94
|
magic_hour/types/params/post_v1_ai_clothes_changer_body.py,sha256=Bbj8EeRMWCnogOhkJ7PiKGlwa6_Jqde1uzU5HTgJ6X4,988
|
|
94
|
-
magic_hour/types/params/post_v1_ai_clothes_changer_body_assets.py,sha256=
|
|
95
|
+
magic_hour/types/params/post_v1_ai_clothes_changer_body_assets.py,sha256=wpQVW5jflf3ID2TViBHY9RkQ9PCZa9ClKz-UvINL_Ag,1503
|
|
95
96
|
magic_hour/types/params/post_v1_ai_headshot_generator_body.py,sha256=-HDQNE7hg45EPQVBYs-144l5pEjhHZeXlHSf2g7wlYY,1014
|
|
96
|
-
magic_hour/types/params/post_v1_ai_headshot_generator_body_assets.py,sha256=
|
|
97
|
+
magic_hour/types/params/post_v1_ai_headshot_generator_body_assets.py,sha256=k_ADY5wlQn0YNoFXRd0hojG7SE7Tyapk7R5S3optDqY,902
|
|
97
98
|
magic_hour/types/params/post_v1_ai_image_generator_body.py,sha256=R1Soif6cetbQQDAzEBjhSOjYb0InZyBYpg8xJ8yGAeY,1370
|
|
98
99
|
magic_hour/types/params/post_v1_ai_image_generator_body_style.py,sha256=vU83w7LRyQDXFgsS9-Q7W1HZ7Gz9pQNYFxAQCVwe-KY,613
|
|
99
100
|
magic_hour/types/params/post_v1_ai_image_upscaler_body.py,sha256=KohjidTxMB4_JBzO4QAicfkNX7iv6zi7qqr4KLRmfcE,1483
|
|
100
|
-
magic_hour/types/params/post_v1_ai_image_upscaler_body_assets.py,sha256=
|
|
101
|
+
magic_hour/types/params/post_v1_ai_image_upscaler_body_assets.py,sha256=kkPzpDWXxO9E3jB_DOJyHqAZvYLZUQsrJ4DVeEa2Ypk,821
|
|
101
102
|
magic_hour/types/params/post_v1_ai_image_upscaler_body_style.py,sha256=RgQT3tigTxb5-QDLbpIE_nzVdUHdHuqv_eUhKVuyY5g,985
|
|
102
103
|
magic_hour/types/params/post_v1_ai_photo_editor_body.py,sha256=ZccSuSVOmtH-E-r6kIjFFk0xbcNlEfBafzuDyS9CuX4,1912
|
|
103
|
-
magic_hour/types/params/post_v1_ai_photo_editor_body_assets.py,sha256=
|
|
104
|
+
magic_hour/types/params/post_v1_ai_photo_editor_body_assets.py,sha256=DnJddrUK-RZ0Av538L9TpNYGQcawBfg4JY42ADb4HpY,835
|
|
104
105
|
magic_hour/types/params/post_v1_ai_photo_editor_body_style.py,sha256=d_BCTM1MEHP7mL6jWIs5LOYacTOvu1ftzusmGi9fvJk,2065
|
|
105
106
|
magic_hour/types/params/post_v1_ai_qr_code_generator_body.py,sha256=J0IT4WRRIBGZjfu_eCvq1UenT0irY1Cf5nxdl9K9TOE,1091
|
|
106
107
|
magic_hour/types/params/post_v1_ai_qr_code_generator_body_style.py,sha256=c523YFzkZb0nnzFzGbmX1YPuXuT_PEs7mOW_unLFOFw,831
|
|
107
108
|
magic_hour/types/params/post_v1_animation_body.py,sha256=AmO2QsJ09Q5MyjwdZTsasflibsQyYEUI7S1R028cToQ,2193
|
|
108
|
-
magic_hour/types/params/post_v1_animation_body_assets.py,sha256=
|
|
109
|
+
magic_hour/types/params/post_v1_animation_body_assets.py,sha256=rDvL-1M37L80pd2XOhMFTRnzSKdnNy2rlcwbzatt8qw,1959
|
|
109
110
|
magic_hour/types/params/post_v1_animation_body_style.py,sha256=oBy3jEiP7ptqmoMxr9OUTaWyt_4MrBjRO46034FqAB4,8039
|
|
110
111
|
magic_hour/types/params/post_v1_face_swap_body.py,sha256=Hlvv6OFy9UuhaUVX-887dJx3uIKwS3MLphZEhvgLFtU,1995
|
|
111
|
-
magic_hour/types/params/post_v1_face_swap_body_assets.py,sha256=
|
|
112
|
+
magic_hour/types/params/post_v1_face_swap_body_assets.py,sha256=B-OmdG2CuQ3He5053McQodfCOoLg70gXJkjtBt96rM8,1882
|
|
112
113
|
magic_hour/types/params/post_v1_face_swap_photo_body.py,sha256=EEvxhjVZdlKMlCbdhDo6DAXLIRnPR3VwdEioXBWXfYo,961
|
|
113
|
-
magic_hour/types/params/post_v1_face_swap_photo_body_assets.py,sha256=
|
|
114
|
+
magic_hour/types/params/post_v1_face_swap_photo_body_assets.py,sha256=9ewZtmUDR-KhqSjgevy40tmlyWfgGln9vCHdgSGGUFU,1273
|
|
114
115
|
magic_hour/types/params/post_v1_files_upload_urls_body.py,sha256=njjElsiBXMs_qVij4hx-YdguMFZQqaVqhtYGOr2hAlo,799
|
|
115
116
|
magic_hour/types/params/post_v1_files_upload_urls_body_items_item.py,sha256=bKZAxXRC_ShAZJJe8iF8Y7ixWt7KSWD3G53vIt2qCQ0,964
|
|
116
117
|
magic_hour/types/params/post_v1_image_background_remover_body.py,sha256=NGJj0iwpm-zD7iAV5jkuroAHtD9PtcHKGsFykTzQ__Y,1045
|
|
117
|
-
magic_hour/types/params/post_v1_image_background_remover_body_assets.py,sha256=
|
|
118
|
+
magic_hour/types/params/post_v1_image_background_remover_body_assets.py,sha256=uQQY5DZwIHMNqHfgt_l20eLqp3mJ07IqW-Wn6DPqbZA,867
|
|
118
119
|
magic_hour/types/params/post_v1_image_to_video_body.py,sha256=r7xgMOKA8mKS_btf0glgEH4bkfsUwhXLBhqhJ6tTafM,2014
|
|
119
|
-
magic_hour/types/params/post_v1_image_to_video_body_assets.py,sha256=
|
|
120
|
+
magic_hour/types/params/post_v1_image_to_video_body_assets.py,sha256=ZD3Jf1kydjHDsWLsaYYeBo4AaX4kUmdFLMgDxoKjSsk,824
|
|
120
121
|
magic_hour/types/params/post_v1_image_to_video_body_style.py,sha256=V2gCgFwFVlDfM_mjYNVrBYDw2wuYf7FNqS80XOWDcfw,952
|
|
121
122
|
magic_hour/types/params/post_v1_lip_sync_body.py,sha256=9X-gk-hLBx8eXXTE4Rgo1EPTDwSOC5FQzBdw-rIFFm8,2430
|
|
122
|
-
magic_hour/types/params/post_v1_lip_sync_body_assets.py,sha256=
|
|
123
|
+
magic_hour/types/params/post_v1_lip_sync_body_assets.py,sha256=GqygQRU02ldsT9qwZhdfTvqd1FOJCWb1Nb6Eoddzz60,1877
|
|
123
124
|
magic_hour/types/params/post_v1_text_to_video_body.py,sha256=q9aFGvmh6xEu_1quAB1O5qqvn0Vt9dXt_7vxgxDqBkI,1418
|
|
124
125
|
magic_hour/types/params/post_v1_text_to_video_body_style.py,sha256=8-zyz32Gz3qkeuL4y-ZWxdx-fktecKoOKtkqQRoLDMY,593
|
|
125
126
|
magic_hour/types/params/post_v1_video_to_video_body.py,sha256=dbazkWaGco73sSirtD-Q6vnLzF4BZa4Od87UTih1_-o,2914
|
|
126
|
-
magic_hour/types/params/post_v1_video_to_video_body_assets.py,sha256=
|
|
127
|
+
magic_hour/types/params/post_v1_video_to_video_body_assets.py,sha256=k_CmCxlLf1m5wCswW2exjOxMiqMeD-nqvMLwIzrb97k,1525
|
|
127
128
|
magic_hour/types/params/post_v1_video_to_video_body_style.py,sha256=RQWr8VJqipM4YmNwGCQXWf7XT7O8Y2hgqxRRH1Vh7Cs,5457
|
|
128
|
-
magic_hour-0.9.
|
|
129
|
-
magic_hour-0.9.
|
|
130
|
-
magic_hour-0.9.
|
|
131
|
-
magic_hour-0.9.
|
|
129
|
+
magic_hour-0.9.4.dist-info/LICENSE,sha256=F3fxj7JXPgB2K0uj8YXRsVss4u-Dgt_-U3V4VXsivNI,1070
|
|
130
|
+
magic_hour-0.9.4.dist-info/METADATA,sha256=AAZJVakiHucZr2Qwg9yq_DLdjewa56MnUFMiLn4ssxw,4654
|
|
131
|
+
magic_hour-0.9.4.dist-info/WHEEL,sha256=Nq82e9rUAnEjt98J6MlVmMCZb-t9cYE2Ir1kpBmnWfs,88
|
|
132
|
+
magic_hour-0.9.4.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|