magic_hour 0.9.5__py3-none-any.whl → 0.44.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.
Files changed (264) hide show
  1. magic_hour/README.md +34 -0
  2. magic_hour/__init__.py +1 -1
  3. magic_hour/client.py +8 -17
  4. magic_hour/environment.py +13 -1
  5. magic_hour/helpers/__init__.py +4 -0
  6. magic_hour/helpers/download.py +77 -0
  7. magic_hour/helpers/logger.py +8 -0
  8. magic_hour/resources/v1/README.md +32 -0
  9. magic_hour/resources/v1/ai_clothes_changer/README.md +94 -5
  10. magic_hour/resources/v1/ai_clothes_changer/client.py +161 -16
  11. magic_hour/resources/v1/ai_face_editor/README.md +195 -0
  12. magic_hour/resources/v1/ai_face_editor/__init__.py +4 -0
  13. magic_hour/resources/v1/ai_face_editor/client.py +324 -0
  14. magic_hour/resources/v1/ai_gif_generator/README.md +116 -0
  15. magic_hour/resources/v1/ai_gif_generator/__init__.py +4 -0
  16. magic_hour/resources/v1/ai_gif_generator/client.py +257 -0
  17. magic_hour/resources/v1/ai_headshot_generator/README.md +81 -3
  18. magic_hour/resources/v1/ai_headshot_generator/client.py +167 -18
  19. magic_hour/resources/v1/ai_image_editor/README.md +125 -0
  20. magic_hour/resources/v1/ai_image_editor/__init__.py +4 -0
  21. magic_hour/resources/v1/ai_image_editor/client.py +290 -0
  22. magic_hour/resources/v1/ai_image_generator/README.md +99 -5
  23. magic_hour/resources/v1/ai_image_generator/client.py +170 -24
  24. magic_hour/resources/v1/ai_image_upscaler/README.md +89 -3
  25. magic_hour/resources/v1/ai_image_upscaler/client.py +173 -20
  26. magic_hour/resources/v1/ai_meme_generator/README.md +129 -0
  27. magic_hour/resources/v1/ai_meme_generator/__init__.py +4 -0
  28. magic_hour/resources/v1/ai_meme_generator/client.py +253 -0
  29. magic_hour/resources/v1/ai_photo_editor/README.md +119 -4
  30. magic_hour/resources/v1/ai_photo_editor/client.py +199 -18
  31. magic_hour/resources/v1/ai_qr_code_generator/README.md +84 -3
  32. magic_hour/resources/v1/ai_qr_code_generator/client.py +140 -18
  33. magic_hour/resources/v1/ai_talking_photo/README.md +137 -0
  34. magic_hour/resources/v1/ai_talking_photo/__init__.py +4 -0
  35. magic_hour/resources/v1/ai_talking_photo/client.py +326 -0
  36. magic_hour/resources/v1/ai_voice_cloner/README.md +62 -0
  37. magic_hour/resources/v1/ai_voice_cloner/__init__.py +4 -0
  38. magic_hour/resources/v1/ai_voice_cloner/client.py +272 -0
  39. magic_hour/resources/v1/ai_voice_generator/README.md +112 -0
  40. magic_hour/resources/v1/ai_voice_generator/__init__.py +4 -0
  41. magic_hour/resources/v1/ai_voice_generator/client.py +241 -0
  42. magic_hour/resources/v1/animation/README.md +128 -6
  43. magic_hour/resources/v1/animation/client.py +247 -22
  44. magic_hour/resources/v1/audio_projects/README.md +135 -0
  45. magic_hour/resources/v1/audio_projects/__init__.py +12 -0
  46. magic_hour/resources/v1/audio_projects/client.py +310 -0
  47. magic_hour/resources/v1/audio_projects/client_test.py +520 -0
  48. magic_hour/resources/v1/auto_subtitle_generator/README.md +128 -0
  49. magic_hour/resources/v1/auto_subtitle_generator/__init__.py +4 -0
  50. magic_hour/resources/v1/auto_subtitle_generator/client.py +346 -0
  51. magic_hour/resources/v1/client.py +75 -1
  52. magic_hour/resources/v1/face_detection/README.md +157 -0
  53. magic_hour/resources/v1/face_detection/__init__.py +12 -0
  54. magic_hour/resources/v1/face_detection/client.py +380 -0
  55. magic_hour/resources/v1/face_swap/README.md +137 -9
  56. magic_hour/resources/v1/face_swap/client.py +329 -38
  57. magic_hour/resources/v1/face_swap_photo/README.md +118 -3
  58. magic_hour/resources/v1/face_swap_photo/client.py +199 -14
  59. magic_hour/resources/v1/files/README.md +39 -0
  60. magic_hour/resources/v1/files/client.py +351 -1
  61. magic_hour/resources/v1/files/client_test.py +414 -0
  62. magic_hour/resources/v1/files/upload_urls/README.md +38 -17
  63. magic_hour/resources/v1/files/upload_urls/client.py +38 -34
  64. magic_hour/resources/v1/image_background_remover/README.md +96 -5
  65. magic_hour/resources/v1/image_background_remover/client.py +151 -16
  66. magic_hour/resources/v1/image_projects/README.md +82 -10
  67. magic_hour/resources/v1/image_projects/__init__.py +10 -2
  68. magic_hour/resources/v1/image_projects/client.py +154 -16
  69. magic_hour/resources/v1/image_projects/client_test.py +527 -0
  70. magic_hour/resources/v1/image_to_video/README.md +96 -11
  71. magic_hour/resources/v1/image_to_video/client.py +282 -38
  72. magic_hour/resources/v1/lip_sync/README.md +112 -9
  73. magic_hour/resources/v1/lip_sync/client.py +288 -34
  74. magic_hour/resources/v1/photo_colorizer/README.md +107 -0
  75. magic_hour/resources/v1/photo_colorizer/__init__.py +4 -0
  76. magic_hour/resources/v1/photo_colorizer/client.py +248 -0
  77. magic_hour/resources/v1/text_to_video/README.md +96 -7
  78. magic_hour/resources/v1/text_to_video/client.py +204 -18
  79. magic_hour/resources/v1/video_projects/README.md +81 -9
  80. magic_hour/resources/v1/video_projects/__init__.py +10 -2
  81. magic_hour/resources/v1/video_projects/client.py +151 -14
  82. magic_hour/resources/v1/video_projects/client_test.py +527 -0
  83. magic_hour/resources/v1/video_to_video/README.md +119 -15
  84. magic_hour/resources/v1/video_to_video/client.py +299 -46
  85. magic_hour/types/models/__init__.py +92 -56
  86. magic_hour/types/models/v1_ai_clothes_changer_create_response.py +33 -0
  87. magic_hour/types/models/v1_ai_face_editor_create_response.py +33 -0
  88. magic_hour/types/models/v1_ai_gif_generator_create_response.py +33 -0
  89. magic_hour/types/models/v1_ai_headshot_generator_create_response.py +33 -0
  90. magic_hour/types/models/v1_ai_image_editor_create_response.py +33 -0
  91. magic_hour/types/models/v1_ai_image_generator_create_response.py +33 -0
  92. magic_hour/types/models/v1_ai_image_upscaler_create_response.py +33 -0
  93. magic_hour/types/models/v1_ai_meme_generator_create_response.py +33 -0
  94. magic_hour/types/models/v1_ai_photo_editor_create_response.py +33 -0
  95. magic_hour/types/models/v1_ai_qr_code_generator_create_response.py +33 -0
  96. magic_hour/types/models/v1_ai_talking_photo_create_response.py +35 -0
  97. magic_hour/types/models/v1_ai_voice_cloner_create_response.py +27 -0
  98. magic_hour/types/models/v1_ai_voice_generator_create_response.py +27 -0
  99. magic_hour/types/models/v1_animation_create_response.py +35 -0
  100. magic_hour/types/models/v1_audio_projects_get_response.py +72 -0
  101. magic_hour/types/models/v1_audio_projects_get_response_downloads_item.py +19 -0
  102. magic_hour/types/models/{get_v1_image_projects_id_response_error.py → v1_audio_projects_get_response_error.py} +2 -2
  103. magic_hour/types/models/v1_auto_subtitle_generator_create_response.py +35 -0
  104. magic_hour/types/models/v1_face_detection_create_response.py +25 -0
  105. magic_hour/types/models/v1_face_detection_get_response.py +45 -0
  106. magic_hour/types/models/v1_face_detection_get_response_faces_item.py +25 -0
  107. magic_hour/types/models/v1_face_swap_create_response.py +35 -0
  108. magic_hour/types/models/v1_face_swap_photo_create_response.py +33 -0
  109. magic_hour/types/models/v1_files_upload_urls_create_response.py +24 -0
  110. magic_hour/types/models/{post_v1_files_upload_urls_response_items_item.py → v1_files_upload_urls_create_response_items_item.py} +2 -2
  111. magic_hour/types/models/v1_image_background_remover_create_response.py +33 -0
  112. magic_hour/types/models/{get_v1_image_projects_id_response.py → v1_image_projects_get_response.py} +20 -18
  113. magic_hour/types/models/{get_v1_video_projects_id_response_downloads_item.py → v1_image_projects_get_response_downloads_item.py} +1 -1
  114. magic_hour/types/models/{get_v1_video_projects_id_response_error.py → v1_image_projects_get_response_error.py} +2 -2
  115. magic_hour/types/models/v1_image_to_video_create_response.py +35 -0
  116. magic_hour/types/models/v1_lip_sync_create_response.py +35 -0
  117. magic_hour/types/models/v1_photo_colorizer_create_response.py +33 -0
  118. magic_hour/types/models/v1_text_to_video_create_response.py +35 -0
  119. magic_hour/types/models/{get_v1_video_projects_id_response.py → v1_video_projects_get_response.py} +26 -23
  120. magic_hour/types/models/{get_v1_video_projects_id_response_download.py → v1_video_projects_get_response_download.py} +1 -1
  121. magic_hour/types/models/{get_v1_image_projects_id_response_downloads_item.py → v1_video_projects_get_response_downloads_item.py} +1 -1
  122. magic_hour/types/models/v1_video_projects_get_response_error.py +25 -0
  123. magic_hour/types/models/v1_video_to_video_create_response.py +35 -0
  124. magic_hour/types/params/__init__.py +422 -176
  125. magic_hour/types/params/v1_ai_clothes_changer_create_body.py +40 -0
  126. magic_hour/types/params/v1_ai_clothes_changer_create_body_assets.py +58 -0
  127. magic_hour/types/params/v1_ai_clothes_changer_generate_body_assets.py +33 -0
  128. magic_hour/types/params/v1_ai_face_editor_create_body.py +52 -0
  129. magic_hour/types/params/v1_ai_face_editor_create_body_assets.py +33 -0
  130. magic_hour/types/params/v1_ai_face_editor_create_body_style.py +137 -0
  131. magic_hour/types/params/v1_ai_face_editor_generate_body_assets.py +17 -0
  132. magic_hour/types/params/v1_ai_gif_generator_create_body.py +47 -0
  133. magic_hour/types/params/{post_v1_ai_image_generator_body_style.py → v1_ai_gif_generator_create_body_style.py} +5 -5
  134. magic_hour/types/params/v1_ai_headshot_generator_create_body.py +49 -0
  135. magic_hour/types/params/v1_ai_headshot_generator_create_body_assets.py +33 -0
  136. magic_hour/types/params/v1_ai_headshot_generator_create_body_style.py +27 -0
  137. magic_hour/types/params/v1_ai_headshot_generator_generate_body_assets.py +17 -0
  138. magic_hour/types/params/v1_ai_image_editor_create_body.py +49 -0
  139. magic_hour/types/params/v1_ai_image_editor_create_body_assets.py +47 -0
  140. magic_hour/types/params/v1_ai_image_editor_create_body_style.py +41 -0
  141. magic_hour/types/params/v1_ai_image_editor_generate_body_assets.py +28 -0
  142. magic_hour/types/params/{post_v1_ai_image_generator_body.py → v1_ai_image_generator_create_body.py} +17 -11
  143. magic_hour/types/params/v1_ai_image_generator_create_body_style.py +127 -0
  144. magic_hour/types/params/v1_ai_image_upscaler_create_body.py +59 -0
  145. magic_hour/types/params/v1_ai_image_upscaler_create_body_assets.py +33 -0
  146. magic_hour/types/params/{post_v1_ai_image_upscaler_body_style.py → v1_ai_image_upscaler_create_body_style.py} +4 -4
  147. magic_hour/types/params/v1_ai_image_upscaler_generate_body_assets.py +17 -0
  148. magic_hour/types/params/v1_ai_meme_generator_create_body.py +37 -0
  149. magic_hour/types/params/v1_ai_meme_generator_create_body_style.py +73 -0
  150. magic_hour/types/params/{post_v1_ai_photo_editor_body.py → v1_ai_photo_editor_create_body.py} +15 -15
  151. magic_hour/types/params/v1_ai_photo_editor_create_body_assets.py +33 -0
  152. magic_hour/types/params/{post_v1_ai_photo_editor_body_style.py → v1_ai_photo_editor_create_body_style.py} +20 -4
  153. magic_hour/types/params/v1_ai_photo_editor_generate_body_assets.py +17 -0
  154. magic_hour/types/params/v1_ai_qr_code_generator_create_body.py +45 -0
  155. magic_hour/types/params/{post_v1_ai_qr_code_generator_body_style.py → v1_ai_qr_code_generator_create_body_style.py} +4 -4
  156. magic_hour/types/params/v1_ai_talking_photo_create_body.py +68 -0
  157. magic_hour/types/params/v1_ai_talking_photo_create_body_assets.py +46 -0
  158. magic_hour/types/params/v1_ai_talking_photo_create_body_style.py +44 -0
  159. magic_hour/types/params/v1_ai_talking_photo_generate_body_assets.py +26 -0
  160. magic_hour/types/params/v1_ai_voice_cloner_create_body.py +49 -0
  161. magic_hour/types/params/v1_ai_voice_cloner_create_body_assets.py +33 -0
  162. magic_hour/types/params/v1_ai_voice_cloner_create_body_style.py +28 -0
  163. magic_hour/types/params/v1_ai_voice_cloner_generate_body_assets.py +28 -0
  164. magic_hour/types/params/v1_ai_voice_generator_create_body.py +40 -0
  165. magic_hour/types/params/v1_ai_voice_generator_create_body_style.py +440 -0
  166. magic_hour/types/params/{post_v1_animation_body.py → v1_animation_create_body.py} +16 -16
  167. magic_hour/types/params/{post_v1_animation_body_assets.py → v1_animation_create_body_assets.py} +15 -5
  168. magic_hour/types/params/{post_v1_animation_body_style.py → v1_animation_create_body_style.py} +13 -10
  169. magic_hour/types/params/v1_animation_generate_body_assets.py +39 -0
  170. magic_hour/types/params/v1_auto_subtitle_generator_create_body.py +78 -0
  171. magic_hour/types/params/v1_auto_subtitle_generator_create_body_assets.py +33 -0
  172. magic_hour/types/params/v1_auto_subtitle_generator_create_body_style.py +56 -0
  173. magic_hour/types/params/v1_auto_subtitle_generator_create_body_style_custom_config.py +86 -0
  174. magic_hour/types/params/v1_auto_subtitle_generator_generate_body_assets.py +17 -0
  175. magic_hour/types/params/v1_face_detection_create_body.py +44 -0
  176. magic_hour/types/params/v1_face_detection_create_body_assets.py +33 -0
  177. magic_hour/types/params/v1_face_detection_generate_body_assets.py +17 -0
  178. magic_hour/types/params/v1_face_swap_create_body.py +92 -0
  179. magic_hour/types/params/v1_face_swap_create_body_assets.py +91 -0
  180. magic_hour/types/params/v1_face_swap_create_body_assets_face_mappings_item.py +44 -0
  181. magic_hour/types/params/v1_face_swap_create_body_style.py +33 -0
  182. magic_hour/types/params/v1_face_swap_generate_body_assets.py +56 -0
  183. magic_hour/types/params/v1_face_swap_generate_body_assets_face_mappings_item.py +25 -0
  184. magic_hour/types/params/v1_face_swap_photo_create_body.py +40 -0
  185. magic_hour/types/params/v1_face_swap_photo_create_body_assets.py +76 -0
  186. magic_hour/types/params/v1_face_swap_photo_create_body_assets_face_mappings_item.py +44 -0
  187. magic_hour/types/params/v1_face_swap_photo_generate_body_assets.py +47 -0
  188. magic_hour/types/params/v1_face_swap_photo_generate_body_assets_face_mappings_item.py +25 -0
  189. magic_hour/types/params/v1_files_upload_urls_create_body.py +36 -0
  190. magic_hour/types/params/v1_files_upload_urls_create_body_items_item.py +38 -0
  191. magic_hour/types/params/v1_image_background_remover_create_body.py +40 -0
  192. magic_hour/types/params/v1_image_background_remover_create_body_assets.py +49 -0
  193. magic_hour/types/params/v1_image_background_remover_generate_body_assets.py +27 -0
  194. magic_hour/types/params/v1_image_to_video_create_body.py +101 -0
  195. magic_hour/types/params/v1_image_to_video_create_body_assets.py +33 -0
  196. magic_hour/types/params/v1_image_to_video_create_body_style.py +53 -0
  197. magic_hour/types/params/v1_image_to_video_generate_body_assets.py +17 -0
  198. magic_hour/types/params/v1_lip_sync_create_body.py +100 -0
  199. magic_hour/types/params/{post_v1_lip_sync_body_assets.py → v1_lip_sync_create_body_assets.py} +15 -5
  200. magic_hour/types/params/v1_lip_sync_create_body_style.py +37 -0
  201. magic_hour/types/params/v1_lip_sync_generate_body_assets.py +36 -0
  202. magic_hour/types/params/v1_photo_colorizer_create_body.py +40 -0
  203. magic_hour/types/params/v1_photo_colorizer_create_body_assets.py +33 -0
  204. magic_hour/types/params/v1_photo_colorizer_generate_body_assets.py +17 -0
  205. magic_hour/types/params/v1_text_to_video_create_body.py +78 -0
  206. magic_hour/types/params/v1_text_to_video_create_body_style.py +43 -0
  207. magic_hour/types/params/v1_video_to_video_create_body.py +101 -0
  208. magic_hour/types/params/{post_v1_video_to_video_body_assets.py → v1_video_to_video_create_body_assets.py} +9 -4
  209. magic_hour/types/params/{post_v1_video_to_video_body_style.py → v1_video_to_video_create_body_style.py} +68 -26
  210. magic_hour/types/params/v1_video_to_video_generate_body_assets.py +27 -0
  211. magic_hour-0.44.0.dist-info/METADATA +328 -0
  212. magic_hour-0.44.0.dist-info/RECORD +231 -0
  213. magic_hour/core/__init__.py +0 -52
  214. magic_hour/core/api_error.py +0 -56
  215. magic_hour/core/auth.py +0 -314
  216. magic_hour/core/base_client.py +0 -618
  217. magic_hour/core/binary_response.py +0 -23
  218. magic_hour/core/query.py +0 -106
  219. magic_hour/core/request.py +0 -156
  220. magic_hour/core/response.py +0 -293
  221. magic_hour/core/type_utils.py +0 -28
  222. magic_hour/core/utils.py +0 -55
  223. magic_hour/types/models/post_v1_ai_clothes_changer_response.py +0 -25
  224. magic_hour/types/models/post_v1_ai_headshot_generator_response.py +0 -25
  225. magic_hour/types/models/post_v1_ai_image_generator_response.py +0 -25
  226. magic_hour/types/models/post_v1_ai_image_upscaler_response.py +0 -25
  227. magic_hour/types/models/post_v1_ai_photo_editor_response.py +0 -25
  228. magic_hour/types/models/post_v1_ai_qr_code_generator_response.py +0 -25
  229. magic_hour/types/models/post_v1_animation_response.py +0 -25
  230. magic_hour/types/models/post_v1_face_swap_photo_response.py +0 -25
  231. magic_hour/types/models/post_v1_face_swap_response.py +0 -25
  232. magic_hour/types/models/post_v1_files_upload_urls_response.py +0 -21
  233. magic_hour/types/models/post_v1_image_background_remover_response.py +0 -25
  234. magic_hour/types/models/post_v1_image_to_video_response.py +0 -25
  235. magic_hour/types/models/post_v1_lip_sync_response.py +0 -25
  236. magic_hour/types/models/post_v1_text_to_video_response.py +0 -25
  237. magic_hour/types/models/post_v1_video_to_video_response.py +0 -25
  238. magic_hour/types/params/post_v1_ai_clothes_changer_body.py +0 -40
  239. magic_hour/types/params/post_v1_ai_clothes_changer_body_assets.py +0 -45
  240. magic_hour/types/params/post_v1_ai_headshot_generator_body.py +0 -40
  241. magic_hour/types/params/post_v1_ai_headshot_generator_body_assets.py +0 -28
  242. magic_hour/types/params/post_v1_ai_image_upscaler_body.py +0 -57
  243. magic_hour/types/params/post_v1_ai_image_upscaler_body_assets.py +0 -28
  244. magic_hour/types/params/post_v1_ai_photo_editor_body_assets.py +0 -28
  245. magic_hour/types/params/post_v1_ai_qr_code_generator_body.py +0 -45
  246. magic_hour/types/params/post_v1_face_swap_body.py +0 -72
  247. magic_hour/types/params/post_v1_face_swap_body_assets.py +0 -52
  248. magic_hour/types/params/post_v1_face_swap_photo_body.py +0 -40
  249. magic_hour/types/params/post_v1_face_swap_photo_body_assets.py +0 -36
  250. magic_hour/types/params/post_v1_files_upload_urls_body.py +0 -31
  251. magic_hour/types/params/post_v1_files_upload_urls_body_items_item.py +0 -38
  252. magic_hour/types/params/post_v1_image_background_remover_body.py +0 -40
  253. magic_hour/types/params/post_v1_image_background_remover_body_assets.py +0 -28
  254. magic_hour/types/params/post_v1_image_to_video_body.py +0 -73
  255. magic_hour/types/params/post_v1_image_to_video_body_assets.py +0 -28
  256. magic_hour/types/params/post_v1_image_to_video_body_style.py +0 -37
  257. magic_hour/types/params/post_v1_lip_sync_body.py +0 -80
  258. magic_hour/types/params/post_v1_text_to_video_body.py +0 -57
  259. magic_hour/types/params/post_v1_text_to_video_body_style.py +0 -28
  260. magic_hour/types/params/post_v1_video_to_video_body.py +0 -93
  261. magic_hour-0.9.5.dist-info/METADATA +0 -133
  262. magic_hour-0.9.5.dist-info/RECORD +0 -132
  263. {magic_hour-0.9.5.dist-info → magic_hour-0.44.0.dist-info}/LICENSE +0 -0
  264. {magic_hour-0.9.5.dist-info → magic_hour-0.44.0.dist-info}/WHEEL +0 -0
@@ -1,72 +0,0 @@
1
- import pydantic
2
- import typing
3
- import typing_extensions
4
-
5
- from .post_v1_face_swap_body_assets import (
6
- PostV1FaceSwapBodyAssets,
7
- _SerializerPostV1FaceSwapBodyAssets,
8
- )
9
-
10
-
11
- class PostV1FaceSwapBody(typing_extensions.TypedDict):
12
- """
13
- PostV1FaceSwapBody
14
- """
15
-
16
- assets: typing_extensions.Required[PostV1FaceSwapBodyAssets]
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 _SerializerPostV1FaceSwapBody(pydantic.BaseModel):
48
- """
49
- Serializer for PostV1FaceSwapBody 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: _SerializerPostV1FaceSwapBodyAssets = 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
- )
@@ -1,52 +0,0 @@
1
- import pydantic
2
- import typing
3
- import typing_extensions
4
-
5
-
6
- class PostV1FaceSwapBodyAssets(typing_extensions.TypedDict):
7
- """
8
- Provide the assets for face swap. For video, The `video_source` field determines whether `video_file_path` or `youtube_url` field is used
9
- """
10
-
11
- image_file_path: typing_extensions.Required[str]
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](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls), or the url of the file.
14
- """
15
-
16
- video_file_path: typing_extensions.NotRequired[str]
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](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls), or the url of the file.
19
- """
20
-
21
- video_source: typing_extensions.Required[
22
- typing_extensions.Literal["file", "youtube"]
23
- ]
24
-
25
- youtube_url: typing_extensions.NotRequired[str]
26
- """
27
- Using a youtube video as the input source. This field is required if `video_source` is `youtube`
28
- """
29
-
30
-
31
- class _SerializerPostV1FaceSwapBodyAssets(pydantic.BaseModel):
32
- """
33
- Serializer for PostV1FaceSwapBodyAssets handling case conversions
34
- and file omissions as dictated by the API
35
- """
36
-
37
- model_config = pydantic.ConfigDict(
38
- populate_by_name=True,
39
- )
40
-
41
- image_file_path: str = pydantic.Field(
42
- alias="image_file_path",
43
- )
44
- video_file_path: typing.Optional[str] = pydantic.Field(
45
- alias="video_file_path", default=None
46
- )
47
- video_source: typing_extensions.Literal["file", "youtube"] = pydantic.Field(
48
- alias="video_source",
49
- )
50
- youtube_url: typing.Optional[str] = pydantic.Field(
51
- alias="youtube_url", default=None
52
- )
@@ -1,40 +0,0 @@
1
- import pydantic
2
- import typing
3
- import typing_extensions
4
-
5
- from .post_v1_face_swap_photo_body_assets import (
6
- PostV1FaceSwapPhotoBodyAssets,
7
- _SerializerPostV1FaceSwapPhotoBodyAssets,
8
- )
9
-
10
-
11
- class PostV1FaceSwapPhotoBody(typing_extensions.TypedDict):
12
- """
13
- PostV1FaceSwapPhotoBody
14
- """
15
-
16
- assets: typing_extensions.Required[PostV1FaceSwapPhotoBodyAssets]
17
- """
18
- Provide the assets for face swap photo
19
- """
20
-
21
- name: typing_extensions.NotRequired[str]
22
- """
23
- The name of image
24
- """
25
-
26
-
27
- class _SerializerPostV1FaceSwapPhotoBody(pydantic.BaseModel):
28
- """
29
- Serializer for PostV1FaceSwapPhotoBody handling case conversions
30
- and file omissions as dictated by the API
31
- """
32
-
33
- model_config = pydantic.ConfigDict(
34
- populate_by_name=True,
35
- )
36
-
37
- assets: _SerializerPostV1FaceSwapPhotoBodyAssets = pydantic.Field(
38
- alias="assets",
39
- )
40
- name: typing.Optional[str] = pydantic.Field(alias="name", default=None)
@@ -1,36 +0,0 @@
1
- import pydantic
2
- import typing_extensions
3
-
4
-
5
- class PostV1FaceSwapPhotoBodyAssets(typing_extensions.TypedDict):
6
- """
7
- Provide the assets for face swap photo
8
- """
9
-
10
- source_file_path: typing_extensions.Required[str]
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](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls), or the url of the file.
13
- """
14
-
15
- target_file_path: typing_extensions.Required[str]
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](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls), or the url of the file.
18
- """
19
-
20
-
21
- class _SerializerPostV1FaceSwapPhotoBodyAssets(pydantic.BaseModel):
22
- """
23
- Serializer for PostV1FaceSwapPhotoBodyAssets handling case conversions
24
- and file omissions as dictated by the API
25
- """
26
-
27
- model_config = pydantic.ConfigDict(
28
- populate_by_name=True,
29
- )
30
-
31
- source_file_path: str = pydantic.Field(
32
- alias="source_file_path",
33
- )
34
- target_file_path: str = pydantic.Field(
35
- alias="target_file_path",
36
- )
@@ -1,31 +0,0 @@
1
- import pydantic
2
- import typing
3
- import typing_extensions
4
-
5
- from .post_v1_files_upload_urls_body_items_item import (
6
- PostV1FilesUploadUrlsBodyItemsItem,
7
- _SerializerPostV1FilesUploadUrlsBodyItemsItem,
8
- )
9
-
10
-
11
- class PostV1FilesUploadUrlsBody(typing_extensions.TypedDict):
12
- """
13
- PostV1FilesUploadUrlsBody
14
- """
15
-
16
- items: typing_extensions.Required[typing.List[PostV1FilesUploadUrlsBodyItemsItem]]
17
-
18
-
19
- class _SerializerPostV1FilesUploadUrlsBody(pydantic.BaseModel):
20
- """
21
- Serializer for PostV1FilesUploadUrlsBody handling case conversions
22
- and file omissions as dictated by the API
23
- """
24
-
25
- model_config = pydantic.ConfigDict(
26
- populate_by_name=True,
27
- )
28
-
29
- items: typing.List[_SerializerPostV1FilesUploadUrlsBodyItemsItem] = pydantic.Field(
30
- alias="items",
31
- )
@@ -1,38 +0,0 @@
1
- import pydantic
2
- import typing_extensions
3
-
4
-
5
- class PostV1FilesUploadUrlsBodyItemsItem(typing_extensions.TypedDict):
6
- """
7
- PostV1FilesUploadUrlsBodyItemsItem
8
- """
9
-
10
- extension: typing_extensions.Required[str]
11
- """
12
- the extension of the file to upload. Do not include the dot (.) before the extension.
13
- """
14
-
15
- type_field: typing_extensions.Required[
16
- typing_extensions.Literal["audio", "image", "video"]
17
- ]
18
- """
19
- The type of asset to upload
20
- """
21
-
22
-
23
- class _SerializerPostV1FilesUploadUrlsBodyItemsItem(pydantic.BaseModel):
24
- """
25
- Serializer for PostV1FilesUploadUrlsBodyItemsItem handling case conversions
26
- and file omissions as dictated by the API
27
- """
28
-
29
- model_config = pydantic.ConfigDict(
30
- populate_by_name=True,
31
- )
32
-
33
- extension: str = pydantic.Field(
34
- alias="extension",
35
- )
36
- type_field: typing_extensions.Literal["audio", "image", "video"] = pydantic.Field(
37
- alias="type",
38
- )
@@ -1,40 +0,0 @@
1
- import pydantic
2
- import typing
3
- import typing_extensions
4
-
5
- from .post_v1_image_background_remover_body_assets import (
6
- PostV1ImageBackgroundRemoverBodyAssets,
7
- _SerializerPostV1ImageBackgroundRemoverBodyAssets,
8
- )
9
-
10
-
11
- class PostV1ImageBackgroundRemoverBody(typing_extensions.TypedDict):
12
- """
13
- PostV1ImageBackgroundRemoverBody
14
- """
15
-
16
- assets: typing_extensions.Required[PostV1ImageBackgroundRemoverBodyAssets]
17
- """
18
- Provide the assets for background removal
19
- """
20
-
21
- name: typing_extensions.NotRequired[str]
22
- """
23
- The name of image
24
- """
25
-
26
-
27
- class _SerializerPostV1ImageBackgroundRemoverBody(pydantic.BaseModel):
28
- """
29
- Serializer for PostV1ImageBackgroundRemoverBody handling case conversions
30
- and file omissions as dictated by the API
31
- """
32
-
33
- model_config = pydantic.ConfigDict(
34
- populate_by_name=True,
35
- )
36
-
37
- assets: _SerializerPostV1ImageBackgroundRemoverBodyAssets = pydantic.Field(
38
- alias="assets",
39
- )
40
- name: typing.Optional[str] = pydantic.Field(alias="name", default=None)
@@ -1,28 +0,0 @@
1
- import pydantic
2
- import typing_extensions
3
-
4
-
5
- class PostV1ImageBackgroundRemoverBodyAssets(typing_extensions.TypedDict):
6
- """
7
- Provide the assets for background removal
8
- """
9
-
10
- image_file_path: typing_extensions.Required[str]
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](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls), or the url of the file.
13
- """
14
-
15
-
16
- class _SerializerPostV1ImageBackgroundRemoverBodyAssets(pydantic.BaseModel):
17
- """
18
- Serializer for PostV1ImageBackgroundRemoverBodyAssets handling case conversions
19
- and file omissions as dictated by the API
20
- """
21
-
22
- model_config = pydantic.ConfigDict(
23
- populate_by_name=True,
24
- )
25
-
26
- image_file_path: str = pydantic.Field(
27
- alias="image_file_path",
28
- )
@@ -1,73 +0,0 @@
1
- import pydantic
2
- import typing
3
- import typing_extensions
4
-
5
- from .post_v1_image_to_video_body_assets import (
6
- PostV1ImageToVideoBodyAssets,
7
- _SerializerPostV1ImageToVideoBodyAssets,
8
- )
9
- from .post_v1_image_to_video_body_style import (
10
- PostV1ImageToVideoBodyStyle,
11
- _SerializerPostV1ImageToVideoBodyStyle,
12
- )
13
-
14
-
15
- class PostV1ImageToVideoBody(typing_extensions.TypedDict):
16
- """
17
- PostV1ImageToVideoBody
18
- """
19
-
20
- assets: typing_extensions.Required[PostV1ImageToVideoBodyAssets]
21
- """
22
- Provide the assets for image-to-video.
23
- """
24
-
25
- end_seconds: typing_extensions.Required[float]
26
- """
27
- The total duration of the output video in seconds.
28
- """
29
-
30
- height: typing_extensions.Required[int]
31
- """
32
- The height of the input video. This value will help determine the final orientation of the output video. The output video resolution may not match the input.
33
- """
34
-
35
- name: typing_extensions.NotRequired[str]
36
- """
37
- The name of video
38
- """
39
-
40
- style: typing_extensions.Required[PostV1ImageToVideoBodyStyle]
41
-
42
- width: typing_extensions.Required[int]
43
- """
44
- The width of the input video. This value will help determine the final orientation of the output video. The output video resolution may not match the input.
45
- """
46
-
47
-
48
- class _SerializerPostV1ImageToVideoBody(pydantic.BaseModel):
49
- """
50
- Serializer for PostV1ImageToVideoBody handling case conversions
51
- and file omissions as dictated by the API
52
- """
53
-
54
- model_config = pydantic.ConfigDict(
55
- populate_by_name=True,
56
- )
57
-
58
- assets: _SerializerPostV1ImageToVideoBodyAssets = pydantic.Field(
59
- alias="assets",
60
- )
61
- end_seconds: float = pydantic.Field(
62
- alias="end_seconds",
63
- )
64
- height: int = pydantic.Field(
65
- alias="height",
66
- )
67
- name: typing.Optional[str] = pydantic.Field(alias="name", default=None)
68
- style: _SerializerPostV1ImageToVideoBodyStyle = pydantic.Field(
69
- alias="style",
70
- )
71
- width: int = pydantic.Field(
72
- alias="width",
73
- )
@@ -1,28 +0,0 @@
1
- import pydantic
2
- import typing_extensions
3
-
4
-
5
- class PostV1ImageToVideoBodyAssets(typing_extensions.TypedDict):
6
- """
7
- Provide the assets for image-to-video.
8
- """
9
-
10
- image_file_path: typing_extensions.Required[str]
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](https://docs.magichour.ai/api-reference/files/generate-asset-upload-urls), or the url of the file.
13
- """
14
-
15
-
16
- class _SerializerPostV1ImageToVideoBodyAssets(pydantic.BaseModel):
17
- """
18
- Serializer for PostV1ImageToVideoBodyAssets handling case conversions
19
- and file omissions as dictated by the API
20
- """
21
-
22
- model_config = pydantic.ConfigDict(
23
- populate_by_name=True,
24
- )
25
-
26
- image_file_path: str = pydantic.Field(
27
- alias="image_file_path",
28
- )
@@ -1,37 +0,0 @@
1
- import pydantic
2
- import typing
3
- import typing_extensions
4
-
5
-
6
- class PostV1ImageToVideoBodyStyle(typing_extensions.TypedDict):
7
- """
8
- PostV1ImageToVideoBodyStyle
9
- """
10
-
11
- high_quality: typing_extensions.NotRequired[bool]
12
- """
13
- High Quality mode enhances detail, sharpness, and realism, making it ideal for portraits, animals, and intricate landscapes.
14
- """
15
-
16
- prompt: typing_extensions.Required[typing.Optional[str]]
17
- """
18
- The prompt used for the video.
19
- """
20
-
21
-
22
- class _SerializerPostV1ImageToVideoBodyStyle(pydantic.BaseModel):
23
- """
24
- Serializer for PostV1ImageToVideoBodyStyle handling case conversions
25
- and file omissions as dictated by the API
26
- """
27
-
28
- model_config = pydantic.ConfigDict(
29
- populate_by_name=True,
30
- )
31
-
32
- high_quality: typing.Optional[bool] = pydantic.Field(
33
- alias="high_quality", default=None
34
- )
35
- prompt: typing.Optional[str] = pydantic.Field(
36
- alias="prompt",
37
- )
@@ -1,80 +0,0 @@
1
- import pydantic
2
- import typing
3
- import typing_extensions
4
-
5
- from .post_v1_lip_sync_body_assets import (
6
- PostV1LipSyncBodyAssets,
7
- _SerializerPostV1LipSyncBodyAssets,
8
- )
9
-
10
-
11
- class PostV1LipSyncBody(typing_extensions.TypedDict):
12
- """
13
- PostV1LipSyncBody
14
- """
15
-
16
- assets: typing_extensions.Required[PostV1LipSyncBodyAssets]
17
- """
18
- Provide the assets for lip-sync. 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
- max_fps_limit: typing_extensions.NotRequired[float]
32
- """
33
- Defines the maximum FPS (frames per second) for the output video. If the input video's FPS is lower than this limit, the output video will retain the input FPS. This is useful for reducing unnecessary frame usage in scenarios where high FPS is not required.
34
- """
35
-
36
- name: typing_extensions.NotRequired[str]
37
- """
38
- The name of video
39
- """
40
-
41
- start_seconds: typing_extensions.Required[float]
42
- """
43
- The start time of the input video in seconds
44
- """
45
-
46
- width: typing_extensions.Required[int]
47
- """
48
- 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
49
- """
50
-
51
-
52
- class _SerializerPostV1LipSyncBody(pydantic.BaseModel):
53
- """
54
- Serializer for PostV1LipSyncBody handling case conversions
55
- and file omissions as dictated by the API
56
- """
57
-
58
- model_config = pydantic.ConfigDict(
59
- populate_by_name=True,
60
- )
61
-
62
- assets: _SerializerPostV1LipSyncBodyAssets = pydantic.Field(
63
- alias="assets",
64
- )
65
- end_seconds: float = pydantic.Field(
66
- alias="end_seconds",
67
- )
68
- height: int = pydantic.Field(
69
- alias="height",
70
- )
71
- max_fps_limit: typing.Optional[float] = pydantic.Field(
72
- alias="max_fps_limit", default=None
73
- )
74
- name: typing.Optional[str] = pydantic.Field(alias="name", default=None)
75
- start_seconds: float = pydantic.Field(
76
- alias="start_seconds",
77
- )
78
- width: int = pydantic.Field(
79
- alias="width",
80
- )
@@ -1,57 +0,0 @@
1
- import pydantic
2
- import typing
3
- import typing_extensions
4
-
5
- from .post_v1_text_to_video_body_style import (
6
- PostV1TextToVideoBodyStyle,
7
- _SerializerPostV1TextToVideoBodyStyle,
8
- )
9
-
10
-
11
- class PostV1TextToVideoBody(typing_extensions.TypedDict):
12
- """
13
- PostV1TextToVideoBody
14
- """
15
-
16
- end_seconds: typing_extensions.Required[float]
17
- """
18
- The total duration of the output video in seconds.
19
- """
20
-
21
- name: typing_extensions.NotRequired[str]
22
- """
23
- The name of video
24
- """
25
-
26
- orientation: typing_extensions.Required[
27
- typing_extensions.Literal["landscape", "portrait", "square"]
28
- ]
29
- """
30
- Determines the orientation of the output video
31
- """
32
-
33
- style: typing_extensions.Required[PostV1TextToVideoBodyStyle]
34
-
35
-
36
- class _SerializerPostV1TextToVideoBody(pydantic.BaseModel):
37
- """
38
- Serializer for PostV1TextToVideoBody handling case conversions
39
- and file omissions as dictated by the API
40
- """
41
-
42
- model_config = pydantic.ConfigDict(
43
- populate_by_name=True,
44
- )
45
-
46
- end_seconds: float = pydantic.Field(
47
- alias="end_seconds",
48
- )
49
- name: typing.Optional[str] = pydantic.Field(alias="name", default=None)
50
- orientation: typing_extensions.Literal["landscape", "portrait", "square"] = (
51
- pydantic.Field(
52
- alias="orientation",
53
- )
54
- )
55
- style: _SerializerPostV1TextToVideoBodyStyle = pydantic.Field(
56
- alias="style",
57
- )
@@ -1,28 +0,0 @@
1
- import pydantic
2
- import typing_extensions
3
-
4
-
5
- class PostV1TextToVideoBodyStyle(typing_extensions.TypedDict):
6
- """
7
- PostV1TextToVideoBodyStyle
8
- """
9
-
10
- prompt: typing_extensions.Required[str]
11
- """
12
- The prompt used for the video.
13
- """
14
-
15
-
16
- class _SerializerPostV1TextToVideoBodyStyle(pydantic.BaseModel):
17
- """
18
- Serializer for PostV1TextToVideoBodyStyle handling case conversions
19
- and file omissions as dictated by the API
20
- """
21
-
22
- model_config = pydantic.ConfigDict(
23
- populate_by_name=True,
24
- )
25
-
26
- prompt: str = pydantic.Field(
27
- alias="prompt",
28
- )