magic_hour 0.14.0__tar.gz → 0.15.0__tar.gz

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.

Files changed (146) hide show
  1. {magic_hour-0.14.0 → magic_hour-0.15.0}/PKG-INFO +1 -1
  2. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/environment.py +1 -1
  3. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/resources/v1/face_swap/client.py +52 -16
  4. magic_hour-0.15.0/magic_hour/types/params/v1_face_swap_create_body.py +82 -0
  5. {magic_hour-0.14.0 → magic_hour-0.15.0}/pyproject.toml +1 -1
  6. magic_hour-0.14.0/magic_hour/types/params/v1_face_swap_create_body.py +0 -72
  7. {magic_hour-0.14.0 → magic_hour-0.15.0}/LICENSE +0 -0
  8. {magic_hour-0.14.0 → magic_hour-0.15.0}/README.md +0 -0
  9. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/__init__.py +0 -0
  10. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/client.py +0 -0
  11. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/core/__init__.py +0 -0
  12. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/core/api_error.py +0 -0
  13. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/core/auth.py +0 -0
  14. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/core/base_client.py +0 -0
  15. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/core/binary_response.py +0 -0
  16. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/core/query.py +0 -0
  17. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/core/request.py +0 -0
  18. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/core/response.py +0 -0
  19. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/core/type_utils.py +0 -0
  20. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/core/utils.py +0 -0
  21. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/resources/v1/__init__.py +0 -0
  22. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/resources/v1/ai_clothes_changer/README.md +0 -0
  23. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/resources/v1/ai_clothes_changer/__init__.py +0 -0
  24. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/resources/v1/ai_clothes_changer/client.py +0 -0
  25. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/resources/v1/ai_headshot_generator/README.md +0 -0
  26. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/resources/v1/ai_headshot_generator/__init__.py +0 -0
  27. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/resources/v1/ai_headshot_generator/client.py +0 -0
  28. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/resources/v1/ai_image_generator/README.md +0 -0
  29. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/resources/v1/ai_image_generator/__init__.py +0 -0
  30. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/resources/v1/ai_image_generator/client.py +0 -0
  31. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/resources/v1/ai_image_upscaler/README.md +0 -0
  32. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/resources/v1/ai_image_upscaler/__init__.py +0 -0
  33. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/resources/v1/ai_image_upscaler/client.py +0 -0
  34. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/resources/v1/ai_meme_generator/README.md +0 -0
  35. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/resources/v1/ai_meme_generator/__init__.py +0 -0
  36. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/resources/v1/ai_meme_generator/client.py +0 -0
  37. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/resources/v1/ai_photo_editor/README.md +0 -0
  38. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/resources/v1/ai_photo_editor/__init__.py +0 -0
  39. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/resources/v1/ai_photo_editor/client.py +0 -0
  40. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/resources/v1/ai_qr_code_generator/README.md +0 -0
  41. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/resources/v1/ai_qr_code_generator/__init__.py +0 -0
  42. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/resources/v1/ai_qr_code_generator/client.py +0 -0
  43. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/resources/v1/ai_talking_photo/README.md +0 -0
  44. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/resources/v1/ai_talking_photo/__init__.py +0 -0
  45. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/resources/v1/ai_talking_photo/client.py +0 -0
  46. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/resources/v1/animation/README.md +0 -0
  47. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/resources/v1/animation/__init__.py +0 -0
  48. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/resources/v1/animation/client.py +0 -0
  49. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/resources/v1/client.py +0 -0
  50. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/resources/v1/face_swap/README.md +4 -4
  51. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/resources/v1/face_swap/__init__.py +0 -0
  52. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/resources/v1/face_swap_photo/README.md +0 -0
  53. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/resources/v1/face_swap_photo/__init__.py +0 -0
  54. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/resources/v1/face_swap_photo/client.py +0 -0
  55. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/resources/v1/files/__init__.py +0 -0
  56. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/resources/v1/files/client.py +0 -0
  57. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/resources/v1/files/upload_urls/README.md +0 -0
  58. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/resources/v1/files/upload_urls/__init__.py +0 -0
  59. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/resources/v1/files/upload_urls/client.py +0 -0
  60. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/resources/v1/image_background_remover/README.md +0 -0
  61. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/resources/v1/image_background_remover/__init__.py +0 -0
  62. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/resources/v1/image_background_remover/client.py +0 -0
  63. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/resources/v1/image_projects/README.md +0 -0
  64. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/resources/v1/image_projects/__init__.py +0 -0
  65. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/resources/v1/image_projects/client.py +0 -0
  66. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/resources/v1/image_to_video/README.md +0 -0
  67. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/resources/v1/image_to_video/__init__.py +0 -0
  68. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/resources/v1/image_to_video/client.py +0 -0
  69. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/resources/v1/lip_sync/README.md +0 -0
  70. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/resources/v1/lip_sync/__init__.py +0 -0
  71. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/resources/v1/lip_sync/client.py +0 -0
  72. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/resources/v1/text_to_video/README.md +0 -0
  73. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/resources/v1/text_to_video/__init__.py +0 -0
  74. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/resources/v1/text_to_video/client.py +0 -0
  75. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/resources/v1/video_projects/README.md +0 -0
  76. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/resources/v1/video_projects/__init__.py +0 -0
  77. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/resources/v1/video_projects/client.py +0 -0
  78. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/resources/v1/video_to_video/README.md +0 -0
  79. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/resources/v1/video_to_video/__init__.py +0 -0
  80. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/resources/v1/video_to_video/client.py +0 -0
  81. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/types/models/__init__.py +0 -0
  82. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/types/models/v1_ai_clothes_changer_create_response.py +0 -0
  83. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/types/models/v1_ai_headshot_generator_create_response.py +0 -0
  84. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/types/models/v1_ai_image_generator_create_response.py +0 -0
  85. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/types/models/v1_ai_image_upscaler_create_response.py +0 -0
  86. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/types/models/v1_ai_meme_generator_create_response.py +0 -0
  87. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/types/models/v1_ai_photo_editor_create_response.py +0 -0
  88. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/types/models/v1_ai_qr_code_generator_create_response.py +0 -0
  89. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/types/models/v1_ai_talking_photo_create_response.py +0 -0
  90. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/types/models/v1_animation_create_response.py +0 -0
  91. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/types/models/v1_face_swap_create_response.py +0 -0
  92. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/types/models/v1_face_swap_photo_create_response.py +0 -0
  93. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/types/models/v1_files_upload_urls_create_response.py +0 -0
  94. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/types/models/v1_files_upload_urls_create_response_items_item.py +0 -0
  95. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/types/models/v1_image_background_remover_create_response.py +0 -0
  96. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/types/models/v1_image_projects_get_response.py +0 -0
  97. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/types/models/v1_image_projects_get_response_downloads_item.py +0 -0
  98. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/types/models/v1_image_projects_get_response_error.py +0 -0
  99. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/types/models/v1_image_to_video_create_response.py +0 -0
  100. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/types/models/v1_lip_sync_create_response.py +0 -0
  101. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/types/models/v1_text_to_video_create_response.py +0 -0
  102. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/types/models/v1_video_projects_get_response.py +0 -0
  103. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/types/models/v1_video_projects_get_response_download.py +0 -0
  104. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/types/models/v1_video_projects_get_response_downloads_item.py +0 -0
  105. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/types/models/v1_video_projects_get_response_error.py +0 -0
  106. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/types/models/v1_video_to_video_create_response.py +0 -0
  107. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/types/params/__init__.py +0 -0
  108. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/types/params/v1_ai_clothes_changer_create_body.py +0 -0
  109. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/types/params/v1_ai_clothes_changer_create_body_assets.py +0 -0
  110. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/types/params/v1_ai_headshot_generator_create_body.py +0 -0
  111. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/types/params/v1_ai_headshot_generator_create_body_assets.py +0 -0
  112. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/types/params/v1_ai_headshot_generator_create_body_style.py +0 -0
  113. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/types/params/v1_ai_image_generator_create_body.py +0 -0
  114. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/types/params/v1_ai_image_generator_create_body_style.py +0 -0
  115. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/types/params/v1_ai_image_upscaler_create_body.py +0 -0
  116. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/types/params/v1_ai_image_upscaler_create_body_assets.py +0 -0
  117. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/types/params/v1_ai_image_upscaler_create_body_style.py +0 -0
  118. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/types/params/v1_ai_meme_generator_create_body.py +0 -0
  119. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/types/params/v1_ai_meme_generator_create_body_style.py +0 -0
  120. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/types/params/v1_ai_photo_editor_create_body.py +0 -0
  121. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/types/params/v1_ai_photo_editor_create_body_assets.py +0 -0
  122. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/types/params/v1_ai_photo_editor_create_body_style.py +0 -0
  123. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/types/params/v1_ai_qr_code_generator_create_body.py +0 -0
  124. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/types/params/v1_ai_qr_code_generator_create_body_style.py +0 -0
  125. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/types/params/v1_ai_talking_photo_create_body.py +0 -0
  126. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/types/params/v1_ai_talking_photo_create_body_assets.py +0 -0
  127. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/types/params/v1_animation_create_body.py +0 -0
  128. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/types/params/v1_animation_create_body_assets.py +0 -0
  129. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/types/params/v1_animation_create_body_style.py +0 -0
  130. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/types/params/v1_face_swap_create_body_assets.py +0 -0
  131. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/types/params/v1_face_swap_photo_create_body.py +0 -0
  132. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/types/params/v1_face_swap_photo_create_body_assets.py +0 -0
  133. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/types/params/v1_files_upload_urls_create_body.py +0 -0
  134. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/types/params/v1_files_upload_urls_create_body_items_item.py +0 -0
  135. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/types/params/v1_image_background_remover_create_body.py +0 -0
  136. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/types/params/v1_image_background_remover_create_body_assets.py +0 -0
  137. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/types/params/v1_image_to_video_create_body.py +0 -0
  138. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/types/params/v1_image_to_video_create_body_assets.py +0 -0
  139. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/types/params/v1_image_to_video_create_body_style.py +0 -0
  140. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/types/params/v1_lip_sync_create_body.py +0 -0
  141. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/types/params/v1_lip_sync_create_body_assets.py +0 -0
  142. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/types/params/v1_text_to_video_create_body.py +0 -0
  143. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/types/params/v1_text_to_video_create_body_style.py +0 -0
  144. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/types/params/v1_video_to_video_create_body.py +0 -0
  145. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/types/params/v1_video_to_video_create_body_assets.py +0 -0
  146. {magic_hour-0.14.0 → magic_hour-0.15.0}/magic_hour/types/params/v1_video_to_video_create_body_style.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: magic_hour
3
- Version: 0.14.0
3
+ Version: 0.15.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
@@ -5,4 +5,4 @@ class Environment(enum.Enum):
5
5
  """Pre-defined base URLs for the API"""
6
6
 
7
7
  ENVIRONMENT = "https://api.magichour.ai"
8
- MOCK_SERVER = "https://api.sideko.dev/v1/mock/magichour/magic-hour/0.14.0"
8
+ MOCK_SERVER = "https://api.sideko.dev/v1/mock/magichour/magic-hour/0.15.0"
@@ -20,12 +20,16 @@ class FaceSwapClient:
20
20
  *,
21
21
  assets: params.V1FaceSwapCreateBodyAssets,
22
22
  end_seconds: float,
23
- height: int,
24
23
  start_seconds: float,
25
- width: int,
24
+ height: typing.Union[
25
+ typing.Optional[int], type_utils.NotGiven
26
+ ] = type_utils.NOT_GIVEN,
26
27
  name: typing.Union[
27
28
  typing.Optional[str], type_utils.NotGiven
28
29
  ] = type_utils.NOT_GIVEN,
30
+ width: typing.Union[
31
+ typing.Optional[int], type_utils.NotGiven
32
+ ] = type_utils.NOT_GIVEN,
29
33
  request_options: typing.Optional[RequestOptions] = None,
30
34
  ) -> models.V1FaceSwapCreateResponse:
31
35
  """
@@ -39,12 +43,26 @@ class FaceSwapClient:
39
43
  POST /v1/face-swap
40
44
 
41
45
  Args:
46
+ height: Used to determine the dimensions of the output video.
47
+
48
+ * 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.
49
+ * If both height and width are omitted, the video will be resized according to your subscription's maximum resolution, while preserving aspect ratio.
50
+
51
+ Note: if the video's original resolution is less than the maximum, the video will not be resized.
52
+
53
+ See our [pricing page](https://magichour.ai/pricing) for more details.
42
54
  name: The name of video
55
+ width: Used to determine the dimensions of the output video.
56
+
57
+ * If width is provided, height 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.
58
+ * If both height and width are omitted, the video will be resized according to your subscription's maximum resolution, while preserving aspect ratio.
59
+
60
+ Note: if the video's original resolution is less than the maximum, the video will not be resized.
61
+
62
+ See our [pricing page](https://magichour.ai/pricing) for more details.
43
63
  assets: Provide the assets for face swap. For video, The `video_source` field determines whether `video_file_path` or `youtube_url` field is used
44
64
  end_seconds: The end time of the input video in seconds
45
- height: The height of the final output video. The maximum height depends on your subscription. Please refer to our [pricing page](https://magichour.ai/pricing) for more details
46
65
  start_seconds: The start time of the input video in seconds
47
- width: The width of the final output video. The maximum width depends on your subscription. Please refer to our [pricing page](https://magichour.ai/pricing) for more details
48
66
  request_options: Additional options to customize the HTTP request
49
67
 
50
68
  Returns:
@@ -63,21 +81,21 @@ class FaceSwapClient:
63
81
  "video_source": "file",
64
82
  },
65
83
  end_seconds=15.0,
66
- height=960,
67
84
  start_seconds=0.0,
68
- width=512,
85
+ height=960,
69
86
  name="Face Swap video",
87
+ width=512,
70
88
  )
71
89
  ```
72
90
  """
73
91
  _json = to_encodable(
74
92
  item={
93
+ "height": height,
75
94
  "name": name,
95
+ "width": width,
76
96
  "assets": assets,
77
97
  "end_seconds": end_seconds,
78
- "height": height,
79
98
  "start_seconds": start_seconds,
80
- "width": width,
81
99
  },
82
100
  dump_with=params._SerializerV1FaceSwapCreateBody,
83
101
  )
@@ -100,12 +118,16 @@ class AsyncFaceSwapClient:
100
118
  *,
101
119
  assets: params.V1FaceSwapCreateBodyAssets,
102
120
  end_seconds: float,
103
- height: int,
104
121
  start_seconds: float,
105
- width: int,
122
+ height: typing.Union[
123
+ typing.Optional[int], type_utils.NotGiven
124
+ ] = type_utils.NOT_GIVEN,
106
125
  name: typing.Union[
107
126
  typing.Optional[str], type_utils.NotGiven
108
127
  ] = type_utils.NOT_GIVEN,
128
+ width: typing.Union[
129
+ typing.Optional[int], type_utils.NotGiven
130
+ ] = type_utils.NOT_GIVEN,
109
131
  request_options: typing.Optional[RequestOptions] = None,
110
132
  ) -> models.V1FaceSwapCreateResponse:
111
133
  """
@@ -119,12 +141,26 @@ class AsyncFaceSwapClient:
119
141
  POST /v1/face-swap
120
142
 
121
143
  Args:
144
+ height: Used to determine the dimensions of the output video.
145
+
146
+ * 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.
147
+ * If both height and width are omitted, the video will be resized according to your subscription's maximum resolution, while preserving aspect ratio.
148
+
149
+ Note: if the video's original resolution is less than the maximum, the video will not be resized.
150
+
151
+ See our [pricing page](https://magichour.ai/pricing) for more details.
122
152
  name: The name of video
153
+ width: Used to determine the dimensions of the output video.
154
+
155
+ * If width is provided, height 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.
156
+ * If both height and width are omitted, the video will be resized according to your subscription's maximum resolution, while preserving aspect ratio.
157
+
158
+ Note: if the video's original resolution is less than the maximum, the video will not be resized.
159
+
160
+ See our [pricing page](https://magichour.ai/pricing) for more details.
123
161
  assets: Provide the assets for face swap. For video, The `video_source` field determines whether `video_file_path` or `youtube_url` field is used
124
162
  end_seconds: The end time of the input video in seconds
125
- height: The height of the final output video. The maximum height depends on your subscription. Please refer to our [pricing page](https://magichour.ai/pricing) for more details
126
163
  start_seconds: The start time of the input video in seconds
127
- width: The width of the final output video. The maximum width depends on your subscription. Please refer to our [pricing page](https://magichour.ai/pricing) for more details
128
164
  request_options: Additional options to customize the HTTP request
129
165
 
130
166
  Returns:
@@ -143,21 +179,21 @@ class AsyncFaceSwapClient:
143
179
  "video_source": "file",
144
180
  },
145
181
  end_seconds=15.0,
146
- height=960,
147
182
  start_seconds=0.0,
148
- width=512,
183
+ height=960,
149
184
  name="Face Swap video",
185
+ width=512,
150
186
  )
151
187
  ```
152
188
  """
153
189
  _json = to_encodable(
154
190
  item={
191
+ "height": height,
155
192
  "name": name,
193
+ "width": width,
156
194
  "assets": assets,
157
195
  "end_seconds": end_seconds,
158
- "height": height,
159
196
  "start_seconds": start_seconds,
160
- "width": width,
161
197
  },
162
198
  dump_with=params._SerializerV1FaceSwapCreateBody,
163
199
  )
@@ -0,0 +1,82 @@
1
+ import pydantic
2
+ import typing
3
+ import typing_extensions
4
+
5
+ from .v1_face_swap_create_body_assets import (
6
+ V1FaceSwapCreateBodyAssets,
7
+ _SerializerV1FaceSwapCreateBodyAssets,
8
+ )
9
+
10
+
11
+ class V1FaceSwapCreateBody(typing_extensions.TypedDict):
12
+ """
13
+ V1FaceSwapCreateBody
14
+ """
15
+
16
+ assets: typing_extensions.Required[V1FaceSwapCreateBodyAssets]
17
+ """
18
+ Provide the assets for face swap. For video, The `video_source` field determines whether `video_file_path` or `youtube_url` field is used
19
+ """
20
+
21
+ end_seconds: typing_extensions.Required[float]
22
+ """
23
+ The end time of the input video in seconds
24
+ """
25
+
26
+ height: typing_extensions.NotRequired[int]
27
+ """
28
+ Used to determine the dimensions of the output video.
29
+
30
+ * 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.
31
+ * If both height and width are omitted, the video will be resized according to your subscription's maximum resolution, while preserving aspect ratio.
32
+
33
+ Note: if the video's original resolution is less than the maximum, the video will not be resized.
34
+
35
+ See our [pricing page](https://magichour.ai/pricing) for more details.
36
+ """
37
+
38
+ name: typing_extensions.NotRequired[str]
39
+ """
40
+ The name of video
41
+ """
42
+
43
+ start_seconds: typing_extensions.Required[float]
44
+ """
45
+ The start time of the input video in seconds
46
+ """
47
+
48
+ width: typing_extensions.NotRequired[int]
49
+ """
50
+ Used to determine the dimensions of the output video.
51
+
52
+ * If width is provided, height 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.
53
+ * If both height and width are omitted, the video will be resized according to your subscription's maximum resolution, while preserving aspect ratio.
54
+
55
+ Note: if the video's original resolution is less than the maximum, the video will not be resized.
56
+
57
+ See our [pricing page](https://magichour.ai/pricing) for more details.
58
+ """
59
+
60
+
61
+ class _SerializerV1FaceSwapCreateBody(pydantic.BaseModel):
62
+ """
63
+ Serializer for V1FaceSwapCreateBody handling case conversions
64
+ and file omissions as dictated by the API
65
+ """
66
+
67
+ model_config = pydantic.ConfigDict(
68
+ populate_by_name=True,
69
+ )
70
+
71
+ assets: _SerializerV1FaceSwapCreateBodyAssets = pydantic.Field(
72
+ alias="assets",
73
+ )
74
+ end_seconds: float = pydantic.Field(
75
+ alias="end_seconds",
76
+ )
77
+ height: typing.Optional[int] = pydantic.Field(alias="height", default=None)
78
+ name: typing.Optional[str] = pydantic.Field(alias="name", default=None)
79
+ start_seconds: float = pydantic.Field(
80
+ alias="start_seconds",
81
+ )
82
+ width: typing.Optional[int] = pydantic.Field(alias="width", default=None)
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "magic_hour"
3
- version = "0.14.0"
3
+ version = "0.15.0"
4
4
  description = "Python SDK for Magic Hour API"
5
5
  readme = "README.md"
6
6
  authors = []
@@ -1,72 +0,0 @@
1
- import pydantic
2
- import typing
3
- import typing_extensions
4
-
5
- from .v1_face_swap_create_body_assets import (
6
- V1FaceSwapCreateBodyAssets,
7
- _SerializerV1FaceSwapCreateBodyAssets,
8
- )
9
-
10
-
11
- class V1FaceSwapCreateBody(typing_extensions.TypedDict):
12
- """
13
- V1FaceSwapCreateBody
14
- """
15
-
16
- assets: typing_extensions.Required[V1FaceSwapCreateBodyAssets]
17
- """
18
- Provide the assets for face swap. For video, The `video_source` field determines whether `video_file_path` or `youtube_url` field is used
19
- """
20
-
21
- end_seconds: typing_extensions.Required[float]
22
- """
23
- The end time of the input video in seconds
24
- """
25
-
26
- height: typing_extensions.Required[int]
27
- """
28
- The height of the final output video. The maximum height depends on your subscription. Please refer to our [pricing page](https://magichour.ai/pricing) for more details
29
- """
30
-
31
- name: typing_extensions.NotRequired[str]
32
- """
33
- The name of video
34
- """
35
-
36
- start_seconds: typing_extensions.Required[float]
37
- """
38
- The start time of the input video in seconds
39
- """
40
-
41
- width: typing_extensions.Required[int]
42
- """
43
- The width of the final output video. The maximum width depends on your subscription. Please refer to our [pricing page](https://magichour.ai/pricing) for more details
44
- """
45
-
46
-
47
- class _SerializerV1FaceSwapCreateBody(pydantic.BaseModel):
48
- """
49
- Serializer for V1FaceSwapCreateBody handling case conversions
50
- and file omissions as dictated by the API
51
- """
52
-
53
- model_config = pydantic.ConfigDict(
54
- populate_by_name=True,
55
- )
56
-
57
- assets: _SerializerV1FaceSwapCreateBodyAssets = pydantic.Field(
58
- alias="assets",
59
- )
60
- end_seconds: float = pydantic.Field(
61
- alias="end_seconds",
62
- )
63
- height: int = pydantic.Field(
64
- alias="height",
65
- )
66
- name: typing.Optional[str] = pydantic.Field(alias="name", default=None)
67
- start_seconds: float = pydantic.Field(
68
- alias="start_seconds",
69
- )
70
- width: int = pydantic.Field(
71
- alias="width",
72
- )
File without changes
File without changes
@@ -23,10 +23,10 @@ res = client.v1.face_swap.create(
23
23
  "video_source": "file",
24
24
  },
25
25
  end_seconds=15.0,
26
- height=960,
27
26
  start_seconds=0.0,
28
- width=512,
27
+ height=960,
29
28
  name="Face Swap video",
29
+ width=512,
30
30
  )
31
31
  ```
32
32
 
@@ -44,9 +44,9 @@ res = await client.v1.face_swap.create(
44
44
  "video_source": "file",
45
45
  },
46
46
  end_seconds=15.0,
47
- height=960,
48
47
  start_seconds=0.0,
49
- width=512,
48
+ height=960,
50
49
  name="Face Swap video",
50
+ width=512,
51
51
  )
52
52
  ```