magic_hour 0.29.0__tar.gz → 0.30.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.29.0 → magic_hour-0.30.1}/PKG-INFO +6 -1
- {magic_hour-0.29.0 → magic_hour-0.30.1}/README.md +5 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/environment.py +1 -1
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/resources/v1/client.py +6 -0
- magic_hour-0.30.1/magic_hour/resources/v1/face_detection/README.md +91 -0
- magic_hour-0.30.1/magic_hour/resources/v1/face_detection/__init__.py +4 -0
- magic_hour-0.30.1/magic_hour/resources/v1/face_detection/client.py +193 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/types/models/__init__.py +8 -0
- magic_hour-0.30.1/magic_hour/types/models/v1_face_detection_create_response.py +25 -0
- magic_hour-0.30.1/magic_hour/types/models/v1_face_detection_get_response.py +45 -0
- magic_hour-0.30.1/magic_hour/types/models/v1_face_detection_get_response_faces_item.py +25 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/types/params/__init__.py +12 -0
- magic_hour-0.30.1/magic_hour/types/params/v1_face_detection_create_body.py +44 -0
- magic_hour-0.30.1/magic_hour/types/params/v1_face_detection_create_body_assets.py +28 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/pyproject.toml +1 -1
- {magic_hour-0.29.0 → magic_hour-0.30.1}/LICENSE +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/__init__.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/client.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/core/__init__.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/core/api_error.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/core/auth.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/core/base_client.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/core/binary_response.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/core/query.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/core/request.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/core/response.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/core/type_utils.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/core/utils.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/resources/v1/__init__.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/resources/v1/ai_clothes_changer/README.md +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/resources/v1/ai_clothes_changer/__init__.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/resources/v1/ai_clothes_changer/client.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/resources/v1/ai_face_editor/README.md +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/resources/v1/ai_face_editor/__init__.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/resources/v1/ai_face_editor/client.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/resources/v1/ai_gif_generator/README.md +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/resources/v1/ai_gif_generator/__init__.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/resources/v1/ai_gif_generator/client.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/resources/v1/ai_headshot_generator/README.md +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/resources/v1/ai_headshot_generator/__init__.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/resources/v1/ai_headshot_generator/client.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/resources/v1/ai_image_editor/README.md +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/resources/v1/ai_image_editor/__init__.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/resources/v1/ai_image_editor/client.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/resources/v1/ai_image_generator/README.md +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/resources/v1/ai_image_generator/__init__.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/resources/v1/ai_image_generator/client.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/resources/v1/ai_image_upscaler/README.md +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/resources/v1/ai_image_upscaler/__init__.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/resources/v1/ai_image_upscaler/client.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/resources/v1/ai_meme_generator/README.md +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/resources/v1/ai_meme_generator/__init__.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/resources/v1/ai_meme_generator/client.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/resources/v1/ai_photo_editor/README.md +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/resources/v1/ai_photo_editor/__init__.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/resources/v1/ai_photo_editor/client.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/resources/v1/ai_qr_code_generator/README.md +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/resources/v1/ai_qr_code_generator/__init__.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/resources/v1/ai_qr_code_generator/client.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/resources/v1/ai_talking_photo/README.md +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/resources/v1/ai_talking_photo/__init__.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/resources/v1/ai_talking_photo/client.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/resources/v1/animation/README.md +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/resources/v1/animation/__init__.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/resources/v1/animation/client.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/resources/v1/auto_subtitle_generator/README.md +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/resources/v1/auto_subtitle_generator/__init__.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/resources/v1/auto_subtitle_generator/client.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/resources/v1/face_swap/README.md +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/resources/v1/face_swap/__init__.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/resources/v1/face_swap/client.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/resources/v1/face_swap_photo/README.md +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/resources/v1/face_swap_photo/__init__.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/resources/v1/face_swap_photo/client.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/resources/v1/files/__init__.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/resources/v1/files/client.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/resources/v1/files/upload_urls/README.md +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/resources/v1/files/upload_urls/__init__.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/resources/v1/files/upload_urls/client.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/resources/v1/image_background_remover/README.md +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/resources/v1/image_background_remover/__init__.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/resources/v1/image_background_remover/client.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/resources/v1/image_projects/README.md +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/resources/v1/image_projects/__init__.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/resources/v1/image_projects/client.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/resources/v1/image_to_video/README.md +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/resources/v1/image_to_video/__init__.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/resources/v1/image_to_video/client.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/resources/v1/lip_sync/README.md +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/resources/v1/lip_sync/__init__.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/resources/v1/lip_sync/client.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/resources/v1/photo_colorizer/README.md +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/resources/v1/photo_colorizer/__init__.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/resources/v1/photo_colorizer/client.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/resources/v1/text_to_video/README.md +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/resources/v1/text_to_video/__init__.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/resources/v1/text_to_video/client.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/resources/v1/video_projects/README.md +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/resources/v1/video_projects/__init__.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/resources/v1/video_projects/client.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/resources/v1/video_to_video/README.md +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/resources/v1/video_to_video/__init__.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/resources/v1/video_to_video/client.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/types/models/v1_ai_clothes_changer_create_response.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/types/models/v1_ai_face_editor_create_response.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/types/models/v1_ai_gif_generator_create_response.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/types/models/v1_ai_headshot_generator_create_response.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/types/models/v1_ai_image_editor_create_response.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/types/models/v1_ai_image_generator_create_response.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/types/models/v1_ai_image_upscaler_create_response.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/types/models/v1_ai_meme_generator_create_response.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/types/models/v1_ai_photo_editor_create_response.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/types/models/v1_ai_qr_code_generator_create_response.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/types/models/v1_ai_talking_photo_create_response.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/types/models/v1_animation_create_response.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/types/models/v1_auto_subtitle_generator_create_response.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/types/models/v1_face_swap_create_response.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/types/models/v1_face_swap_photo_create_response.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/types/models/v1_files_upload_urls_create_response.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/types/models/v1_files_upload_urls_create_response_items_item.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/types/models/v1_image_background_remover_create_response.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/types/models/v1_image_projects_get_response.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/types/models/v1_image_projects_get_response_downloads_item.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/types/models/v1_image_projects_get_response_error.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/types/models/v1_image_to_video_create_response.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/types/models/v1_lip_sync_create_response.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/types/models/v1_photo_colorizer_create_response.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/types/models/v1_text_to_video_create_response.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/types/models/v1_video_projects_get_response.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/types/models/v1_video_projects_get_response_download.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/types/models/v1_video_projects_get_response_downloads_item.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/types/models/v1_video_projects_get_response_error.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/types/models/v1_video_to_video_create_response.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/types/params/v1_ai_clothes_changer_create_body.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/types/params/v1_ai_clothes_changer_create_body_assets.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/types/params/v1_ai_face_editor_create_body.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/types/params/v1_ai_face_editor_create_body_assets.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/types/params/v1_ai_face_editor_create_body_style.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/types/params/v1_ai_gif_generator_create_body.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/types/params/v1_ai_gif_generator_create_body_style.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/types/params/v1_ai_headshot_generator_create_body.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/types/params/v1_ai_headshot_generator_create_body_assets.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/types/params/v1_ai_headshot_generator_create_body_style.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/types/params/v1_ai_image_editor_create_body.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/types/params/v1_ai_image_editor_create_body_assets.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/types/params/v1_ai_image_editor_create_body_style.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/types/params/v1_ai_image_generator_create_body.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/types/params/v1_ai_image_generator_create_body_style.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/types/params/v1_ai_image_upscaler_create_body.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/types/params/v1_ai_image_upscaler_create_body_assets.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/types/params/v1_ai_image_upscaler_create_body_style.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/types/params/v1_ai_meme_generator_create_body.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/types/params/v1_ai_meme_generator_create_body_style.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/types/params/v1_ai_photo_editor_create_body.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/types/params/v1_ai_photo_editor_create_body_assets.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/types/params/v1_ai_photo_editor_create_body_style.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/types/params/v1_ai_qr_code_generator_create_body.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/types/params/v1_ai_qr_code_generator_create_body_style.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/types/params/v1_ai_talking_photo_create_body.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/types/params/v1_ai_talking_photo_create_body_assets.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/types/params/v1_ai_talking_photo_create_body_style.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/types/params/v1_animation_create_body.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/types/params/v1_animation_create_body_assets.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/types/params/v1_animation_create_body_style.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/types/params/v1_auto_subtitle_generator_create_body.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/types/params/v1_auto_subtitle_generator_create_body_assets.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/types/params/v1_auto_subtitle_generator_create_body_style.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/types/params/v1_auto_subtitle_generator_create_body_style_custom_config.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/types/params/v1_face_swap_create_body.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/types/params/v1_face_swap_create_body_assets.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/types/params/v1_face_swap_photo_create_body.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/types/params/v1_face_swap_photo_create_body_assets.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/types/params/v1_face_swap_photo_create_body_assets_face_mappings_item.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/types/params/v1_files_upload_urls_create_body.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/types/params/v1_files_upload_urls_create_body_items_item.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/types/params/v1_image_background_remover_create_body.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/types/params/v1_image_background_remover_create_body_assets.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/types/params/v1_image_to_video_create_body.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/types/params/v1_image_to_video_create_body_assets.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/types/params/v1_image_to_video_create_body_style.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/types/params/v1_lip_sync_create_body.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/types/params/v1_lip_sync_create_body_assets.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/types/params/v1_photo_colorizer_create_body.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/types/params/v1_photo_colorizer_create_body_assets.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/types/params/v1_text_to_video_create_body.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/types/params/v1_text_to_video_create_body_style.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/types/params/v1_video_to_video_create_body.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/types/params/v1_video_to_video_create_body_assets.py +0 -0
- {magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/types/params/v1_video_to_video_create_body_style.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: magic_hour
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.30.1
|
|
4
4
|
Summary: Python SDK for Magic Hour API
|
|
5
5
|
Requires-Python: >=3.8,<4.0
|
|
6
6
|
Classifier: Programming Language :: Python :: 3
|
|
@@ -111,6 +111,11 @@ client = AsyncClient(token="my api key")
|
|
|
111
111
|
|
|
112
112
|
* [create](magic_hour/resources/v1/auto_subtitle_generator/README.md#create) - Auto Subtitle Generator
|
|
113
113
|
|
|
114
|
+
### [v1.face_detection](magic_hour/resources/v1/face_detection/README.md)
|
|
115
|
+
|
|
116
|
+
* [create](magic_hour/resources/v1/face_detection/README.md#create) - Face Detection
|
|
117
|
+
* [get](magic_hour/resources/v1/face_detection/README.md#get) - Get face detection details
|
|
118
|
+
|
|
114
119
|
### [v1.face_swap](magic_hour/resources/v1/face_swap/README.md)
|
|
115
120
|
|
|
116
121
|
* [create](magic_hour/resources/v1/face_swap/README.md#create) - Face Swap video
|
|
@@ -93,6 +93,11 @@ client = AsyncClient(token="my api key")
|
|
|
93
93
|
|
|
94
94
|
* [create](magic_hour/resources/v1/auto_subtitle_generator/README.md#create) - Auto Subtitle Generator
|
|
95
95
|
|
|
96
|
+
### [v1.face_detection](magic_hour/resources/v1/face_detection/README.md)
|
|
97
|
+
|
|
98
|
+
* [create](magic_hour/resources/v1/face_detection/README.md#create) - Face Detection
|
|
99
|
+
* [get](magic_hour/resources/v1/face_detection/README.md#get) - Get face detection details
|
|
100
|
+
|
|
96
101
|
### [v1.face_swap](magic_hour/resources/v1/face_swap/README.md)
|
|
97
102
|
|
|
98
103
|
* [create](magic_hour/resources/v1/face_swap/README.md#create) - Face Swap video
|
|
@@ -6,7 +6,7 @@ class Environment(enum.Enum):
|
|
|
6
6
|
"""Pre-defined base URLs for the API"""
|
|
7
7
|
|
|
8
8
|
ENVIRONMENT = "https://api.magichour.ai"
|
|
9
|
-
MOCK_SERVER = "https://api.sideko.dev/v1/mock/magichour/magic-hour/0.
|
|
9
|
+
MOCK_SERVER = "https://api.sideko.dev/v1/mock/magichour/magic-hour/0.30.1"
|
|
10
10
|
|
|
11
11
|
|
|
12
12
|
def _get_base_url(
|
|
@@ -48,6 +48,10 @@ from magic_hour.resources.v1.auto_subtitle_generator import (
|
|
|
48
48
|
AsyncAutoSubtitleGeneratorClient,
|
|
49
49
|
AutoSubtitleGeneratorClient,
|
|
50
50
|
)
|
|
51
|
+
from magic_hour.resources.v1.face_detection import (
|
|
52
|
+
AsyncFaceDetectionClient,
|
|
53
|
+
FaceDetectionClient,
|
|
54
|
+
)
|
|
51
55
|
from magic_hour.resources.v1.face_swap import AsyncFaceSwapClient, FaceSwapClient
|
|
52
56
|
from magic_hour.resources.v1.face_swap_photo import (
|
|
53
57
|
AsyncFaceSwapPhotoClient,
|
|
@@ -90,6 +94,7 @@ class V1Client:
|
|
|
90
94
|
self._base_client = base_client
|
|
91
95
|
self.image_projects = ImageProjectsClient(base_client=self._base_client)
|
|
92
96
|
self.video_projects = VideoProjectsClient(base_client=self._base_client)
|
|
97
|
+
self.face_detection = FaceDetectionClient(base_client=self._base_client)
|
|
93
98
|
self.ai_clothes_changer = AiClothesChangerClient(base_client=self._base_client)
|
|
94
99
|
self.ai_face_editor = AiFaceEditorClient(base_client=self._base_client)
|
|
95
100
|
self.ai_gif_generator = AiGifGeneratorClient(base_client=self._base_client)
|
|
@@ -127,6 +132,7 @@ class AsyncV1Client:
|
|
|
127
132
|
self._base_client = base_client
|
|
128
133
|
self.image_projects = AsyncImageProjectsClient(base_client=self._base_client)
|
|
129
134
|
self.video_projects = AsyncVideoProjectsClient(base_client=self._base_client)
|
|
135
|
+
self.face_detection = AsyncFaceDetectionClient(base_client=self._base_client)
|
|
130
136
|
self.ai_clothes_changer = AsyncAiClothesChangerClient(
|
|
131
137
|
base_client=self._base_client
|
|
132
138
|
)
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
|
|
2
|
+
### Get face detection details <a name="get"></a>
|
|
3
|
+
|
|
4
|
+
Get the details of a face detection task.
|
|
5
|
+
|
|
6
|
+
**API Endpoint**: `GET /v1/face-detection/{id}`
|
|
7
|
+
|
|
8
|
+
#### Parameters
|
|
9
|
+
|
|
10
|
+
| Parameter | Required | Description | Example |
|
|
11
|
+
|-----------|:--------:|-------------|--------|
|
|
12
|
+
| `id` | ✓ | The id of the task | `"string"` |
|
|
13
|
+
|
|
14
|
+
#### Synchronous Client
|
|
15
|
+
|
|
16
|
+
```python
|
|
17
|
+
from magic_hour import Client
|
|
18
|
+
from os import getenv
|
|
19
|
+
|
|
20
|
+
client = Client(token=getenv("API_TOKEN"))
|
|
21
|
+
res = client.v1.face_detection.get(id="string")
|
|
22
|
+
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
#### Asynchronous Client
|
|
26
|
+
|
|
27
|
+
```python
|
|
28
|
+
from magic_hour import AsyncClient
|
|
29
|
+
from os import getenv
|
|
30
|
+
|
|
31
|
+
client = AsyncClient(token=getenv("API_TOKEN"))
|
|
32
|
+
res = await client.v1.face_detection.get(id="string")
|
|
33
|
+
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
#### Response
|
|
37
|
+
|
|
38
|
+
##### Type
|
|
39
|
+
[V1FaceDetectionGetResponse](/magic_hour/types/models/v1_face_detection_get_response.py)
|
|
40
|
+
|
|
41
|
+
##### Example
|
|
42
|
+
`{"credits_charged": 123, "faces": [{"path": "api-assets/id/0-0.png", "url": "https://videos.magichour.ai/api-assets/id/0-0.png"}], "id": "string", "status": "complete"}`
|
|
43
|
+
|
|
44
|
+
### Face Detection <a name="create"></a>
|
|
45
|
+
|
|
46
|
+
Detect faces in an image or video.
|
|
47
|
+
|
|
48
|
+
Note: Face detection is free to use for the near future. Pricing may change in the future.
|
|
49
|
+
|
|
50
|
+
**API Endpoint**: `POST /v1/face-detection`
|
|
51
|
+
|
|
52
|
+
#### Parameters
|
|
53
|
+
|
|
54
|
+
| Parameter | Required | Description | Example |
|
|
55
|
+
|-----------|:--------:|-------------|--------|
|
|
56
|
+
| `assets` | ✓ | Provide the assets for face detection | `{"target_file_path": "api-assets/id/1234.png"}` |
|
|
57
|
+
| `confidence_score` | ✗ | Confidence threshold for filtering detected faces. * Higher values (e.g., 0.9) include only faces detected with high certainty, reducing false positives. * Lower values (e.g., 0.3) include more faces, but may increase the chance of incorrect detections. | `0.5` |
|
|
58
|
+
|
|
59
|
+
#### Synchronous Client
|
|
60
|
+
|
|
61
|
+
```python
|
|
62
|
+
from magic_hour import Client
|
|
63
|
+
from os import getenv
|
|
64
|
+
|
|
65
|
+
client = Client(token=getenv("API_TOKEN"))
|
|
66
|
+
res = client.v1.face_detection.create(
|
|
67
|
+
assets={"target_file_path": "api-assets/id/1234.png"}, confidence_score=0.5
|
|
68
|
+
)
|
|
69
|
+
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
#### Asynchronous Client
|
|
73
|
+
|
|
74
|
+
```python
|
|
75
|
+
from magic_hour import AsyncClient
|
|
76
|
+
from os import getenv
|
|
77
|
+
|
|
78
|
+
client = AsyncClient(token=getenv("API_TOKEN"))
|
|
79
|
+
res = await client.v1.face_detection.create(
|
|
80
|
+
assets={"target_file_path": "api-assets/id/1234.png"}, confidence_score=0.5
|
|
81
|
+
)
|
|
82
|
+
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
#### Response
|
|
86
|
+
|
|
87
|
+
##### Type
|
|
88
|
+
[V1FaceDetectionCreateResponse](/magic_hour/types/models/v1_face_detection_create_response.py)
|
|
89
|
+
|
|
90
|
+
##### Example
|
|
91
|
+
`{"credits_charged": 123, "id": "string"}`
|
|
@@ -0,0 +1,193 @@
|
|
|
1
|
+
import typing
|
|
2
|
+
|
|
3
|
+
from magic_hour.core import (
|
|
4
|
+
AsyncBaseClient,
|
|
5
|
+
RequestOptions,
|
|
6
|
+
SyncBaseClient,
|
|
7
|
+
default_request_options,
|
|
8
|
+
to_encodable,
|
|
9
|
+
type_utils,
|
|
10
|
+
)
|
|
11
|
+
from magic_hour.types import models, params
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
class FaceDetectionClient:
|
|
15
|
+
def __init__(self, *, base_client: SyncBaseClient):
|
|
16
|
+
self._base_client = base_client
|
|
17
|
+
|
|
18
|
+
def get(
|
|
19
|
+
self, *, id: str, request_options: typing.Optional[RequestOptions] = None
|
|
20
|
+
) -> models.V1FaceDetectionGetResponse:
|
|
21
|
+
"""
|
|
22
|
+
Get face detection details
|
|
23
|
+
|
|
24
|
+
Get the details of a face detection task.
|
|
25
|
+
|
|
26
|
+
GET /v1/face-detection/{id}
|
|
27
|
+
|
|
28
|
+
Args:
|
|
29
|
+
id: The id of the task
|
|
30
|
+
request_options: Additional options to customize the HTTP request
|
|
31
|
+
|
|
32
|
+
Returns:
|
|
33
|
+
200
|
|
34
|
+
|
|
35
|
+
Raises:
|
|
36
|
+
ApiError: A custom exception class that provides additional context
|
|
37
|
+
for API errors, including the HTTP status code and response body.
|
|
38
|
+
|
|
39
|
+
Examples:
|
|
40
|
+
```py
|
|
41
|
+
client.v1.face_detection.get(id="string")
|
|
42
|
+
```
|
|
43
|
+
"""
|
|
44
|
+
return self._base_client.request(
|
|
45
|
+
method="GET",
|
|
46
|
+
path=f"/v1/face-detection/{id}",
|
|
47
|
+
auth_names=["bearerAuth"],
|
|
48
|
+
cast_to=models.V1FaceDetectionGetResponse,
|
|
49
|
+
request_options=request_options or default_request_options(),
|
|
50
|
+
)
|
|
51
|
+
|
|
52
|
+
def create(
|
|
53
|
+
self,
|
|
54
|
+
*,
|
|
55
|
+
assets: params.V1FaceDetectionCreateBodyAssets,
|
|
56
|
+
confidence_score: typing.Union[
|
|
57
|
+
typing.Optional[float], type_utils.NotGiven
|
|
58
|
+
] = type_utils.NOT_GIVEN,
|
|
59
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
60
|
+
) -> models.V1FaceDetectionCreateResponse:
|
|
61
|
+
"""
|
|
62
|
+
Face Detection
|
|
63
|
+
|
|
64
|
+
Detect faces in an image or video.
|
|
65
|
+
|
|
66
|
+
Note: Face detection is free to use for the near future. Pricing may change in the future.
|
|
67
|
+
|
|
68
|
+
POST /v1/face-detection
|
|
69
|
+
|
|
70
|
+
Args:
|
|
71
|
+
confidence_score: Confidence threshold for filtering detected faces.
|
|
72
|
+
* Higher values (e.g., 0.9) include only faces detected with high certainty, reducing false positives.
|
|
73
|
+
* Lower values (e.g., 0.3) include more faces, but may increase the chance of incorrect detections.
|
|
74
|
+
assets: Provide the assets for face detection
|
|
75
|
+
request_options: Additional options to customize the HTTP request
|
|
76
|
+
|
|
77
|
+
Returns:
|
|
78
|
+
200
|
|
79
|
+
|
|
80
|
+
Raises:
|
|
81
|
+
ApiError: A custom exception class that provides additional context
|
|
82
|
+
for API errors, including the HTTP status code and response body.
|
|
83
|
+
|
|
84
|
+
Examples:
|
|
85
|
+
```py
|
|
86
|
+
client.v1.face_detection.create(
|
|
87
|
+
assets={"target_file_path": "api-assets/id/1234.png"}, confidence_score=0.5
|
|
88
|
+
)
|
|
89
|
+
```
|
|
90
|
+
"""
|
|
91
|
+
_json = to_encodable(
|
|
92
|
+
item={"confidence_score": confidence_score, "assets": assets},
|
|
93
|
+
dump_with=params._SerializerV1FaceDetectionCreateBody,
|
|
94
|
+
)
|
|
95
|
+
return self._base_client.request(
|
|
96
|
+
method="POST",
|
|
97
|
+
path="/v1/face-detection",
|
|
98
|
+
auth_names=["bearerAuth"],
|
|
99
|
+
json=_json,
|
|
100
|
+
cast_to=models.V1FaceDetectionCreateResponse,
|
|
101
|
+
request_options=request_options or default_request_options(),
|
|
102
|
+
)
|
|
103
|
+
|
|
104
|
+
|
|
105
|
+
class AsyncFaceDetectionClient:
|
|
106
|
+
def __init__(self, *, base_client: AsyncBaseClient):
|
|
107
|
+
self._base_client = base_client
|
|
108
|
+
|
|
109
|
+
async def get(
|
|
110
|
+
self, *, id: str, request_options: typing.Optional[RequestOptions] = None
|
|
111
|
+
) -> models.V1FaceDetectionGetResponse:
|
|
112
|
+
"""
|
|
113
|
+
Get face detection details
|
|
114
|
+
|
|
115
|
+
Get the details of a face detection task.
|
|
116
|
+
|
|
117
|
+
GET /v1/face-detection/{id}
|
|
118
|
+
|
|
119
|
+
Args:
|
|
120
|
+
id: The id of the task
|
|
121
|
+
request_options: Additional options to customize the HTTP request
|
|
122
|
+
|
|
123
|
+
Returns:
|
|
124
|
+
200
|
|
125
|
+
|
|
126
|
+
Raises:
|
|
127
|
+
ApiError: A custom exception class that provides additional context
|
|
128
|
+
for API errors, including the HTTP status code and response body.
|
|
129
|
+
|
|
130
|
+
Examples:
|
|
131
|
+
```py
|
|
132
|
+
await client.v1.face_detection.get(id="string")
|
|
133
|
+
```
|
|
134
|
+
"""
|
|
135
|
+
return await self._base_client.request(
|
|
136
|
+
method="GET",
|
|
137
|
+
path=f"/v1/face-detection/{id}",
|
|
138
|
+
auth_names=["bearerAuth"],
|
|
139
|
+
cast_to=models.V1FaceDetectionGetResponse,
|
|
140
|
+
request_options=request_options or default_request_options(),
|
|
141
|
+
)
|
|
142
|
+
|
|
143
|
+
async def create(
|
|
144
|
+
self,
|
|
145
|
+
*,
|
|
146
|
+
assets: params.V1FaceDetectionCreateBodyAssets,
|
|
147
|
+
confidence_score: typing.Union[
|
|
148
|
+
typing.Optional[float], type_utils.NotGiven
|
|
149
|
+
] = type_utils.NOT_GIVEN,
|
|
150
|
+
request_options: typing.Optional[RequestOptions] = None,
|
|
151
|
+
) -> models.V1FaceDetectionCreateResponse:
|
|
152
|
+
"""
|
|
153
|
+
Face Detection
|
|
154
|
+
|
|
155
|
+
Detect faces in an image or video.
|
|
156
|
+
|
|
157
|
+
Note: Face detection is free to use for the near future. Pricing may change in the future.
|
|
158
|
+
|
|
159
|
+
POST /v1/face-detection
|
|
160
|
+
|
|
161
|
+
Args:
|
|
162
|
+
confidence_score: Confidence threshold for filtering detected faces.
|
|
163
|
+
* Higher values (e.g., 0.9) include only faces detected with high certainty, reducing false positives.
|
|
164
|
+
* Lower values (e.g., 0.3) include more faces, but may increase the chance of incorrect detections.
|
|
165
|
+
assets: Provide the assets for face detection
|
|
166
|
+
request_options: Additional options to customize the HTTP request
|
|
167
|
+
|
|
168
|
+
Returns:
|
|
169
|
+
200
|
|
170
|
+
|
|
171
|
+
Raises:
|
|
172
|
+
ApiError: A custom exception class that provides additional context
|
|
173
|
+
for API errors, including the HTTP status code and response body.
|
|
174
|
+
|
|
175
|
+
Examples:
|
|
176
|
+
```py
|
|
177
|
+
await client.v1.face_detection.create(
|
|
178
|
+
assets={"target_file_path": "api-assets/id/1234.png"}, confidence_score=0.5
|
|
179
|
+
)
|
|
180
|
+
```
|
|
181
|
+
"""
|
|
182
|
+
_json = to_encodable(
|
|
183
|
+
item={"confidence_score": confidence_score, "assets": assets},
|
|
184
|
+
dump_with=params._SerializerV1FaceDetectionCreateBody,
|
|
185
|
+
)
|
|
186
|
+
return await self._base_client.request(
|
|
187
|
+
method="POST",
|
|
188
|
+
path="/v1/face-detection",
|
|
189
|
+
auth_names=["bearerAuth"],
|
|
190
|
+
json=_json,
|
|
191
|
+
cast_to=models.V1FaceDetectionCreateResponse,
|
|
192
|
+
request_options=request_options or default_request_options(),
|
|
193
|
+
)
|
|
@@ -15,6 +15,11 @@ from .v1_animation_create_response import V1AnimationCreateResponse
|
|
|
15
15
|
from .v1_auto_subtitle_generator_create_response import (
|
|
16
16
|
V1AutoSubtitleGeneratorCreateResponse,
|
|
17
17
|
)
|
|
18
|
+
from .v1_face_detection_create_response import V1FaceDetectionCreateResponse
|
|
19
|
+
from .v1_face_detection_get_response import V1FaceDetectionGetResponse
|
|
20
|
+
from .v1_face_detection_get_response_faces_item import (
|
|
21
|
+
V1FaceDetectionGetResponseFacesItem,
|
|
22
|
+
)
|
|
18
23
|
from .v1_face_swap_create_response import V1FaceSwapCreateResponse
|
|
19
24
|
from .v1_face_swap_photo_create_response import V1FaceSwapPhotoCreateResponse
|
|
20
25
|
from .v1_files_upload_urls_create_response import V1FilesUploadUrlsCreateResponse
|
|
@@ -56,6 +61,9 @@ __all__ = [
|
|
|
56
61
|
"V1AiTalkingPhotoCreateResponse",
|
|
57
62
|
"V1AnimationCreateResponse",
|
|
58
63
|
"V1AutoSubtitleGeneratorCreateResponse",
|
|
64
|
+
"V1FaceDetectionCreateResponse",
|
|
65
|
+
"V1FaceDetectionGetResponse",
|
|
66
|
+
"V1FaceDetectionGetResponseFacesItem",
|
|
59
67
|
"V1FaceSwapCreateResponse",
|
|
60
68
|
"V1FaceSwapPhotoCreateResponse",
|
|
61
69
|
"V1FilesUploadUrlsCreateResponse",
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import pydantic
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class V1FaceDetectionCreateResponse(pydantic.BaseModel):
|
|
5
|
+
"""
|
|
6
|
+
V1FaceDetectionCreateResponse
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
model_config = pydantic.ConfigDict(
|
|
10
|
+
arbitrary_types_allowed=True,
|
|
11
|
+
populate_by_name=True,
|
|
12
|
+
)
|
|
13
|
+
|
|
14
|
+
credits_charged: int = pydantic.Field(
|
|
15
|
+
alias="credits_charged",
|
|
16
|
+
)
|
|
17
|
+
"""
|
|
18
|
+
The credits charged for the task.
|
|
19
|
+
"""
|
|
20
|
+
id: str = pydantic.Field(
|
|
21
|
+
alias="id",
|
|
22
|
+
)
|
|
23
|
+
"""
|
|
24
|
+
The id of the task
|
|
25
|
+
"""
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import pydantic
|
|
2
|
+
import typing
|
|
3
|
+
import typing_extensions
|
|
4
|
+
|
|
5
|
+
from .v1_face_detection_get_response_faces_item import (
|
|
6
|
+
V1FaceDetectionGetResponseFacesItem,
|
|
7
|
+
)
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
class V1FaceDetectionGetResponse(pydantic.BaseModel):
|
|
11
|
+
"""
|
|
12
|
+
V1FaceDetectionGetResponse
|
|
13
|
+
"""
|
|
14
|
+
|
|
15
|
+
model_config = pydantic.ConfigDict(
|
|
16
|
+
arbitrary_types_allowed=True,
|
|
17
|
+
populate_by_name=True,
|
|
18
|
+
)
|
|
19
|
+
|
|
20
|
+
credits_charged: int = pydantic.Field(
|
|
21
|
+
alias="credits_charged",
|
|
22
|
+
)
|
|
23
|
+
"""
|
|
24
|
+
The credits charged for the task.
|
|
25
|
+
"""
|
|
26
|
+
faces: typing.List[V1FaceDetectionGetResponseFacesItem] = pydantic.Field(
|
|
27
|
+
alias="faces",
|
|
28
|
+
)
|
|
29
|
+
"""
|
|
30
|
+
The faces detected in the image or video. The list is populated as faces are detected.
|
|
31
|
+
"""
|
|
32
|
+
id: str = pydantic.Field(
|
|
33
|
+
alias="id",
|
|
34
|
+
)
|
|
35
|
+
"""
|
|
36
|
+
The id of the task
|
|
37
|
+
"""
|
|
38
|
+
status: typing_extensions.Literal["complete", "error", "queued", "rendering"] = (
|
|
39
|
+
pydantic.Field(
|
|
40
|
+
alias="status",
|
|
41
|
+
)
|
|
42
|
+
)
|
|
43
|
+
"""
|
|
44
|
+
The status of the detection.
|
|
45
|
+
"""
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import pydantic
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
class V1FaceDetectionGetResponseFacesItem(pydantic.BaseModel):
|
|
5
|
+
"""
|
|
6
|
+
V1FaceDetectionGetResponseFacesItem
|
|
7
|
+
"""
|
|
8
|
+
|
|
9
|
+
model_config = pydantic.ConfigDict(
|
|
10
|
+
arbitrary_types_allowed=True,
|
|
11
|
+
populate_by_name=True,
|
|
12
|
+
)
|
|
13
|
+
|
|
14
|
+
path: str = pydantic.Field(
|
|
15
|
+
alias="path",
|
|
16
|
+
)
|
|
17
|
+
"""
|
|
18
|
+
The path to the face image. This should be used in face swap photo/video API calls as `.assets.face_mappings.original_face`
|
|
19
|
+
"""
|
|
20
|
+
url: str = pydantic.Field(
|
|
21
|
+
alias="url",
|
|
22
|
+
)
|
|
23
|
+
"""
|
|
24
|
+
The url to the face image. This is used to render the image in your applications.
|
|
25
|
+
"""
|
|
@@ -138,6 +138,14 @@ from .v1_auto_subtitle_generator_create_body_style_custom_config import (
|
|
|
138
138
|
V1AutoSubtitleGeneratorCreateBodyStyleCustomConfig,
|
|
139
139
|
_SerializerV1AutoSubtitleGeneratorCreateBodyStyleCustomConfig,
|
|
140
140
|
)
|
|
141
|
+
from .v1_face_detection_create_body import (
|
|
142
|
+
V1FaceDetectionCreateBody,
|
|
143
|
+
_SerializerV1FaceDetectionCreateBody,
|
|
144
|
+
)
|
|
145
|
+
from .v1_face_detection_create_body_assets import (
|
|
146
|
+
V1FaceDetectionCreateBodyAssets,
|
|
147
|
+
_SerializerV1FaceDetectionCreateBodyAssets,
|
|
148
|
+
)
|
|
141
149
|
from .v1_face_swap_create_body import (
|
|
142
150
|
V1FaceSwapCreateBody,
|
|
143
151
|
_SerializerV1FaceSwapCreateBody,
|
|
@@ -257,6 +265,8 @@ __all__ = [
|
|
|
257
265
|
"V1AutoSubtitleGeneratorCreateBodyAssets",
|
|
258
266
|
"V1AutoSubtitleGeneratorCreateBodyStyle",
|
|
259
267
|
"V1AutoSubtitleGeneratorCreateBodyStyleCustomConfig",
|
|
268
|
+
"V1FaceDetectionCreateBody",
|
|
269
|
+
"V1FaceDetectionCreateBodyAssets",
|
|
260
270
|
"V1FaceSwapCreateBody",
|
|
261
271
|
"V1FaceSwapCreateBodyAssets",
|
|
262
272
|
"V1FaceSwapPhotoCreateBody",
|
|
@@ -313,6 +323,8 @@ __all__ = [
|
|
|
313
323
|
"_SerializerV1AutoSubtitleGeneratorCreateBodyAssets",
|
|
314
324
|
"_SerializerV1AutoSubtitleGeneratorCreateBodyStyle",
|
|
315
325
|
"_SerializerV1AutoSubtitleGeneratorCreateBodyStyleCustomConfig",
|
|
326
|
+
"_SerializerV1FaceDetectionCreateBody",
|
|
327
|
+
"_SerializerV1FaceDetectionCreateBodyAssets",
|
|
316
328
|
"_SerializerV1FaceSwapCreateBody",
|
|
317
329
|
"_SerializerV1FaceSwapCreateBodyAssets",
|
|
318
330
|
"_SerializerV1FaceSwapPhotoCreateBody",
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import pydantic
|
|
2
|
+
import typing
|
|
3
|
+
import typing_extensions
|
|
4
|
+
|
|
5
|
+
from .v1_face_detection_create_body_assets import (
|
|
6
|
+
V1FaceDetectionCreateBodyAssets,
|
|
7
|
+
_SerializerV1FaceDetectionCreateBodyAssets,
|
|
8
|
+
)
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
class V1FaceDetectionCreateBody(typing_extensions.TypedDict):
|
|
12
|
+
"""
|
|
13
|
+
V1FaceDetectionCreateBody
|
|
14
|
+
"""
|
|
15
|
+
|
|
16
|
+
assets: typing_extensions.Required[V1FaceDetectionCreateBodyAssets]
|
|
17
|
+
"""
|
|
18
|
+
Provide the assets for face detection
|
|
19
|
+
"""
|
|
20
|
+
|
|
21
|
+
confidence_score: typing_extensions.NotRequired[float]
|
|
22
|
+
"""
|
|
23
|
+
Confidence threshold for filtering detected faces.
|
|
24
|
+
* Higher values (e.g., 0.9) include only faces detected with high certainty, reducing false positives.
|
|
25
|
+
* Lower values (e.g., 0.3) include more faces, but may increase the chance of incorrect detections.
|
|
26
|
+
"""
|
|
27
|
+
|
|
28
|
+
|
|
29
|
+
class _SerializerV1FaceDetectionCreateBody(pydantic.BaseModel):
|
|
30
|
+
"""
|
|
31
|
+
Serializer for V1FaceDetectionCreateBody handling case conversions
|
|
32
|
+
and file omissions as dictated by the API
|
|
33
|
+
"""
|
|
34
|
+
|
|
35
|
+
model_config = pydantic.ConfigDict(
|
|
36
|
+
populate_by_name=True,
|
|
37
|
+
)
|
|
38
|
+
|
|
39
|
+
assets: _SerializerV1FaceDetectionCreateBodyAssets = pydantic.Field(
|
|
40
|
+
alias="assets",
|
|
41
|
+
)
|
|
42
|
+
confidence_score: typing.Optional[float] = pydantic.Field(
|
|
43
|
+
alias="confidence_score", default=None
|
|
44
|
+
)
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import pydantic
|
|
2
|
+
import typing_extensions
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
class V1FaceDetectionCreateBodyAssets(typing_extensions.TypedDict):
|
|
6
|
+
"""
|
|
7
|
+
Provide the assets for face detection
|
|
8
|
+
"""
|
|
9
|
+
|
|
10
|
+
target_file_path: typing_extensions.Required[str]
|
|
11
|
+
"""
|
|
12
|
+
This is the image or video where the face will be detected. 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 _SerializerV1FaceDetectionCreateBodyAssets(pydantic.BaseModel):
|
|
17
|
+
"""
|
|
18
|
+
Serializer for V1FaceDetectionCreateBodyAssets 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
|
+
target_file_path: str = pydantic.Field(
|
|
27
|
+
alias="target_file_path",
|
|
28
|
+
)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/resources/v1/ai_clothes_changer/README.md
RENAMED
|
File without changes
|
{magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/resources/v1/ai_clothes_changer/__init__.py
RENAMED
|
File without changes
|
{magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/resources/v1/ai_clothes_changer/client.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/resources/v1/ai_gif_generator/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/resources/v1/ai_headshot_generator/README.md
RENAMED
|
File without changes
|
{magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/resources/v1/ai_headshot_generator/__init__.py
RENAMED
|
File without changes
|
{magic_hour-0.29.0 → magic_hour-0.30.1}/magic_hour/resources/v1/ai_headshot_generator/client.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|