magic_hour 0.35.0__tar.gz → 0.36.1__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.
- magic_hour-0.36.1/PKG-INFO +306 -0
- magic_hour-0.36.1/README.md +287 -0
- magic_hour-0.36.1/magic_hour/README.md +35 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/core/base_client.py +6 -5
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/core/query.py +12 -6
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/core/request.py +3 -3
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/core/response.py +18 -14
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/core/utils.py +3 -3
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/environment.py +1 -1
- magic_hour-0.36.1/magic_hour/helpers/__init__.py +3 -0
- magic_hour-0.36.1/magic_hour/helpers/download.py +75 -0
- magic_hour-0.36.1/magic_hour/resources/v1/README.md +33 -0
- magic_hour-0.36.1/magic_hour/resources/v1/ai_clothes_changer/README.md +130 -0
- magic_hour-0.36.1/magic_hour/resources/v1/ai_clothes_changer/client.py +273 -0
- magic_hour-0.36.1/magic_hour/resources/v1/ai_face_editor/README.md +194 -0
- magic_hour-0.36.1/magic_hour/resources/v1/ai_face_editor/client.py +325 -0
- magic_hour-0.36.1/magic_hour/resources/v1/ai_gif_generator/README.md +106 -0
- magic_hour-0.36.1/magic_hour/resources/v1/ai_gif_generator/client.py +236 -0
- magic_hour-0.36.1/magic_hour/resources/v1/ai_headshot_generator/README.md +108 -0
- magic_hour-0.36.1/magic_hour/resources/v1/ai_headshot_generator/client.py +269 -0
- magic_hour-0.36.1/magic_hour/resources/v1/ai_image_editor/README.md +116 -0
- magic_hour-0.36.1/magic_hour/resources/v1/ai_image_editor/client.py +261 -0
- magic_hour-0.36.1/magic_hour/resources/v1/ai_image_generator/README.md +121 -0
- magic_hour-0.36.1/magic_hour/resources/v1/ai_image_generator/client.py +281 -0
- magic_hour-0.36.1/magic_hour/resources/v1/ai_image_upscaler/README.md +122 -0
- magic_hour-0.36.1/magic_hour/resources/v1/ai_image_upscaler/client.py +295 -0
- magic_hour-0.36.1/magic_hour/resources/v1/ai_meme_generator/README.md +128 -0
- magic_hour-0.36.1/magic_hour/resources/v1/ai_meme_generator/client.py +254 -0
- magic_hour-0.36.1/magic_hour/resources/v1/ai_photo_editor/README.md +167 -0
- magic_hour-0.36.1/magic_hour/resources/v1/ai_photo_editor/client.py +347 -0
- magic_hour-0.36.1/magic_hour/resources/v1/ai_qr_code_generator/README.md +115 -0
- magic_hour-0.36.1/magic_hour/resources/v1/ai_qr_code_generator/client.py +248 -0
- magic_hour-0.36.1/magic_hour/resources/v1/ai_talking_photo/README.md +136 -0
- magic_hour-0.36.1/magic_hour/resources/v1/ai_talking_photo/client.py +327 -0
- magic_hour-0.36.1/magic_hour/resources/v1/animation/README.md +184 -0
- magic_hour-0.36.1/magic_hour/resources/v1/animation/client.py +403 -0
- magic_hour-0.36.1/magic_hour/resources/v1/auto_subtitle_generator/README.md +127 -0
- magic_hour-0.36.1/magic_hour/resources/v1/auto_subtitle_generator/client.py +347 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/resources/v1/face_detection/README.md +59 -0
- magic_hour-0.36.1/magic_hour/resources/v1/face_detection/__init__.py +12 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/resources/v1/face_detection/client.py +179 -0
- magic_hour-0.36.1/magic_hour/resources/v1/face_swap/README.md +179 -0
- magic_hour-0.36.1/magic_hour/resources/v1/face_swap/client.py +455 -0
- magic_hour-0.36.1/magic_hour/resources/v1/face_swap_photo/README.md +153 -0
- magic_hour-0.36.1/magic_hour/resources/v1/face_swap_photo/client.py +311 -0
- magic_hour-0.36.1/magic_hour/resources/v1/files/README.md +40 -0
- magic_hour-0.36.1/magic_hour/resources/v1/files/client.py +367 -0
- magic_hour-0.36.1/magic_hour/resources/v1/files/client_test.py +414 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/resources/v1/files/upload_urls/README.md +8 -0
- magic_hour-0.36.1/magic_hour/resources/v1/image_background_remover/README.md +123 -0
- magic_hour-0.36.1/magic_hour/resources/v1/image_background_remover/client.py +255 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/resources/v1/image_projects/README.md +52 -0
- magic_hour-0.36.1/magic_hour/resources/v1/image_projects/__init__.py +12 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/resources/v1/image_projects/client.py +138 -0
- magic_hour-0.36.1/magic_hour/resources/v1/image_projects/client_test.py +527 -0
- magic_hour-0.36.1/magic_hour/resources/v1/image_to_video/README.md +129 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/resources/v1/image_to_video/client.py +186 -0
- magic_hour-0.36.1/magic_hour/resources/v1/lip_sync/README.md +149 -0
- magic_hour-0.36.1/magic_hour/resources/v1/lip_sync/client.py +421 -0
- magic_hour-0.36.1/magic_hour/resources/v1/photo_colorizer/README.md +106 -0
- magic_hour-0.36.1/magic_hour/resources/v1/photo_colorizer/client.py +249 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/resources/v1/text_to_video/README.md +68 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/resources/v1/text_to_video/client.py +151 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/resources/v1/video_projects/README.md +52 -0
- magic_hour-0.36.1/magic_hour/resources/v1/video_projects/__init__.py +12 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/resources/v1/video_projects/client.py +137 -0
- magic_hour-0.36.1/magic_hour/resources/v1/video_projects/client_test.py +527 -0
- magic_hour-0.36.1/magic_hour/resources/v1/video_to_video/README.md +166 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/resources/v1/video_to_video/client.py +222 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/types/params/__init__.py +58 -0
- magic_hour-0.36.1/magic_hour/types/params/v1_ai_clothes_changer_generate_body_assets.py +33 -0
- magic_hour-0.36.1/magic_hour/types/params/v1_ai_face_editor_generate_body_assets.py +17 -0
- magic_hour-0.36.1/magic_hour/types/params/v1_ai_headshot_generator_generate_body_assets.py +17 -0
- magic_hour-0.36.1/magic_hour/types/params/v1_ai_image_editor_generate_body_assets.py +17 -0
- magic_hour-0.36.1/magic_hour/types/params/v1_ai_image_upscaler_generate_body_assets.py +17 -0
- magic_hour-0.36.1/magic_hour/types/params/v1_ai_photo_editor_generate_body_assets.py +17 -0
- magic_hour-0.36.1/magic_hour/types/params/v1_ai_talking_photo_generate_body_assets.py +26 -0
- magic_hour-0.36.1/magic_hour/types/params/v1_animation_generate_body_assets.py +39 -0
- magic_hour-0.36.1/magic_hour/types/params/v1_auto_subtitle_generator_generate_body_assets.py +17 -0
- magic_hour-0.36.1/magic_hour/types/params/v1_face_detection_generate_body_assets.py +17 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/types/params/v1_face_swap_create_body.py +12 -0
- magic_hour-0.36.1/magic_hour/types/params/v1_face_swap_create_body_style.py +33 -0
- magic_hour-0.36.1/magic_hour/types/params/v1_face_swap_generate_body_assets.py +56 -0
- magic_hour-0.36.1/magic_hour/types/params/v1_face_swap_generate_body_assets_face_mappings_item.py +25 -0
- magic_hour-0.36.1/magic_hour/types/params/v1_face_swap_photo_generate_body_assets.py +47 -0
- magic_hour-0.36.1/magic_hour/types/params/v1_face_swap_photo_generate_body_assets_face_mappings_item.py +25 -0
- magic_hour-0.36.1/magic_hour/types/params/v1_image_background_remover_generate_body_assets.py +27 -0
- magic_hour-0.36.1/magic_hour/types/params/v1_image_to_video_generate_body_assets.py +17 -0
- magic_hour-0.36.1/magic_hour/types/params/v1_lip_sync_generate_body_assets.py +36 -0
- magic_hour-0.36.1/magic_hour/types/params/v1_photo_colorizer_generate_body_assets.py +17 -0
- magic_hour-0.36.1/magic_hour/types/params/v1_video_to_video_generate_body_assets.py +27 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/pyproject.toml +1 -1
- magic_hour-0.35.0/PKG-INFO +0 -166
- magic_hour-0.35.0/README.md +0 -147
- magic_hour-0.35.0/magic_hour/resources/v1/ai_clothes_changer/README.md +0 -57
- magic_hour-0.35.0/magic_hour/resources/v1/ai_clothes_changer/client.py +0 -127
- magic_hour-0.35.0/magic_hour/resources/v1/ai_face_editor/README.md +0 -84
- magic_hour-0.35.0/magic_hour/resources/v1/ai_face_editor/client.py +0 -157
- magic_hour-0.35.0/magic_hour/resources/v1/ai_gif_generator/README.md +0 -47
- magic_hour-0.35.0/magic_hour/resources/v1/ai_gif_generator/client.py +0 -117
- magic_hour-0.35.0/magic_hour/resources/v1/ai_headshot_generator/README.md +0 -48
- magic_hour-0.35.0/magic_hour/resources/v1/ai_headshot_generator/client.py +0 -129
- magic_hour-0.35.0/magic_hour/resources/v1/ai_image_editor/README.md +0 -52
- magic_hour-0.35.0/magic_hour/resources/v1/ai_image_editor/client.py +0 -125
- magic_hour-0.35.0/magic_hour/resources/v1/ai_image_generator/README.md +0 -55
- magic_hour-0.35.0/magic_hour/resources/v1/ai_image_generator/client.py +0 -142
- magic_hour-0.35.0/magic_hour/resources/v1/ai_image_upscaler/README.md +0 -55
- magic_hour-0.35.0/magic_hour/resources/v1/ai_image_upscaler/client.py +0 -145
- magic_hour-0.35.0/magic_hour/resources/v1/ai_meme_generator/README.md +0 -57
- magic_hour-0.35.0/magic_hour/resources/v1/ai_meme_generator/client.py +0 -127
- magic_hour-0.35.0/magic_hour/resources/v1/ai_photo_editor/README.md +0 -76
- magic_hour-0.35.0/magic_hour/resources/v1/ai_photo_editor/client.py +0 -173
- magic_hour-0.35.0/magic_hour/resources/v1/ai_qr_code_generator/README.md +0 -52
- magic_hour-0.35.0/magic_hour/resources/v1/ai_qr_code_generator/client.py +0 -125
- magic_hour-0.35.0/magic_hour/resources/v1/ai_talking_photo/README.md +0 -62
- magic_hour-0.35.0/magic_hour/resources/v1/ai_talking_photo/client.py +0 -157
- magic_hour-0.35.0/magic_hour/resources/v1/animation/README.md +0 -84
- magic_hour-0.35.0/magic_hour/resources/v1/animation/client.py +0 -185
- magic_hour-0.35.0/magic_hour/resources/v1/auto_subtitle_generator/README.md +0 -58
- magic_hour-0.35.0/magic_hour/resources/v1/auto_subtitle_generator/client.py +0 -169
- magic_hour-0.35.0/magic_hour/resources/v1/face_detection/__init__.py +0 -4
- magic_hour-0.35.0/magic_hour/resources/v1/face_swap/README.md +0 -82
- magic_hour-0.35.0/magic_hour/resources/v1/face_swap/client.py +0 -213
- magic_hour-0.35.0/magic_hour/resources/v1/face_swap_photo/README.md +0 -69
- magic_hour-0.35.0/magic_hour/resources/v1/face_swap_photo/client.py +0 -139
- magic_hour-0.35.0/magic_hour/resources/v1/files/client.py +0 -17
- magic_hour-0.35.0/magic_hour/resources/v1/image_background_remover/README.md +0 -55
- magic_hour-0.35.0/magic_hour/resources/v1/image_background_remover/client.py +0 -125
- magic_hour-0.35.0/magic_hour/resources/v1/image_projects/__init__.py +0 -4
- magic_hour-0.35.0/magic_hour/resources/v1/image_to_video/README.md +0 -61
- magic_hour-0.35.0/magic_hour/resources/v1/lip_sync/README.md +0 -71
- magic_hour-0.35.0/magic_hour/resources/v1/lip_sync/client.py +0 -211
- magic_hour-0.35.0/magic_hour/resources/v1/photo_colorizer/README.md +0 -47
- magic_hour-0.35.0/magic_hour/resources/v1/photo_colorizer/client.py +0 -119
- magic_hour-0.35.0/magic_hour/resources/v1/video_projects/__init__.py +0 -4
- magic_hour-0.35.0/magic_hour/resources/v1/video_to_video/README.md +0 -78
- {magic_hour-0.35.0 → magic_hour-0.36.1}/LICENSE +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/__init__.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/client.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/core/__init__.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/core/api_error.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/core/auth.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/core/binary_response.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/core/type_utils.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/resources/v1/__init__.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/resources/v1/ai_clothes_changer/__init__.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/resources/v1/ai_face_editor/__init__.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/resources/v1/ai_gif_generator/__init__.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/resources/v1/ai_headshot_generator/__init__.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/resources/v1/ai_image_editor/__init__.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/resources/v1/ai_image_generator/__init__.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/resources/v1/ai_image_upscaler/__init__.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/resources/v1/ai_meme_generator/__init__.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/resources/v1/ai_photo_editor/__init__.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/resources/v1/ai_qr_code_generator/__init__.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/resources/v1/ai_talking_photo/__init__.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/resources/v1/animation/__init__.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/resources/v1/auto_subtitle_generator/__init__.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/resources/v1/client.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/resources/v1/face_swap/__init__.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/resources/v1/face_swap_photo/__init__.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/resources/v1/files/__init__.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/resources/v1/files/upload_urls/__init__.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/resources/v1/files/upload_urls/client.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/resources/v1/image_background_remover/__init__.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/resources/v1/image_to_video/__init__.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/resources/v1/lip_sync/__init__.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/resources/v1/photo_colorizer/__init__.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/resources/v1/text_to_video/__init__.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/resources/v1/video_to_video/__init__.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/types/models/__init__.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/types/models/v1_ai_clothes_changer_create_response.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/types/models/v1_ai_face_editor_create_response.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/types/models/v1_ai_gif_generator_create_response.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/types/models/v1_ai_headshot_generator_create_response.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/types/models/v1_ai_image_editor_create_response.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/types/models/v1_ai_image_generator_create_response.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/types/models/v1_ai_image_upscaler_create_response.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/types/models/v1_ai_meme_generator_create_response.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/types/models/v1_ai_photo_editor_create_response.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/types/models/v1_ai_qr_code_generator_create_response.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/types/models/v1_ai_talking_photo_create_response.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/types/models/v1_animation_create_response.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/types/models/v1_auto_subtitle_generator_create_response.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/types/models/v1_face_detection_create_response.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/types/models/v1_face_detection_get_response.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/types/models/v1_face_detection_get_response_faces_item.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/types/models/v1_face_swap_create_response.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/types/models/v1_face_swap_photo_create_response.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/types/models/v1_files_upload_urls_create_response.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/types/models/v1_files_upload_urls_create_response_items_item.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/types/models/v1_image_background_remover_create_response.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/types/models/v1_image_projects_get_response.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/types/models/v1_image_projects_get_response_downloads_item.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/types/models/v1_image_projects_get_response_error.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/types/models/v1_image_to_video_create_response.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/types/models/v1_lip_sync_create_response.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/types/models/v1_photo_colorizer_create_response.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/types/models/v1_text_to_video_create_response.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/types/models/v1_video_projects_get_response.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/types/models/v1_video_projects_get_response_download.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/types/models/v1_video_projects_get_response_downloads_item.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/types/models/v1_video_projects_get_response_error.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/types/models/v1_video_to_video_create_response.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/types/params/v1_ai_clothes_changer_create_body.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/types/params/v1_ai_clothes_changer_create_body_assets.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/types/params/v1_ai_face_editor_create_body.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/types/params/v1_ai_face_editor_create_body_assets.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/types/params/v1_ai_face_editor_create_body_style.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/types/params/v1_ai_gif_generator_create_body.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/types/params/v1_ai_gif_generator_create_body_style.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/types/params/v1_ai_headshot_generator_create_body.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/types/params/v1_ai_headshot_generator_create_body_assets.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/types/params/v1_ai_headshot_generator_create_body_style.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/types/params/v1_ai_image_editor_create_body.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/types/params/v1_ai_image_editor_create_body_assets.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/types/params/v1_ai_image_editor_create_body_style.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/types/params/v1_ai_image_generator_create_body.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/types/params/v1_ai_image_generator_create_body_style.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/types/params/v1_ai_image_upscaler_create_body.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/types/params/v1_ai_image_upscaler_create_body_assets.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/types/params/v1_ai_image_upscaler_create_body_style.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/types/params/v1_ai_meme_generator_create_body.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/types/params/v1_ai_meme_generator_create_body_style.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/types/params/v1_ai_photo_editor_create_body.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/types/params/v1_ai_photo_editor_create_body_assets.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/types/params/v1_ai_photo_editor_create_body_style.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/types/params/v1_ai_qr_code_generator_create_body.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/types/params/v1_ai_qr_code_generator_create_body_style.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/types/params/v1_ai_talking_photo_create_body.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/types/params/v1_ai_talking_photo_create_body_assets.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/types/params/v1_ai_talking_photo_create_body_style.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/types/params/v1_animation_create_body.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/types/params/v1_animation_create_body_assets.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/types/params/v1_animation_create_body_style.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/types/params/v1_auto_subtitle_generator_create_body.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/types/params/v1_auto_subtitle_generator_create_body_assets.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/types/params/v1_auto_subtitle_generator_create_body_style.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/types/params/v1_auto_subtitle_generator_create_body_style_custom_config.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/types/params/v1_face_detection_create_body.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/types/params/v1_face_detection_create_body_assets.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/types/params/v1_face_swap_create_body_assets.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/types/params/v1_face_swap_create_body_assets_face_mappings_item.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/types/params/v1_face_swap_photo_create_body.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/types/params/v1_face_swap_photo_create_body_assets.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/types/params/v1_face_swap_photo_create_body_assets_face_mappings_item.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/types/params/v1_files_upload_urls_create_body.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/types/params/v1_files_upload_urls_create_body_items_item.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/types/params/v1_image_background_remover_create_body.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/types/params/v1_image_background_remover_create_body_assets.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/types/params/v1_image_to_video_create_body.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/types/params/v1_image_to_video_create_body_assets.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/types/params/v1_image_to_video_create_body_style.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/types/params/v1_lip_sync_create_body.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/types/params/v1_lip_sync_create_body_assets.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/types/params/v1_photo_colorizer_create_body.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/types/params/v1_photo_colorizer_create_body_assets.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/types/params/v1_text_to_video_create_body.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/types/params/v1_text_to_video_create_body_style.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/types/params/v1_video_to_video_create_body.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/types/params/v1_video_to_video_create_body_assets.py +0 -0
- {magic_hour-0.35.0 → magic_hour-0.36.1}/magic_hour/types/params/v1_video_to_video_create_body_style.py +0 -0
|
@@ -0,0 +1,306 @@
|
|
|
1
|
+
Metadata-Version: 2.1
|
|
2
|
+
Name: magic_hour
|
|
3
|
+
Version: 0.36.1
|
|
4
|
+
Summary: Python SDK for Magic Hour API
|
|
5
|
+
Requires-Python: >=3.8,<4.0
|
|
6
|
+
Classifier: Programming Language :: Python :: 3
|
|
7
|
+
Classifier: Programming Language :: Python :: 3.8
|
|
8
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
9
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
10
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
11
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
12
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
13
|
+
Requires-Dist: httpx (>=0.26.0,<1)
|
|
14
|
+
Requires-Dist: jsonpointer (>=3.0.0,<4.0.0)
|
|
15
|
+
Requires-Dist: pydantic (>=2.5.0,<3.0.0)
|
|
16
|
+
Requires-Dist: typing_extensions (>=4.0.0,<5.0.0)
|
|
17
|
+
Description-Content-Type: text/markdown
|
|
18
|
+
|
|
19
|
+
# Magic Hour Python SDK
|
|
20
|
+
|
|
21
|
+
[](https://pypi.org/project/magic_hour/)
|
|
22
|
+
|
|
23
|
+
The Magic Hour Python Library provides convenient access to the Magic Hour API. This library offers both synchronous and asynchronous clients powered by [httpx](https://github.com/encode/httpx).
|
|
24
|
+
|
|
25
|
+
## Documentation
|
|
26
|
+
|
|
27
|
+
For full documentation of all APIs, please visit https://docs.magichour.ai
|
|
28
|
+
|
|
29
|
+
If you have any questions, please reach out to us via [discord](https://discord.gg/JX5rgsZaJp).
|
|
30
|
+
|
|
31
|
+
## Install
|
|
32
|
+
|
|
33
|
+
```sh
|
|
34
|
+
pip install magic_hour
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## Synchronous Client Usage
|
|
38
|
+
|
|
39
|
+
```python
|
|
40
|
+
from magic_hour import Client
|
|
41
|
+
|
|
42
|
+
# generate your API Key at https://magichour.ai/developer
|
|
43
|
+
client = Client(token="my api key")
|
|
44
|
+
|
|
45
|
+
response = client.v1.face_swap_photo.generate(
|
|
46
|
+
assets={
|
|
47
|
+
"face_swap_mode": "all-faces",
|
|
48
|
+
"source_file_path": "/path/to/source/image.png",
|
|
49
|
+
"source/image": "/path/to/target/image.png",
|
|
50
|
+
},
|
|
51
|
+
name="Face Swap image",
|
|
52
|
+
wait_for_completion=True,
|
|
53
|
+
download_outputs=True,
|
|
54
|
+
download_directory="./outputs/",
|
|
55
|
+
)
|
|
56
|
+
print(f"Project ID: {response.id}")
|
|
57
|
+
print(f"Status: {response.status}")
|
|
58
|
+
print(f"Downloaded files: {response.downloaded_paths}")
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### Asynchronous Client Usage
|
|
62
|
+
|
|
63
|
+
```python
|
|
64
|
+
from magic_hour import AsyncClient
|
|
65
|
+
|
|
66
|
+
# generate your API Key at https://magichour.ai/developer
|
|
67
|
+
client = AsyncClient(token="my api key")
|
|
68
|
+
|
|
69
|
+
response = await client.v1.face_swap_photo.generate(
|
|
70
|
+
assets={
|
|
71
|
+
"face_swap_mode": "all-faces",
|
|
72
|
+
"source_file_path": "/path/to/source/image.png",
|
|
73
|
+
"target_file_path": "/path/to/target/image.png",
|
|
74
|
+
},
|
|
75
|
+
name="Face Swap image",
|
|
76
|
+
wait_for_completion=True,
|
|
77
|
+
download_outputs=True,
|
|
78
|
+
download_directory="./outputs/",
|
|
79
|
+
)
|
|
80
|
+
print(f"Project ID: {response.id}")
|
|
81
|
+
print(f"Status: {response.status}")
|
|
82
|
+
print(f"Downloaded files: {response.downloaded_paths}")
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
## Client Functions
|
|
86
|
+
|
|
87
|
+
Most resources that generate media content support two methods:
|
|
88
|
+
|
|
89
|
+
- **`generate()`** - A high-level convenience method that handles the entire workflow
|
|
90
|
+
- **`create()`** - A low-level method that only initiates the generation process
|
|
91
|
+
|
|
92
|
+
### Generate Function
|
|
93
|
+
|
|
94
|
+
The `generate()` function provides a complete end-to-end solution:
|
|
95
|
+
|
|
96
|
+
- Uploads local file to Magic Hour storage
|
|
97
|
+
- Calls the API to start generation
|
|
98
|
+
- Automatically polls for completion
|
|
99
|
+
- Downloads generated files to your local machine
|
|
100
|
+
- Returns both API response data and local file paths
|
|
101
|
+
|
|
102
|
+
**Additional Parameters:**
|
|
103
|
+
|
|
104
|
+
- `wait_for_completion` (bool, default True): Whether to wait for the project to complete.
|
|
105
|
+
- `download_outputs` (bool, default True): Whether to download the generated files
|
|
106
|
+
- `download_directory` (str, optional): Directory to save downloaded files (defaults to current directory)
|
|
107
|
+
|
|
108
|
+
```python
|
|
109
|
+
# Generate function - handles everything automatically
|
|
110
|
+
response = client.v1.ai_image_generator.generate(
|
|
111
|
+
style={"prompt": "A beautiful sunset over mountains"},
|
|
112
|
+
name="Sunset Image",
|
|
113
|
+
wait_for_completion=True, # Wait for status to be complete/error/canceled
|
|
114
|
+
download_outputs=True, # Download files automatically
|
|
115
|
+
download_directory="./outputs/" # Where to save files
|
|
116
|
+
)
|
|
117
|
+
|
|
118
|
+
# You get both the API response AND downloaded file paths
|
|
119
|
+
print(f"Project ID: {response.id}")
|
|
120
|
+
print(f"Status: {response.status}")
|
|
121
|
+
print(f"Downloaded files: {response.downloaded_paths}")
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
### Create Function
|
|
125
|
+
|
|
126
|
+
The `create()` function provides granular control:
|
|
127
|
+
|
|
128
|
+
- Only calls the API to start the generation process
|
|
129
|
+
- Returns immediately with a project ID and amount of credits used
|
|
130
|
+
- Requires manual status checking and file downloading
|
|
131
|
+
|
|
132
|
+
```python
|
|
133
|
+
# Create function - only starts the process
|
|
134
|
+
create_response = client.v1.ai_image_generator.create(
|
|
135
|
+
style={"prompt": "A beautiful sunset over mountains"},
|
|
136
|
+
name="Sunset Image"
|
|
137
|
+
)
|
|
138
|
+
|
|
139
|
+
# You get just the project ID and initial response
|
|
140
|
+
project_id = create_response.id
|
|
141
|
+
print(f"Started project: {project_id}")
|
|
142
|
+
|
|
143
|
+
# You must handle the rest:
|
|
144
|
+
# 1. Poll for completion. We provide a helper function to handle polling for you
|
|
145
|
+
result = client.v1.image_projects.check_status(
|
|
146
|
+
wait_for_completion=True,
|
|
147
|
+
download_outputs=False,
|
|
148
|
+
)
|
|
149
|
+
# 2. Download files using the download URLs
|
|
150
|
+
download_urls = result.downloads
|
|
151
|
+
# download the files using your preferred way
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
### Choosing Between Which Function to use
|
|
155
|
+
|
|
156
|
+
**Use `generate()` when:**
|
|
157
|
+
|
|
158
|
+
- You want a simple, one-call solution
|
|
159
|
+
- You're building a straightforward application
|
|
160
|
+
- You don't need custom polling or download logic
|
|
161
|
+
|
|
162
|
+
**Use `create()` when:**
|
|
163
|
+
|
|
164
|
+
- You need custom status checking logic
|
|
165
|
+
- You're integrating with existing job processing systems
|
|
166
|
+
- You want to separate generation initiation from completion handling
|
|
167
|
+
- You need fine-grained control over the entire workflow
|
|
168
|
+
|
|
169
|
+
## Module Documentation and Snippets
|
|
170
|
+
|
|
171
|
+
### [v1](magic_hour/resources/v1/README.md)
|
|
172
|
+
|
|
173
|
+
|
|
174
|
+
### [v1.ai_clothes_changer](magic_hour/resources/v1/ai_clothes_changer/README.md)
|
|
175
|
+
|
|
176
|
+
* [create](magic_hour/resources/v1/ai_clothes_changer/README.md#create) - AI Clothes Changer
|
|
177
|
+
* [generate](magic_hour/resources/v1/ai_clothes_changer/README.md#generate) - AI Clothes Changer Generate Workflow
|
|
178
|
+
|
|
179
|
+
### [v1.ai_face_editor](magic_hour/resources/v1/ai_face_editor/README.md)
|
|
180
|
+
|
|
181
|
+
* [create](magic_hour/resources/v1/ai_face_editor/README.md#create) - AI Face Editor
|
|
182
|
+
* [generate](magic_hour/resources/v1/ai_face_editor/README.md#generate) - Ai Face Editor Generate Workflow
|
|
183
|
+
|
|
184
|
+
### [v1.ai_gif_generator](magic_hour/resources/v1/ai_gif_generator/README.md)
|
|
185
|
+
|
|
186
|
+
* [create](magic_hour/resources/v1/ai_gif_generator/README.md#create) - AI GIFs
|
|
187
|
+
* [generate](magic_hour/resources/v1/ai_gif_generator/README.md#generate) - Ai Gif Generator Generate Workflow
|
|
188
|
+
|
|
189
|
+
### [v1.ai_headshot_generator](magic_hour/resources/v1/ai_headshot_generator/README.md)
|
|
190
|
+
|
|
191
|
+
* [create](magic_hour/resources/v1/ai_headshot_generator/README.md#create) - AI Headshots
|
|
192
|
+
* [generate](magic_hour/resources/v1/ai_headshot_generator/README.md#generate) - Ai Headshot Generator Generate Workflow
|
|
193
|
+
|
|
194
|
+
### [v1.ai_image_editor](magic_hour/resources/v1/ai_image_editor/README.md)
|
|
195
|
+
|
|
196
|
+
* [create](magic_hour/resources/v1/ai_image_editor/README.md#create) - AI Image Editor
|
|
197
|
+
* [generate](magic_hour/resources/v1/ai_image_editor/README.md#generate) - Ai Image Editor Generate Workflow
|
|
198
|
+
|
|
199
|
+
### [v1.ai_image_generator](magic_hour/resources/v1/ai_image_generator/README.md)
|
|
200
|
+
|
|
201
|
+
* [create](magic_hour/resources/v1/ai_image_generator/README.md#create) - AI Images
|
|
202
|
+
* [generate](magic_hour/resources/v1/ai_image_generator/README.md#generate) - Ai Image Generator Generate Workflow
|
|
203
|
+
|
|
204
|
+
### [v1.ai_image_upscaler](magic_hour/resources/v1/ai_image_upscaler/README.md)
|
|
205
|
+
|
|
206
|
+
* [create](magic_hour/resources/v1/ai_image_upscaler/README.md#create) - AI Image Upscaler
|
|
207
|
+
* [generate](magic_hour/resources/v1/ai_image_upscaler/README.md#generate) - Ai Image Upscaler Generate Workflow
|
|
208
|
+
|
|
209
|
+
### [v1.ai_meme_generator](magic_hour/resources/v1/ai_meme_generator/README.md)
|
|
210
|
+
|
|
211
|
+
* [create](magic_hour/resources/v1/ai_meme_generator/README.md#create) - AI Meme Generator
|
|
212
|
+
* [generate](magic_hour/resources/v1/ai_meme_generator/README.md#generate) - Ai Meme Generator Generate Workflow
|
|
213
|
+
|
|
214
|
+
### [v1.ai_photo_editor](magic_hour/resources/v1/ai_photo_editor/README.md)
|
|
215
|
+
|
|
216
|
+
* [create](magic_hour/resources/v1/ai_photo_editor/README.md#create) - AI Photo Editor
|
|
217
|
+
* [generate](magic_hour/resources/v1/ai_photo_editor/README.md#generate) - Ai Photo Editor Generate Workflow
|
|
218
|
+
|
|
219
|
+
### [v1.ai_qr_code_generator](magic_hour/resources/v1/ai_qr_code_generator/README.md)
|
|
220
|
+
|
|
221
|
+
* [create](magic_hour/resources/v1/ai_qr_code_generator/README.md#create) - AI QR Code
|
|
222
|
+
* [generate](magic_hour/resources/v1/ai_qr_code_generator/README.md#generate) - Ai Qr Code Generator Generate Workflow
|
|
223
|
+
|
|
224
|
+
### [v1.ai_talking_photo](magic_hour/resources/v1/ai_talking_photo/README.md)
|
|
225
|
+
|
|
226
|
+
* [create](magic_hour/resources/v1/ai_talking_photo/README.md#create) - AI Talking Photo
|
|
227
|
+
* [generate](magic_hour/resources/v1/ai_talking_photo/README.md#generate) - Ai Talking Photo Generate Workflow
|
|
228
|
+
|
|
229
|
+
### [v1.animation](magic_hour/resources/v1/animation/README.md)
|
|
230
|
+
|
|
231
|
+
* [create](magic_hour/resources/v1/animation/README.md#create) - Animation
|
|
232
|
+
* [generate](magic_hour/resources/v1/animation/README.md#generate) - Animation Generate Workflow
|
|
233
|
+
|
|
234
|
+
### [v1.auto_subtitle_generator](magic_hour/resources/v1/auto_subtitle_generator/README.md)
|
|
235
|
+
|
|
236
|
+
* [create](magic_hour/resources/v1/auto_subtitle_generator/README.md#create) - Auto Subtitle Generator
|
|
237
|
+
* [generate](magic_hour/resources/v1/auto_subtitle_generator/README.md#generate) - Auto Subtitle Generator Generate Workflow
|
|
238
|
+
|
|
239
|
+
### [v1.face_detection](magic_hour/resources/v1/face_detection/README.md)
|
|
240
|
+
|
|
241
|
+
* [create](magic_hour/resources/v1/face_detection/README.md#create) - Face Detection
|
|
242
|
+
* [generate](magic_hour/resources/v1/face_detection/README.md#generate) - Face Detection Generate Workflow
|
|
243
|
+
* [get](magic_hour/resources/v1/face_detection/README.md#get) - Get face detection details
|
|
244
|
+
|
|
245
|
+
### [v1.face_swap](magic_hour/resources/v1/face_swap/README.md)
|
|
246
|
+
|
|
247
|
+
* [create](magic_hour/resources/v1/face_swap/README.md#create) - Face Swap video
|
|
248
|
+
* [generate](magic_hour/resources/v1/face_swap/README.md#generate) - Face Swap Generate Workflow
|
|
249
|
+
|
|
250
|
+
### [v1.face_swap_photo](magic_hour/resources/v1/face_swap_photo/README.md)
|
|
251
|
+
|
|
252
|
+
* [create](magic_hour/resources/v1/face_swap_photo/README.md#create) - Face Swap Photo
|
|
253
|
+
* [generate](magic_hour/resources/v1/face_swap_photo/README.md#generate) - Face Swap Photo Generate Workflow
|
|
254
|
+
|
|
255
|
+
### [v1.files](magic_hour/resources/v1/files/README.md)
|
|
256
|
+
|
|
257
|
+
* [upload-file](magic_hour/resources/v1/files/README.md#upload-file) - Upload File
|
|
258
|
+
|
|
259
|
+
### [v1.files.upload_urls](magic_hour/resources/v1/files/upload_urls/README.md)
|
|
260
|
+
|
|
261
|
+
* [create](magic_hour/resources/v1/files/upload_urls/README.md#create) - Generate asset upload urls
|
|
262
|
+
|
|
263
|
+
### [v1.image_background_remover](magic_hour/resources/v1/image_background_remover/README.md)
|
|
264
|
+
|
|
265
|
+
* [create](magic_hour/resources/v1/image_background_remover/README.md#create) - Image Background Remover
|
|
266
|
+
* [generate](magic_hour/resources/v1/image_background_remover/README.md#generate) - Image Background Remover Generate Workflow
|
|
267
|
+
|
|
268
|
+
### [v1.image_projects](magic_hour/resources/v1/image_projects/README.md)
|
|
269
|
+
|
|
270
|
+
* [check-result](magic_hour/resources/v1/image_projects/README.md#check-result) - Check results
|
|
271
|
+
* [delete](magic_hour/resources/v1/image_projects/README.md#delete) - Delete image
|
|
272
|
+
* [get](magic_hour/resources/v1/image_projects/README.md#get) - Get image details
|
|
273
|
+
|
|
274
|
+
### [v1.image_to_video](magic_hour/resources/v1/image_to_video/README.md)
|
|
275
|
+
|
|
276
|
+
* [create](magic_hour/resources/v1/image_to_video/README.md#create) - Image-to-Video
|
|
277
|
+
* [generate](magic_hour/resources/v1/image_to_video/README.md#generate) - Image To Video Generate Workflow
|
|
278
|
+
|
|
279
|
+
### [v1.lip_sync](magic_hour/resources/v1/lip_sync/README.md)
|
|
280
|
+
|
|
281
|
+
* [create](magic_hour/resources/v1/lip_sync/README.md#create) - Lip Sync
|
|
282
|
+
* [generate](magic_hour/resources/v1/lip_sync/README.md#generate) - Lip Sync Generate Workflow
|
|
283
|
+
|
|
284
|
+
### [v1.photo_colorizer](magic_hour/resources/v1/photo_colorizer/README.md)
|
|
285
|
+
|
|
286
|
+
* [create](magic_hour/resources/v1/photo_colorizer/README.md#create) - Photo Colorizer
|
|
287
|
+
* [generate](magic_hour/resources/v1/photo_colorizer/README.md#generate) - Photo Colorizer Generate Workflow
|
|
288
|
+
|
|
289
|
+
### [v1.text_to_video](magic_hour/resources/v1/text_to_video/README.md)
|
|
290
|
+
|
|
291
|
+
* [create](magic_hour/resources/v1/text_to_video/README.md#create) - Text-to-Video
|
|
292
|
+
* [generate](magic_hour/resources/v1/text_to_video/README.md#generate) - Text To Video Generate Workflow
|
|
293
|
+
|
|
294
|
+
### [v1.video_projects](magic_hour/resources/v1/video_projects/README.md)
|
|
295
|
+
|
|
296
|
+
* [check-result](magic_hour/resources/v1/video_projects/README.md#check-result) - Check results
|
|
297
|
+
* [delete](magic_hour/resources/v1/video_projects/README.md#delete) - Delete video
|
|
298
|
+
* [get](magic_hour/resources/v1/video_projects/README.md#get) - Get video details
|
|
299
|
+
|
|
300
|
+
### [v1.video_to_video](magic_hour/resources/v1/video_to_video/README.md)
|
|
301
|
+
|
|
302
|
+
* [create](magic_hour/resources/v1/video_to_video/README.md#create) - Video-to-Video
|
|
303
|
+
* [generate](magic_hour/resources/v1/video_to_video/README.md#generate) - Video To Video Generate Workflow
|
|
304
|
+
|
|
305
|
+
<!-- MODULE DOCS END -->
|
|
306
|
+
|
|
@@ -0,0 +1,287 @@
|
|
|
1
|
+
# Magic Hour Python SDK
|
|
2
|
+
|
|
3
|
+
[](https://pypi.org/project/magic_hour/)
|
|
4
|
+
|
|
5
|
+
The Magic Hour Python Library provides convenient access to the Magic Hour API. This library offers both synchronous and asynchronous clients powered by [httpx](https://github.com/encode/httpx).
|
|
6
|
+
|
|
7
|
+
## Documentation
|
|
8
|
+
|
|
9
|
+
For full documentation of all APIs, please visit https://docs.magichour.ai
|
|
10
|
+
|
|
11
|
+
If you have any questions, please reach out to us via [discord](https://discord.gg/JX5rgsZaJp).
|
|
12
|
+
|
|
13
|
+
## Install
|
|
14
|
+
|
|
15
|
+
```sh
|
|
16
|
+
pip install magic_hour
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Synchronous Client Usage
|
|
20
|
+
|
|
21
|
+
```python
|
|
22
|
+
from magic_hour import Client
|
|
23
|
+
|
|
24
|
+
# generate your API Key at https://magichour.ai/developer
|
|
25
|
+
client = Client(token="my api key")
|
|
26
|
+
|
|
27
|
+
response = client.v1.face_swap_photo.generate(
|
|
28
|
+
assets={
|
|
29
|
+
"face_swap_mode": "all-faces",
|
|
30
|
+
"source_file_path": "/path/to/source/image.png",
|
|
31
|
+
"source/image": "/path/to/target/image.png",
|
|
32
|
+
},
|
|
33
|
+
name="Face Swap image",
|
|
34
|
+
wait_for_completion=True,
|
|
35
|
+
download_outputs=True,
|
|
36
|
+
download_directory="./outputs/",
|
|
37
|
+
)
|
|
38
|
+
print(f"Project ID: {response.id}")
|
|
39
|
+
print(f"Status: {response.status}")
|
|
40
|
+
print(f"Downloaded files: {response.downloaded_paths}")
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
### Asynchronous Client Usage
|
|
44
|
+
|
|
45
|
+
```python
|
|
46
|
+
from magic_hour import AsyncClient
|
|
47
|
+
|
|
48
|
+
# generate your API Key at https://magichour.ai/developer
|
|
49
|
+
client = AsyncClient(token="my api key")
|
|
50
|
+
|
|
51
|
+
response = await client.v1.face_swap_photo.generate(
|
|
52
|
+
assets={
|
|
53
|
+
"face_swap_mode": "all-faces",
|
|
54
|
+
"source_file_path": "/path/to/source/image.png",
|
|
55
|
+
"target_file_path": "/path/to/target/image.png",
|
|
56
|
+
},
|
|
57
|
+
name="Face Swap image",
|
|
58
|
+
wait_for_completion=True,
|
|
59
|
+
download_outputs=True,
|
|
60
|
+
download_directory="./outputs/",
|
|
61
|
+
)
|
|
62
|
+
print(f"Project ID: {response.id}")
|
|
63
|
+
print(f"Status: {response.status}")
|
|
64
|
+
print(f"Downloaded files: {response.downloaded_paths}")
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
## Client Functions
|
|
68
|
+
|
|
69
|
+
Most resources that generate media content support two methods:
|
|
70
|
+
|
|
71
|
+
- **`generate()`** - A high-level convenience method that handles the entire workflow
|
|
72
|
+
- **`create()`** - A low-level method that only initiates the generation process
|
|
73
|
+
|
|
74
|
+
### Generate Function
|
|
75
|
+
|
|
76
|
+
The `generate()` function provides a complete end-to-end solution:
|
|
77
|
+
|
|
78
|
+
- Uploads local file to Magic Hour storage
|
|
79
|
+
- Calls the API to start generation
|
|
80
|
+
- Automatically polls for completion
|
|
81
|
+
- Downloads generated files to your local machine
|
|
82
|
+
- Returns both API response data and local file paths
|
|
83
|
+
|
|
84
|
+
**Additional Parameters:**
|
|
85
|
+
|
|
86
|
+
- `wait_for_completion` (bool, default True): Whether to wait for the project to complete.
|
|
87
|
+
- `download_outputs` (bool, default True): Whether to download the generated files
|
|
88
|
+
- `download_directory` (str, optional): Directory to save downloaded files (defaults to current directory)
|
|
89
|
+
|
|
90
|
+
```python
|
|
91
|
+
# Generate function - handles everything automatically
|
|
92
|
+
response = client.v1.ai_image_generator.generate(
|
|
93
|
+
style={"prompt": "A beautiful sunset over mountains"},
|
|
94
|
+
name="Sunset Image",
|
|
95
|
+
wait_for_completion=True, # Wait for status to be complete/error/canceled
|
|
96
|
+
download_outputs=True, # Download files automatically
|
|
97
|
+
download_directory="./outputs/" # Where to save files
|
|
98
|
+
)
|
|
99
|
+
|
|
100
|
+
# You get both the API response AND downloaded file paths
|
|
101
|
+
print(f"Project ID: {response.id}")
|
|
102
|
+
print(f"Status: {response.status}")
|
|
103
|
+
print(f"Downloaded files: {response.downloaded_paths}")
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
### Create Function
|
|
107
|
+
|
|
108
|
+
The `create()` function provides granular control:
|
|
109
|
+
|
|
110
|
+
- Only calls the API to start the generation process
|
|
111
|
+
- Returns immediately with a project ID and amount of credits used
|
|
112
|
+
- Requires manual status checking and file downloading
|
|
113
|
+
|
|
114
|
+
```python
|
|
115
|
+
# Create function - only starts the process
|
|
116
|
+
create_response = client.v1.ai_image_generator.create(
|
|
117
|
+
style={"prompt": "A beautiful sunset over mountains"},
|
|
118
|
+
name="Sunset Image"
|
|
119
|
+
)
|
|
120
|
+
|
|
121
|
+
# You get just the project ID and initial response
|
|
122
|
+
project_id = create_response.id
|
|
123
|
+
print(f"Started project: {project_id}")
|
|
124
|
+
|
|
125
|
+
# You must handle the rest:
|
|
126
|
+
# 1. Poll for completion. We provide a helper function to handle polling for you
|
|
127
|
+
result = client.v1.image_projects.check_status(
|
|
128
|
+
wait_for_completion=True,
|
|
129
|
+
download_outputs=False,
|
|
130
|
+
)
|
|
131
|
+
# 2. Download files using the download URLs
|
|
132
|
+
download_urls = result.downloads
|
|
133
|
+
# download the files using your preferred way
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
### Choosing Between Which Function to use
|
|
137
|
+
|
|
138
|
+
**Use `generate()` when:**
|
|
139
|
+
|
|
140
|
+
- You want a simple, one-call solution
|
|
141
|
+
- You're building a straightforward application
|
|
142
|
+
- You don't need custom polling or download logic
|
|
143
|
+
|
|
144
|
+
**Use `create()` when:**
|
|
145
|
+
|
|
146
|
+
- You need custom status checking logic
|
|
147
|
+
- You're integrating with existing job processing systems
|
|
148
|
+
- You want to separate generation initiation from completion handling
|
|
149
|
+
- You need fine-grained control over the entire workflow
|
|
150
|
+
|
|
151
|
+
## Module Documentation and Snippets
|
|
152
|
+
|
|
153
|
+
### [v1](magic_hour/resources/v1/README.md)
|
|
154
|
+
|
|
155
|
+
|
|
156
|
+
### [v1.ai_clothes_changer](magic_hour/resources/v1/ai_clothes_changer/README.md)
|
|
157
|
+
|
|
158
|
+
* [create](magic_hour/resources/v1/ai_clothes_changer/README.md#create) - AI Clothes Changer
|
|
159
|
+
* [generate](magic_hour/resources/v1/ai_clothes_changer/README.md#generate) - AI Clothes Changer Generate Workflow
|
|
160
|
+
|
|
161
|
+
### [v1.ai_face_editor](magic_hour/resources/v1/ai_face_editor/README.md)
|
|
162
|
+
|
|
163
|
+
* [create](magic_hour/resources/v1/ai_face_editor/README.md#create) - AI Face Editor
|
|
164
|
+
* [generate](magic_hour/resources/v1/ai_face_editor/README.md#generate) - Ai Face Editor Generate Workflow
|
|
165
|
+
|
|
166
|
+
### [v1.ai_gif_generator](magic_hour/resources/v1/ai_gif_generator/README.md)
|
|
167
|
+
|
|
168
|
+
* [create](magic_hour/resources/v1/ai_gif_generator/README.md#create) - AI GIFs
|
|
169
|
+
* [generate](magic_hour/resources/v1/ai_gif_generator/README.md#generate) - Ai Gif Generator Generate Workflow
|
|
170
|
+
|
|
171
|
+
### [v1.ai_headshot_generator](magic_hour/resources/v1/ai_headshot_generator/README.md)
|
|
172
|
+
|
|
173
|
+
* [create](magic_hour/resources/v1/ai_headshot_generator/README.md#create) - AI Headshots
|
|
174
|
+
* [generate](magic_hour/resources/v1/ai_headshot_generator/README.md#generate) - Ai Headshot Generator Generate Workflow
|
|
175
|
+
|
|
176
|
+
### [v1.ai_image_editor](magic_hour/resources/v1/ai_image_editor/README.md)
|
|
177
|
+
|
|
178
|
+
* [create](magic_hour/resources/v1/ai_image_editor/README.md#create) - AI Image Editor
|
|
179
|
+
* [generate](magic_hour/resources/v1/ai_image_editor/README.md#generate) - Ai Image Editor Generate Workflow
|
|
180
|
+
|
|
181
|
+
### [v1.ai_image_generator](magic_hour/resources/v1/ai_image_generator/README.md)
|
|
182
|
+
|
|
183
|
+
* [create](magic_hour/resources/v1/ai_image_generator/README.md#create) - AI Images
|
|
184
|
+
* [generate](magic_hour/resources/v1/ai_image_generator/README.md#generate) - Ai Image Generator Generate Workflow
|
|
185
|
+
|
|
186
|
+
### [v1.ai_image_upscaler](magic_hour/resources/v1/ai_image_upscaler/README.md)
|
|
187
|
+
|
|
188
|
+
* [create](magic_hour/resources/v1/ai_image_upscaler/README.md#create) - AI Image Upscaler
|
|
189
|
+
* [generate](magic_hour/resources/v1/ai_image_upscaler/README.md#generate) - Ai Image Upscaler Generate Workflow
|
|
190
|
+
|
|
191
|
+
### [v1.ai_meme_generator](magic_hour/resources/v1/ai_meme_generator/README.md)
|
|
192
|
+
|
|
193
|
+
* [create](magic_hour/resources/v1/ai_meme_generator/README.md#create) - AI Meme Generator
|
|
194
|
+
* [generate](magic_hour/resources/v1/ai_meme_generator/README.md#generate) - Ai Meme Generator Generate Workflow
|
|
195
|
+
|
|
196
|
+
### [v1.ai_photo_editor](magic_hour/resources/v1/ai_photo_editor/README.md)
|
|
197
|
+
|
|
198
|
+
* [create](magic_hour/resources/v1/ai_photo_editor/README.md#create) - AI Photo Editor
|
|
199
|
+
* [generate](magic_hour/resources/v1/ai_photo_editor/README.md#generate) - Ai Photo Editor Generate Workflow
|
|
200
|
+
|
|
201
|
+
### [v1.ai_qr_code_generator](magic_hour/resources/v1/ai_qr_code_generator/README.md)
|
|
202
|
+
|
|
203
|
+
* [create](magic_hour/resources/v1/ai_qr_code_generator/README.md#create) - AI QR Code
|
|
204
|
+
* [generate](magic_hour/resources/v1/ai_qr_code_generator/README.md#generate) - Ai Qr Code Generator Generate Workflow
|
|
205
|
+
|
|
206
|
+
### [v1.ai_talking_photo](magic_hour/resources/v1/ai_talking_photo/README.md)
|
|
207
|
+
|
|
208
|
+
* [create](magic_hour/resources/v1/ai_talking_photo/README.md#create) - AI Talking Photo
|
|
209
|
+
* [generate](magic_hour/resources/v1/ai_talking_photo/README.md#generate) - Ai Talking Photo Generate Workflow
|
|
210
|
+
|
|
211
|
+
### [v1.animation](magic_hour/resources/v1/animation/README.md)
|
|
212
|
+
|
|
213
|
+
* [create](magic_hour/resources/v1/animation/README.md#create) - Animation
|
|
214
|
+
* [generate](magic_hour/resources/v1/animation/README.md#generate) - Animation Generate Workflow
|
|
215
|
+
|
|
216
|
+
### [v1.auto_subtitle_generator](magic_hour/resources/v1/auto_subtitle_generator/README.md)
|
|
217
|
+
|
|
218
|
+
* [create](magic_hour/resources/v1/auto_subtitle_generator/README.md#create) - Auto Subtitle Generator
|
|
219
|
+
* [generate](magic_hour/resources/v1/auto_subtitle_generator/README.md#generate) - Auto Subtitle Generator Generate Workflow
|
|
220
|
+
|
|
221
|
+
### [v1.face_detection](magic_hour/resources/v1/face_detection/README.md)
|
|
222
|
+
|
|
223
|
+
* [create](magic_hour/resources/v1/face_detection/README.md#create) - Face Detection
|
|
224
|
+
* [generate](magic_hour/resources/v1/face_detection/README.md#generate) - Face Detection Generate Workflow
|
|
225
|
+
* [get](magic_hour/resources/v1/face_detection/README.md#get) - Get face detection details
|
|
226
|
+
|
|
227
|
+
### [v1.face_swap](magic_hour/resources/v1/face_swap/README.md)
|
|
228
|
+
|
|
229
|
+
* [create](magic_hour/resources/v1/face_swap/README.md#create) - Face Swap video
|
|
230
|
+
* [generate](magic_hour/resources/v1/face_swap/README.md#generate) - Face Swap Generate Workflow
|
|
231
|
+
|
|
232
|
+
### [v1.face_swap_photo](magic_hour/resources/v1/face_swap_photo/README.md)
|
|
233
|
+
|
|
234
|
+
* [create](magic_hour/resources/v1/face_swap_photo/README.md#create) - Face Swap Photo
|
|
235
|
+
* [generate](magic_hour/resources/v1/face_swap_photo/README.md#generate) - Face Swap Photo Generate Workflow
|
|
236
|
+
|
|
237
|
+
### [v1.files](magic_hour/resources/v1/files/README.md)
|
|
238
|
+
|
|
239
|
+
* [upload-file](magic_hour/resources/v1/files/README.md#upload-file) - Upload File
|
|
240
|
+
|
|
241
|
+
### [v1.files.upload_urls](magic_hour/resources/v1/files/upload_urls/README.md)
|
|
242
|
+
|
|
243
|
+
* [create](magic_hour/resources/v1/files/upload_urls/README.md#create) - Generate asset upload urls
|
|
244
|
+
|
|
245
|
+
### [v1.image_background_remover](magic_hour/resources/v1/image_background_remover/README.md)
|
|
246
|
+
|
|
247
|
+
* [create](magic_hour/resources/v1/image_background_remover/README.md#create) - Image Background Remover
|
|
248
|
+
* [generate](magic_hour/resources/v1/image_background_remover/README.md#generate) - Image Background Remover Generate Workflow
|
|
249
|
+
|
|
250
|
+
### [v1.image_projects](magic_hour/resources/v1/image_projects/README.md)
|
|
251
|
+
|
|
252
|
+
* [check-result](magic_hour/resources/v1/image_projects/README.md#check-result) - Check results
|
|
253
|
+
* [delete](magic_hour/resources/v1/image_projects/README.md#delete) - Delete image
|
|
254
|
+
* [get](magic_hour/resources/v1/image_projects/README.md#get) - Get image details
|
|
255
|
+
|
|
256
|
+
### [v1.image_to_video](magic_hour/resources/v1/image_to_video/README.md)
|
|
257
|
+
|
|
258
|
+
* [create](magic_hour/resources/v1/image_to_video/README.md#create) - Image-to-Video
|
|
259
|
+
* [generate](magic_hour/resources/v1/image_to_video/README.md#generate) - Image To Video Generate Workflow
|
|
260
|
+
|
|
261
|
+
### [v1.lip_sync](magic_hour/resources/v1/lip_sync/README.md)
|
|
262
|
+
|
|
263
|
+
* [create](magic_hour/resources/v1/lip_sync/README.md#create) - Lip Sync
|
|
264
|
+
* [generate](magic_hour/resources/v1/lip_sync/README.md#generate) - Lip Sync Generate Workflow
|
|
265
|
+
|
|
266
|
+
### [v1.photo_colorizer](magic_hour/resources/v1/photo_colorizer/README.md)
|
|
267
|
+
|
|
268
|
+
* [create](magic_hour/resources/v1/photo_colorizer/README.md#create) - Photo Colorizer
|
|
269
|
+
* [generate](magic_hour/resources/v1/photo_colorizer/README.md#generate) - Photo Colorizer Generate Workflow
|
|
270
|
+
|
|
271
|
+
### [v1.text_to_video](magic_hour/resources/v1/text_to_video/README.md)
|
|
272
|
+
|
|
273
|
+
* [create](magic_hour/resources/v1/text_to_video/README.md#create) - Text-to-Video
|
|
274
|
+
* [generate](magic_hour/resources/v1/text_to_video/README.md#generate) - Text To Video Generate Workflow
|
|
275
|
+
|
|
276
|
+
### [v1.video_projects](magic_hour/resources/v1/video_projects/README.md)
|
|
277
|
+
|
|
278
|
+
* [check-result](magic_hour/resources/v1/video_projects/README.md#check-result) - Check results
|
|
279
|
+
* [delete](magic_hour/resources/v1/video_projects/README.md#delete) - Delete video
|
|
280
|
+
* [get](magic_hour/resources/v1/video_projects/README.md#get) - Get video details
|
|
281
|
+
|
|
282
|
+
### [v1.video_to_video](magic_hour/resources/v1/video_to_video/README.md)
|
|
283
|
+
|
|
284
|
+
* [create](magic_hour/resources/v1/video_to_video/README.md#create) - Video-to-Video
|
|
285
|
+
* [generate](magic_hour/resources/v1/video_to_video/README.md#generate) - Video To Video Generate Workflow
|
|
286
|
+
|
|
287
|
+
<!-- MODULE DOCS END -->
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# Root Client
|
|
2
|
+
|
|
3
|
+
<!-- CUSTOM DOCS START -->
|
|
4
|
+
|
|
5
|
+
<!-- CUSTOM DOCS END -->
|
|
6
|
+
|
|
7
|
+
## Submodules
|
|
8
|
+
- [ai_clothes_changer](resources/v1/ai_clothes_changer/README.md) - ai_clothes_changer
|
|
9
|
+
- [ai_face_editor](resources/v1/ai_face_editor/README.md) - ai_face_editor
|
|
10
|
+
- [ai_gif_generator](resources/v1/ai_gif_generator/README.md) - ai_gif_generator
|
|
11
|
+
- [ai_headshot_generator](resources/v1/ai_headshot_generator/README.md) - ai_headshot_generator
|
|
12
|
+
- [ai_image_editor](resources/v1/ai_image_editor/README.md) - ai_image_editor
|
|
13
|
+
- [ai_image_generator](resources/v1/ai_image_generator/README.md) - ai_image_generator
|
|
14
|
+
- [ai_image_upscaler](resources/v1/ai_image_upscaler/README.md) - ai_image_upscaler
|
|
15
|
+
- [ai_meme_generator](resources/v1/ai_meme_generator/README.md) - ai_meme_generator
|
|
16
|
+
- [ai_photo_editor](resources/v1/ai_photo_editor/README.md) - ai_photo_editor
|
|
17
|
+
- [ai_qr_code_generator](resources/v1/ai_qr_code_generator/README.md) - ai_qr_code_generator
|
|
18
|
+
- [ai_talking_photo](resources/v1/ai_talking_photo/README.md) - ai_talking_photo
|
|
19
|
+
- [animation](resources/v1/animation/README.md) - animation
|
|
20
|
+
- [auto_subtitle_generator](resources/v1/auto_subtitle_generator/README.md) - auto_subtitle_generator
|
|
21
|
+
- [face_detection](resources/v1/face_detection/README.md) - face_detection
|
|
22
|
+
- [face_swap](resources/v1/face_swap/README.md) - face_swap
|
|
23
|
+
- [face_swap_photo](resources/v1/face_swap_photo/README.md) - face_swap_photo
|
|
24
|
+
- [upload_urls](resources/v1/files/upload_urls/README.md) - upload_urls
|
|
25
|
+
- [files](resources/v1/files/README.md) - files
|
|
26
|
+
- [image_background_remover](resources/v1/image_background_remover/README.md) - image_background_remover
|
|
27
|
+
- [image_projects](resources/v1/image_projects/README.md) - image_projects
|
|
28
|
+
- [image_to_video](resources/v1/image_to_video/README.md) - image_to_video
|
|
29
|
+
- [lip_sync](resources/v1/lip_sync/README.md) - lip_sync
|
|
30
|
+
- [photo_colorizer](resources/v1/photo_colorizer/README.md) - photo_colorizer
|
|
31
|
+
- [text_to_video](resources/v1/text_to_video/README.md) - text_to_video
|
|
32
|
+
- [video_projects](resources/v1/video_projects/README.md) - video_projects
|
|
33
|
+
- [video_to_video](resources/v1/video_to_video/README.md) - video_to_video
|
|
34
|
+
- [v1](resources/v1/README.md) - v1
|
|
35
|
+
|
|
@@ -15,7 +15,8 @@ from pydantic import BaseModel
|
|
|
15
15
|
|
|
16
16
|
from .api_error import ApiError
|
|
17
17
|
from .auth import AuthProvider
|
|
18
|
-
from .request import RequestConfig, RequestOptions, default_request_options
|
|
18
|
+
from .request import RequestConfig, RequestOptions, default_request_options
|
|
19
|
+
from .query import QueryParams
|
|
19
20
|
from .response import from_encodable, AsyncStreamResponse, StreamResponse
|
|
20
21
|
from .utils import get_response_type, filter_binary_response
|
|
21
22
|
from .binary_response import BinaryResponse
|
|
@@ -51,7 +52,7 @@ class BaseClient:
|
|
|
51
52
|
)
|
|
52
53
|
self._auths: Dict[str, AuthProvider] = auths or {}
|
|
53
54
|
|
|
54
|
-
def register_auth(self, auth_id: str, provider: AuthProvider):
|
|
55
|
+
def register_auth(self, auth_id: str, provider: AuthProvider) -> None:
|
|
55
56
|
"""Register an authentication provider.
|
|
56
57
|
|
|
57
58
|
Args:
|
|
@@ -297,7 +298,7 @@ class BaseClient:
|
|
|
297
298
|
def process_response(
|
|
298
299
|
self,
|
|
299
300
|
*,
|
|
300
|
-
response
|
|
301
|
+
response: httpx.Response,
|
|
301
302
|
cast_to: Union[Type[T], Any],
|
|
302
303
|
) -> T:
|
|
303
304
|
"""Process an HTTP response and convert it to the desired type.
|
|
@@ -325,8 +326,8 @@ class BaseClient:
|
|
|
325
326
|
|
|
326
327
|
if response_type == "json":
|
|
327
328
|
if cast_to is type(Any):
|
|
328
|
-
return response.json()
|
|
329
|
-
return from_encodable(
|
|
329
|
+
return response.json() # type: ignore[no-any-return]
|
|
330
|
+
return from_encodable( # type: ignore[no-any-return]
|
|
330
331
|
data=response.json(), load_with=filter_binary_response(cast_to=cast_to)
|
|
331
332
|
)
|
|
332
333
|
elif response_type == "text":
|