immichpy 1.6.5__py3-none-any.whl → 1.7.6__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- immichpy/cli/__main__.py +1 -1
- immichpy/cli/commands/activities.py +23 -11
- immichpy/cli/commands/albums.py +34 -20
- immichpy/cli/commands/api_keys.py +6 -4
- immichpy/cli/commands/assets.py +274 -65
- immichpy/cli/commands/authentication.py +115 -25
- immichpy/cli/commands/database_backups_admin.py +111 -0
- immichpy/cli/commands/download.py +13 -5
- immichpy/cli/commands/duplicates.py +1 -1
- immichpy/cli/commands/faces.py +17 -11
- immichpy/cli/commands/jobs.py +6 -4
- immichpy/cli/commands/libraries.py +15 -9
- immichpy/cli/commands/maintenance_admin.py +39 -2
- immichpy/cli/commands/map.py +8 -8
- immichpy/cli/commands/memories.py +35 -21
- immichpy/cli/commands/notifications.py +16 -8
- immichpy/cli/commands/notifications_admin.py +43 -17
- immichpy/cli/commands/partners.py +9 -3
- immichpy/cli/commands/people.py +30 -24
- immichpy/cli/commands/plugins.py +14 -0
- immichpy/cli/commands/queues.py +8 -6
- immichpy/cli/commands/search.py +395 -189
- immichpy/cli/commands/server.py +6 -2
- immichpy/cli/commands/sessions.py +6 -4
- immichpy/cli/commands/shared_links.py +42 -25
- immichpy/cli/commands/stacks.py +4 -4
- immichpy/cli/commands/sync.py +26 -10
- immichpy/cli/commands/system_config.py +216 -115
- immichpy/cli/commands/system_metadata.py +3 -1
- immichpy/cli/commands/tags.py +9 -9
- immichpy/cli/commands/trash.py +1 -1
- immichpy/cli/commands/users.py +57 -29
- immichpy/cli/commands/users_admin.py +79 -45
- immichpy/cli/commands/workflows.py +40 -11
- immichpy/cli/main.py +10 -2
- immichpy/cli/utils.py +2 -2
- immichpy/cli/wrapper/setup.py +1 -1
- immichpy/client/.openapi-generator/FILES +26 -2
- immichpy/client/generated/__init__.py +101 -7
- immichpy/client/generated/api/__init__.py +3 -0
- immichpy/client/generated/api/activities_api.py +73 -43
- immichpy/client/generated/api/albums_api.py +40 -19
- immichpy/client/generated/api/api_keys_api.py +1 -1
- immichpy/client/generated/api/assets_api.py +1768 -366
- immichpy/client/generated/api/authentication_admin_api.py +1 -1
- immichpy/client/generated/api/authentication_api.py +1 -1
- immichpy/client/generated/api/database_backups_admin_api.py +1224 -0
- immichpy/client/generated/api/deprecated_api.py +103 -73
- immichpy/client/generated/api/download_api.py +1 -1
- immichpy/client/generated/api/duplicates_api.py +1 -1
- immichpy/client/generated/api/faces_api.py +7 -7
- immichpy/client/generated/api/jobs_api.py +7 -7
- immichpy/client/generated/api/libraries_api.py +1 -1
- immichpy/client/generated/api/maintenance_admin_api.py +459 -1
- immichpy/client/generated/api/map_api.py +103 -49
- immichpy/client/generated/api/memories_api.py +109 -61
- immichpy/client/generated/api/notifications_admin_api.py +1 -1
- immichpy/client/generated/api/notifications_api.py +52 -25
- immichpy/client/generated/api/partners_api.py +7 -7
- immichpy/client/generated/api/people_api.py +37 -19
- immichpy/client/generated/api/plugins_api.py +230 -1
- immichpy/client/generated/api/queues_api.py +37 -31
- immichpy/client/generated/api/search_api.py +529 -283
- immichpy/client/generated/api/server_api.py +1 -1
- immichpy/client/generated/api/sessions_api.py +1 -1
- immichpy/client/generated/api/shared_links_api.py +53 -19
- immichpy/client/generated/api/stacks_api.py +13 -7
- immichpy/client/generated/api/sync_api.py +1 -1
- immichpy/client/generated/api/system_config_api.py +1 -1
- immichpy/client/generated/api/system_metadata_api.py +1 -1
- immichpy/client/generated/api/tags_api.py +1 -1
- immichpy/client/generated/api/timeline_api.py +1 -1
- immichpy/client/generated/api/trash_api.py +1 -1
- immichpy/client/generated/api/users_admin_api.py +55 -31
- immichpy/client/generated/api/users_api.py +16 -7
- immichpy/client/generated/api/views_api.py +1 -1
- immichpy/client/generated/api/workflows_api.py +1 -1
- immichpy/client/generated/api_client.py +1 -1
- immichpy/client/generated/configuration.py +2 -2
- immichpy/client/generated/exceptions.py +1 -1
- immichpy/client/generated/models/__init__.py +56 -3
- immichpy/client/generated/models/activity_create_dto.py +11 -5
- immichpy/client/generated/models/activity_response_dto.py +10 -6
- immichpy/client/generated/models/activity_statistics_response_dto.py +4 -4
- immichpy/client/generated/models/add_users_dto.py +2 -2
- immichpy/client/generated/models/admin_onboarding_update_dto.py +4 -2
- immichpy/client/generated/models/album_response_dto.py +28 -16
- immichpy/client/generated/models/album_statistics_response_dto.py +6 -4
- immichpy/client/generated/models/album_user_add_dto.py +3 -3
- immichpy/client/generated/models/album_user_create_dto.py +3 -3
- immichpy/client/generated/models/album_user_response_dto.py +3 -3
- immichpy/client/generated/models/album_user_role.py +2 -2
- immichpy/client/generated/models/albums_add_assets_dto.py +3 -3
- immichpy/client/generated/models/albums_add_assets_response_dto.py +4 -4
- immichpy/client/generated/models/albums_response.py +4 -2
- immichpy/client/generated/models/albums_update.py +5 -3
- immichpy/client/generated/models/api_key_create_dto.py +5 -3
- immichpy/client/generated/models/api_key_create_response_dto.py +2 -2
- immichpy/client/generated/models/api_key_response_dto.py +6 -6
- immichpy/client/generated/models/api_key_update_dto.py +5 -3
- immichpy/client/generated/models/asset_bulk_delete_dto.py +6 -4
- immichpy/client/generated/models/asset_bulk_update_dto.py +28 -12
- immichpy/client/generated/models/asset_bulk_upload_check_dto.py +3 -3
- immichpy/client/generated/models/asset_bulk_upload_check_item.py +3 -3
- immichpy/client/generated/models/asset_bulk_upload_check_response_dto.py +5 -3
- immichpy/client/generated/models/asset_bulk_upload_check_result.py +12 -6
- immichpy/client/generated/models/asset_copy_dto.py +16 -8
- immichpy/client/generated/models/asset_delta_sync_dto.py +5 -3
- immichpy/client/generated/models/asset_delta_sync_response_dto.py +6 -4
- immichpy/client/generated/models/asset_edit_action.py +35 -0
- immichpy/client/generated/models/asset_edit_action_crop.py +95 -0
- immichpy/client/generated/models/asset_edit_action_list_dto.py +104 -0
- immichpy/client/generated/models/asset_edit_action_list_dto_edits_inner.py +188 -0
- immichpy/client/generated/models/asset_edit_action_mirror.py +95 -0
- immichpy/client/generated/models/asset_edit_action_rotate.py +95 -0
- immichpy/client/generated/models/asset_edits_dto.py +107 -0
- immichpy/client/generated/models/asset_face_create_dto.py +13 -9
- immichpy/client/generated/models/asset_face_delete_dto.py +3 -3
- immichpy/client/generated/models/asset_face_response_dto.py +26 -10
- immichpy/client/generated/models/asset_face_update_dto.py +3 -3
- immichpy/client/generated/models/asset_face_update_item.py +3 -3
- immichpy/client/generated/models/asset_face_without_person_response_dto.py +23 -9
- immichpy/client/generated/models/asset_full_sync_dto.py +13 -5
- immichpy/client/generated/models/asset_ids_dto.py +2 -2
- immichpy/client/generated/models/asset_ids_response_dto.py +6 -4
- immichpy/client/generated/models/asset_job_name.py +2 -2
- immichpy/client/generated/models/asset_jobs_dto.py +3 -3
- immichpy/client/generated/models/asset_media_response_dto.py +4 -4
- immichpy/client/generated/models/asset_media_size.py +2 -1
- immichpy/client/generated/models/asset_media_status.py +2 -2
- immichpy/client/generated/models/asset_metadata_bulk_delete_dto.py +103 -0
- immichpy/client/generated/models/asset_metadata_bulk_delete_item_dto.py +86 -0
- immichpy/client/generated/models/asset_metadata_bulk_response_dto.py +93 -0
- immichpy/client/generated/models/asset_metadata_bulk_upsert_dto.py +103 -0
- immichpy/client/generated/models/asset_metadata_bulk_upsert_item_dto.py +91 -0
- immichpy/client/generated/models/asset_metadata_response_dto.py +5 -6
- immichpy/client/generated/models/asset_metadata_upsert_dto.py +5 -3
- immichpy/client/generated/models/asset_metadata_upsert_item_dto.py +4 -5
- immichpy/client/generated/models/asset_ocr_response_dto.py +1 -1
- immichpy/client/generated/models/asset_order.py +2 -2
- immichpy/client/generated/models/asset_response_dto.py +66 -24
- immichpy/client/generated/models/asset_stack_response_dto.py +8 -4
- immichpy/client/generated/models/asset_stats_response_dto.py +5 -5
- immichpy/client/generated/models/asset_type_enum.py +2 -2
- immichpy/client/generated/models/asset_visibility.py +2 -2
- immichpy/client/generated/models/audio_codec.py +2 -2
- immichpy/client/generated/models/auth_status_response_dto.py +12 -6
- immichpy/client/generated/models/avatar_update.py +3 -3
- immichpy/client/generated/models/bulk_id_error_reason.py +2 -2
- immichpy/client/generated/models/bulk_id_response_dto.py +14 -5
- immichpy/client/generated/models/bulk_ids_dto.py +3 -3
- immichpy/client/generated/models/cast_response.py +4 -2
- immichpy/client/generated/models/cast_update.py +4 -2
- immichpy/client/generated/models/change_password_dto.py +6 -4
- immichpy/client/generated/models/check_existing_assets_dto.py +3 -3
- immichpy/client/generated/models/check_existing_assets_response_dto.py +4 -2
- immichpy/client/generated/models/clip_config.py +5 -3
- immichpy/client/generated/models/colorspace.py +1 -1
- immichpy/client/generated/models/contributor_count_response_dto.py +5 -3
- immichpy/client/generated/models/cq_mode.py +2 -2
- immichpy/client/generated/models/create_album_dto.py +9 -5
- immichpy/client/generated/models/create_library_dto.py +9 -5
- immichpy/client/generated/models/create_profile_image_response_dto.py +8 -4
- immichpy/client/generated/models/crop_parameters.py +105 -0
- immichpy/client/generated/models/database_backup_config.py +6 -4
- immichpy/client/generated/models/database_backup_delete_dto.py +82 -0
- immichpy/client/generated/models/database_backup_dto.py +85 -0
- immichpy/client/generated/models/database_backup_list_response_dto.py +98 -0
- immichpy/client/generated/models/download_archive_info.py +5 -3
- immichpy/client/generated/models/download_info_dto.py +11 -5
- immichpy/client/generated/models/download_response.py +8 -3
- immichpy/client/generated/models/download_response_dto.py +3 -3
- immichpy/client/generated/models/download_update.py +5 -3
- immichpy/client/generated/models/duplicate_detection_config.py +6 -3
- immichpy/client/generated/models/duplicate_response_dto.py +5 -3
- immichpy/client/generated/models/email_notifications_response.py +10 -4
- immichpy/client/generated/models/email_notifications_update.py +14 -4
- immichpy/client/generated/models/exif_response_dto.py +47 -23
- immichpy/client/generated/models/face_dto.py +3 -3
- immichpy/client/generated/models/facial_recognition_config.py +15 -6
- immichpy/client/generated/models/folders_response.py +5 -3
- immichpy/client/generated/models/folders_update.py +9 -3
- immichpy/client/generated/models/image_format.py +2 -2
- immichpy/client/generated/models/job_create_dto.py +3 -3
- immichpy/client/generated/models/job_name.py +3 -2
- immichpy/client/generated/models/job_settings_dto.py +4 -2
- immichpy/client/generated/models/library_response_dto.py +16 -10
- immichpy/client/generated/models/library_stats_response_dto.py +6 -6
- immichpy/client/generated/models/license_key_dto.py +7 -3
- immichpy/client/generated/models/license_response_dto.py +8 -4
- immichpy/client/generated/models/log_level.py +1 -1
- immichpy/client/generated/models/login_credential_dto.py +4 -4
- immichpy/client/generated/models/login_response_dto.py +13 -9
- immichpy/client/generated/models/logout_response_dto.py +3 -3
- immichpy/client/generated/models/machine_learning_availability_checks_dto.py +3 -3
- immichpy/client/generated/models/maintenance_action.py +4 -2
- immichpy/client/generated/models/maintenance_auth_dto.py +3 -3
- immichpy/client/generated/models/maintenance_detect_install_response_dto.py +101 -0
- immichpy/client/generated/models/maintenance_detect_install_storage_folder_dto.py +95 -0
- immichpy/client/generated/models/maintenance_login_dto.py +3 -3
- immichpy/client/generated/models/maintenance_status_response_dto.py +109 -0
- immichpy/client/generated/models/manual_job_name.py +2 -2
- immichpy/client/generated/models/map_marker_response_dto.py +8 -8
- immichpy/client/generated/models/map_reverse_geocode_response_dto.py +5 -5
- immichpy/client/generated/models/memories_response.py +4 -4
- immichpy/client/generated/models/memories_update.py +7 -3
- immichpy/client/generated/models/memory_create_dto.py +12 -6
- immichpy/client/generated/models/memory_response_dto.py +20 -12
- immichpy/client/generated/models/memory_search_order.py +1 -1
- immichpy/client/generated/models/memory_statistics_response_dto.py +3 -3
- immichpy/client/generated/models/memory_type.py +1 -1
- immichpy/client/generated/models/memory_update_dto.py +10 -4
- immichpy/client/generated/models/merge_person_dto.py +3 -3
- immichpy/client/generated/models/metadata_search_dto.py +124 -46
- immichpy/client/generated/models/{asset_metadata_key.py → mirror_axis.py} +6 -5
- immichpy/client/generated/models/mirror_parameters.py +83 -0
- immichpy/client/generated/models/notification_create_dto.py +18 -8
- immichpy/client/generated/models/notification_delete_all_dto.py +3 -3
- immichpy/client/generated/models/notification_dto.py +15 -9
- immichpy/client/generated/models/notification_level.py +1 -1
- immichpy/client/generated/models/notification_type.py +1 -1
- immichpy/client/generated/models/notification_update_all_dto.py +5 -3
- immichpy/client/generated/models/notification_update_dto.py +4 -2
- immichpy/client/generated/models/o_auth_authorize_response_dto.py +3 -3
- immichpy/client/generated/models/o_auth_callback_dto.py +8 -4
- immichpy/client/generated/models/o_auth_config_dto.py +10 -4
- immichpy/client/generated/models/o_auth_token_endpoint_auth_method.py +2 -2
- immichpy/client/generated/models/ocr_config.py +14 -6
- immichpy/client/generated/models/on_this_day_dto.py +2 -2
- immichpy/client/generated/models/onboarding_dto.py +4 -2
- immichpy/client/generated/models/onboarding_response_dto.py +4 -2
- immichpy/client/generated/models/partner_create_dto.py +4 -2
- immichpy/client/generated/models/partner_direction.py +1 -1
- immichpy/client/generated/models/partner_response_dto.py +16 -8
- immichpy/client/generated/models/partner_update_dto.py +4 -2
- immichpy/client/generated/models/people_response.py +5 -3
- immichpy/client/generated/models/people_response_dto.py +7 -5
- immichpy/client/generated/models/people_update.py +9 -3
- immichpy/client/generated/models/people_update_dto.py +3 -3
- immichpy/client/generated/models/people_update_item.py +10 -10
- immichpy/client/generated/models/permission.py +13 -2
- immichpy/client/generated/models/person_create_dto.py +8 -8
- immichpy/client/generated/models/person_response_dto.py +17 -9
- immichpy/client/generated/models/person_statistics_response_dto.py +3 -3
- immichpy/client/generated/models/person_update_dto.py +9 -9
- immichpy/client/generated/models/person_with_faces_response_dto.py +20 -10
- immichpy/client/generated/models/pin_code_change_dto.py +10 -4
- immichpy/client/generated/models/pin_code_reset_dto.py +7 -3
- immichpy/client/generated/models/pin_code_setup_dto.py +2 -2
- immichpy/client/generated/models/places_response_dto.py +11 -7
- immichpy/client/generated/models/plugin_action_response_dto.py +13 -9
- immichpy/client/generated/models/{plugin_context.py → plugin_context_type.py} +4 -4
- immichpy/client/generated/models/plugin_filter_response_dto.py +13 -9
- immichpy/client/generated/models/plugin_response_dto.py +11 -11
- immichpy/client/generated/models/plugin_trigger_response_dto.py +89 -0
- immichpy/client/generated/models/plugin_trigger_type.py +2 -2
- immichpy/client/generated/models/purchase_response.py +7 -3
- immichpy/client/generated/models/purchase_update.py +7 -3
- immichpy/client/generated/models/queue_command.py +2 -2
- immichpy/client/generated/models/queue_command_dto.py +6 -4
- immichpy/client/generated/models/queue_delete_dto.py +1 -1
- immichpy/client/generated/models/queue_job_response_dto.py +6 -6
- immichpy/client/generated/models/queue_job_status.py +1 -1
- immichpy/client/generated/models/queue_name.py +2 -1
- immichpy/client/generated/models/queue_response_dto.py +5 -3
- immichpy/client/generated/models/queue_response_legacy_dto.py +1 -1
- immichpy/client/generated/models/queue_statistics_dto.py +8 -8
- immichpy/client/generated/models/queue_status_legacy_dto.py +8 -3
- immichpy/client/generated/models/queue_update_dto.py +4 -2
- immichpy/client/generated/models/queues_response_legacy_dto.py +9 -1
- immichpy/client/generated/models/random_search_dto.py +96 -34
- immichpy/client/generated/models/ratings_response.py +3 -3
- immichpy/client/generated/models/ratings_update.py +5 -3
- immichpy/client/generated/models/reaction_level.py +1 -1
- immichpy/client/generated/models/reaction_type.py +1 -1
- immichpy/client/generated/models/reverse_geocoding_state_response_dto.py +7 -3
- immichpy/client/generated/models/rotate_parameters.py +84 -0
- immichpy/client/generated/models/search_album_response_dto.py +4 -4
- immichpy/client/generated/models/search_asset_response_dto.py +6 -4
- immichpy/client/generated/models/search_explore_item.py +3 -3
- immichpy/client/generated/models/search_explore_response_dto.py +2 -2
- immichpy/client/generated/models/search_facet_count_response_dto.py +4 -4
- immichpy/client/generated/models/search_facet_response_dto.py +3 -3
- immichpy/client/generated/models/search_response_dto.py +1 -1
- immichpy/client/generated/models/search_statistics_response_dto.py +3 -3
- immichpy/client/generated/models/search_suggestion_type.py +1 -1
- immichpy/client/generated/models/server_about_response_dto.py +46 -22
- immichpy/client/generated/models/server_apk_links_dto.py +12 -6
- immichpy/client/generated/models/server_config_dto.py +36 -12
- immichpy/client/generated/models/server_features_dto.py +32 -16
- immichpy/client/generated/models/server_media_types_response_dto.py +5 -5
- immichpy/client/generated/models/server_ping_response.py +1 -1
- immichpy/client/generated/models/server_stats_response_dto.py +10 -6
- immichpy/client/generated/models/server_storage_response_dto.py +21 -8
- immichpy/client/generated/models/server_theme_dto.py +4 -2
- immichpy/client/generated/models/server_version_history_response_dto.py +6 -4
- immichpy/client/generated/models/server_version_response_dto.py +5 -5
- immichpy/client/generated/models/session_create_dto.py +8 -4
- immichpy/client/generated/models/session_create_response_dto.py +17 -11
- immichpy/client/generated/models/session_response_dto.py +16 -10
- immichpy/client/generated/models/session_unlock_dto.py +7 -3
- immichpy/client/generated/models/session_update_dto.py +2 -2
- immichpy/client/generated/models/set_maintenance_mode_dto.py +17 -7
- immichpy/client/generated/models/shared_link_create_dto.py +25 -11
- immichpy/client/generated/models/shared_link_edit_dto.py +19 -9
- immichpy/client/generated/models/shared_link_response_dto.py +18 -14
- immichpy/client/generated/models/shared_link_type.py +2 -2
- immichpy/client/generated/models/shared_links_response.py +5 -3
- immichpy/client/generated/models/shared_links_update.py +9 -3
- immichpy/client/generated/models/sign_up_dto.py +5 -5
- immichpy/client/generated/models/smart_search_dto.py +102 -36
- immichpy/client/generated/models/source_type.py +2 -2
- immichpy/client/generated/models/stack_create_dto.py +2 -2
- immichpy/client/generated/models/stack_response_dto.py +6 -4
- immichpy/client/generated/models/stack_update_dto.py +4 -2
- immichpy/client/generated/models/statistics_search_dto.py +86 -30
- immichpy/client/generated/models/storage_folder.py +38 -0
- immichpy/client/generated/models/sync_ack_delete_dto.py +5 -3
- immichpy/client/generated/models/sync_ack_dto.py +4 -4
- immichpy/client/generated/models/sync_ack_set_dto.py +4 -2
- immichpy/client/generated/models/sync_album_delete_v1.py +2 -2
- immichpy/client/generated/models/sync_album_to_asset_delete_v1.py +3 -3
- immichpy/client/generated/models/sync_album_to_asset_v1.py +3 -3
- immichpy/client/generated/models/sync_album_user_delete_v1.py +3 -3
- immichpy/client/generated/models/sync_album_user_v1.py +4 -4
- immichpy/client/generated/models/sync_album_v1.py +13 -9
- immichpy/client/generated/models/sync_asset_delete_v1.py +2 -2
- immichpy/client/generated/models/sync_asset_exif_v1.py +46 -26
- immichpy/client/generated/models/sync_asset_face_delete_v1.py +2 -2
- immichpy/client/generated/models/sync_asset_face_v1.py +5 -5
- immichpy/client/generated/models/sync_asset_metadata_delete_v1.py +3 -4
- immichpy/client/generated/models/sync_asset_metadata_v1.py +4 -5
- immichpy/client/generated/models/sync_asset_v1.py +47 -18
- immichpy/client/generated/models/sync_auth_user_v1.py +22 -12
- immichpy/client/generated/models/sync_entity_type.py +2 -2
- immichpy/client/generated/models/sync_memory_asset_delete_v1.py +3 -3
- immichpy/client/generated/models/sync_memory_asset_v1.py +3 -3
- immichpy/client/generated/models/sync_memory_delete_v1.py +2 -2
- immichpy/client/generated/models/sync_memory_v1.py +13 -13
- immichpy/client/generated/models/sync_partner_delete_v1.py +5 -3
- immichpy/client/generated/models/sync_partner_v1.py +6 -4
- immichpy/client/generated/models/sync_person_delete_v1.py +2 -2
- immichpy/client/generated/models/sync_person_v1.py +13 -11
- immichpy/client/generated/models/sync_request_type.py +2 -2
- immichpy/client/generated/models/sync_stack_delete_v1.py +2 -2
- immichpy/client/generated/models/sync_stack_v1.py +8 -6
- immichpy/client/generated/models/sync_stream_dto.py +4 -4
- immichpy/client/generated/models/sync_user_delete_v1.py +2 -2
- immichpy/client/generated/models/sync_user_metadata_delete_v1.py +3 -3
- immichpy/client/generated/models/sync_user_metadata_v1.py +4 -4
- immichpy/client/generated/models/sync_user_v1.py +16 -8
- immichpy/client/generated/models/system_config_backups_dto.py +1 -1
- immichpy/client/generated/models/system_config_dto.py +1 -1
- immichpy/client/generated/models/system_config_f_fmpeg_dto.py +44 -22
- immichpy/client/generated/models/system_config_faces_dto.py +2 -2
- immichpy/client/generated/models/system_config_generated_fullsize_image_dto.py +13 -7
- immichpy/client/generated/models/system_config_generated_image_dto.py +14 -8
- immichpy/client/generated/models/system_config_image_dto.py +5 -3
- immichpy/client/generated/models/system_config_job_dto.py +9 -1
- immichpy/client/generated/models/system_config_library_dto.py +1 -1
- immichpy/client/generated/models/system_config_library_scan_dto.py +2 -2
- immichpy/client/generated/models/system_config_library_watch_dto.py +3 -3
- immichpy/client/generated/models/system_config_logging_dto.py +3 -3
- immichpy/client/generated/models/system_config_machine_learning_dto.py +2 -2
- immichpy/client/generated/models/system_config_map_dto.py +2 -2
- immichpy/client/generated/models/system_config_metadata_dto.py +1 -1
- immichpy/client/generated/models/system_config_new_version_check_dto.py +3 -3
- immichpy/client/generated/models/system_config_nightly_tasks_dto.py +16 -6
- immichpy/client/generated/models/system_config_notifications_dto.py +1 -1
- immichpy/client/generated/models/system_config_o_auth_dto.py +28 -18
- immichpy/client/generated/models/system_config_password_login_dto.py +3 -3
- immichpy/client/generated/models/system_config_reverse_geocoding_dto.py +3 -3
- immichpy/client/generated/models/system_config_server_dto.py +8 -4
- immichpy/client/generated/models/system_config_smtp_dto.py +8 -4
- immichpy/client/generated/models/system_config_smtp_transport_dto.py +9 -7
- immichpy/client/generated/models/system_config_storage_template_dto.py +6 -4
- immichpy/client/generated/models/system_config_template_emails_dto.py +1 -1
- immichpy/client/generated/models/system_config_template_storage_option_dto.py +32 -9
- immichpy/client/generated/models/system_config_templates_dto.py +1 -1
- immichpy/client/generated/models/system_config_theme_dto.py +4 -2
- immichpy/client/generated/models/system_config_trash_dto.py +3 -3
- immichpy/client/generated/models/system_config_user_dto.py +4 -2
- immichpy/client/generated/models/tag_bulk_assets_dto.py +3 -3
- immichpy/client/generated/models/tag_bulk_assets_response_dto.py +3 -3
- immichpy/client/generated/models/tag_create_dto.py +8 -4
- immichpy/client/generated/models/tag_response_dto.py +10 -8
- immichpy/client/generated/models/tag_update_dto.py +3 -3
- immichpy/client/generated/models/tag_upsert_dto.py +3 -3
- immichpy/client/generated/models/tags_response.py +5 -3
- immichpy/client/generated/models/tags_update.py +9 -3
- immichpy/client/generated/models/template_dto.py +3 -3
- immichpy/client/generated/models/template_response_dto.py +4 -4
- immichpy/client/generated/models/test_email_response_dto.py +2 -2
- immichpy/client/generated/models/time_bucket_asset_response_dto.py +2 -3
- immichpy/client/generated/models/time_buckets_response_dto.py +1 -1
- immichpy/client/generated/models/tone_mapping.py +2 -2
- immichpy/client/generated/models/transcode_hw_accel.py +2 -2
- immichpy/client/generated/models/transcode_policy.py +2 -2
- immichpy/client/generated/models/trash_response_dto.py +3 -3
- immichpy/client/generated/models/update_album_dto.py +12 -6
- immichpy/client/generated/models/update_album_user_dto.py +3 -3
- immichpy/client/generated/models/update_asset_dto.py +21 -9
- immichpy/client/generated/models/update_library_dto.py +8 -4
- immichpy/client/generated/models/usage_by_user_dto.py +16 -9
- immichpy/client/generated/models/user_admin_create_dto.py +20 -10
- immichpy/client/generated/models/user_admin_delete_dto.py +5 -3
- immichpy/client/generated/models/user_admin_response_dto.py +35 -18
- immichpy/client/generated/models/user_admin_update_dto.py +20 -10
- immichpy/client/generated/models/user_avatar_color.py +2 -2
- immichpy/client/generated/models/user_license.py +6 -4
- immichpy/client/generated/models/user_metadata_key.py +2 -2
- immichpy/client/generated/models/user_preferences_response_dto.py +1 -1
- immichpy/client/generated/models/user_preferences_update_dto.py +1 -1
- immichpy/client/generated/models/user_response_dto.py +13 -7
- immichpy/client/generated/models/user_status.py +2 -2
- immichpy/client/generated/models/user_update_me_dto.py +10 -5
- immichpy/client/generated/models/validate_access_token_response_dto.py +4 -2
- immichpy/client/generated/models/validate_library_dto.py +9 -3
- immichpy/client/generated/models/validate_library_import_path_response_dto.py +4 -4
- immichpy/client/generated/models/validate_library_response_dto.py +4 -2
- immichpy/client/generated/models/version_check_state_response_dto.py +7 -3
- immichpy/client/generated/models/video_codec.py +2 -2
- immichpy/client/generated/models/video_container.py +2 -2
- immichpy/client/generated/models/workflow_action_item_dto.py +7 -3
- immichpy/client/generated/models/workflow_action_response_dto.py +10 -6
- immichpy/client/generated/models/workflow_create_dto.py +11 -7
- immichpy/client/generated/models/workflow_filter_item_dto.py +7 -3
- immichpy/client/generated/models/workflow_filter_response_dto.py +10 -6
- immichpy/client/generated/models/workflow_response_dto.py +14 -27
- immichpy/client/generated/models/workflow_update_dto.py +19 -7
- immichpy/client/generated/rest.py +1 -1
- immichpy/client/main.py +4 -1
- {immichpy-1.6.5.dist-info → immichpy-1.7.6.dist-info}/METADATA +1 -3
- immichpy-1.7.6.dist-info/RECORD +464 -0
- immichpy-1.6.5.dist-info/RECORD +0 -439
- {immichpy-1.6.5.dist-info → immichpy-1.7.6.dist-info}/WHEEL +0 -0
- {immichpy-1.6.5.dist-info → immichpy-1.7.6.dist-info}/entry_points.txt +0 -0
- {immichpy-1.6.5.dist-info → immichpy-1.7.6.dist-info}/licenses/LICENSE +0 -0
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
from __future__ import annotations
|
|
4
4
|
|
|
5
5
|
import typer
|
|
6
|
-
from typing import TYPE_CHECKING
|
|
6
|
+
from typing import Literal, TYPE_CHECKING
|
|
7
7
|
|
|
8
8
|
if TYPE_CHECKING:
|
|
9
9
|
from immichpy import AsyncClient
|
|
@@ -68,134 +68,166 @@ def get_storage_template_options(
|
|
|
68
68
|
def update_config(
|
|
69
69
|
ctx: typer.Context,
|
|
70
70
|
backup_database_cron_expression: str = typer.Option(
|
|
71
|
-
..., "--backup-database-cron-expression", help=""""""
|
|
71
|
+
..., "--backup-database-cron-expression", help="""Cron expression"""
|
|
72
72
|
),
|
|
73
73
|
backup_database_enabled: bool = typer.Option(
|
|
74
|
-
..., "--backup-database-enabled", help=""""""
|
|
74
|
+
..., "--backup-database-enabled", help="""Enabled"""
|
|
75
75
|
),
|
|
76
76
|
backup_database_keep_last_amount: float = typer.Option(
|
|
77
|
-
..., "--backup-database-keep-last-amount", help="""""", min=1
|
|
77
|
+
..., "--backup-database-keep-last-amount", help="""Keep last amount""", min=1
|
|
78
|
+
),
|
|
79
|
+
ffmpeg_accel: str = typer.Option(
|
|
80
|
+
..., "--ffmpeg-accel", help="""Transcode hardware acceleration"""
|
|
81
|
+
),
|
|
82
|
+
ffmpeg_accel_decode: bool = typer.Option(
|
|
83
|
+
..., "--ffmpeg-accel-decode", help="""Accelerated decode"""
|
|
78
84
|
),
|
|
79
|
-
ffmpeg_accel: str = typer.Option(..., "--ffmpeg-accel", help=""""""),
|
|
80
|
-
ffmpeg_accel_decode: bool = typer.Option(..., "--ffmpeg-accel-decode", help=""""""),
|
|
81
85
|
ffmpeg_accepted_audio_codecs: list[AudioCodec] = typer.Option(
|
|
82
|
-
..., "--ffmpeg-accepted-audio-codecs", help=""""""
|
|
86
|
+
..., "--ffmpeg-accepted-audio-codecs", help="""Accepted audio codecs"""
|
|
83
87
|
),
|
|
84
88
|
ffmpeg_accepted_containers: list[VideoContainer] = typer.Option(
|
|
85
|
-
..., "--ffmpeg-accepted-containers", help=""""""
|
|
89
|
+
..., "--ffmpeg-accepted-containers", help="""Accepted containers"""
|
|
86
90
|
),
|
|
87
91
|
ffmpeg_accepted_video_codecs: list[VideoCodec] = typer.Option(
|
|
88
|
-
..., "--ffmpeg-accepted-video-codecs", help=""""""
|
|
92
|
+
..., "--ffmpeg-accepted-video-codecs", help="""Accepted video codecs"""
|
|
89
93
|
),
|
|
90
94
|
ffmpeg_bframes: int = typer.Option(
|
|
91
|
-
..., "--ffmpeg-bframes", help="""""", min=-1, max=16
|
|
95
|
+
..., "--ffmpeg-bframes", help="""B-frames""", min=-1, max=16
|
|
96
|
+
),
|
|
97
|
+
ffmpeg_cq_mode: str = typer.Option(..., "--ffmpeg-cq-mode", help="""CQ mode"""),
|
|
98
|
+
ffmpeg_crf: int = typer.Option(..., "--ffmpeg-crf", help="""CRF""", min=0, max=51),
|
|
99
|
+
ffmpeg_gop_size: int = typer.Option(
|
|
100
|
+
..., "--ffmpeg-gop-size", help="""GOP size""", min=0
|
|
101
|
+
),
|
|
102
|
+
ffmpeg_max_bitrate: str = typer.Option(
|
|
103
|
+
..., "--ffmpeg-max-bitrate", help="""Max bitrate"""
|
|
92
104
|
),
|
|
93
|
-
ffmpeg_cq_mode: str = typer.Option(..., "--ffmpeg-cq-mode", help=""""""),
|
|
94
|
-
ffmpeg_crf: int = typer.Option(..., "--ffmpeg-crf", help="""""", min=0, max=51),
|
|
95
|
-
ffmpeg_gop_size: int = typer.Option(..., "--ffmpeg-gop-size", help="""""", min=0),
|
|
96
|
-
ffmpeg_max_bitrate: str = typer.Option(..., "--ffmpeg-max-bitrate", help=""""""),
|
|
97
105
|
ffmpeg_preferred_hw_device: str = typer.Option(
|
|
98
|
-
..., "--ffmpeg-preferred-hw-device", help=""""""
|
|
106
|
+
..., "--ffmpeg-preferred-hw-device", help="""Preferred hardware device"""
|
|
107
|
+
),
|
|
108
|
+
ffmpeg_preset: str = typer.Option(..., "--ffmpeg-preset", help="""Preset"""),
|
|
109
|
+
ffmpeg_refs: int = typer.Option(
|
|
110
|
+
..., "--ffmpeg-refs", help="""References""", min=0, max=6
|
|
99
111
|
),
|
|
100
|
-
ffmpeg_preset: str = typer.Option(..., "--ffmpeg-preset", help=""""""),
|
|
101
|
-
ffmpeg_refs: int = typer.Option(..., "--ffmpeg-refs", help="""""", min=0, max=6),
|
|
102
112
|
ffmpeg_target_audio_codec: str = typer.Option(
|
|
103
|
-
..., "--ffmpeg-target-audio-codec", help=""""""
|
|
113
|
+
..., "--ffmpeg-target-audio-codec", help="""Target audio codec"""
|
|
104
114
|
),
|
|
105
115
|
ffmpeg_target_resolution: str = typer.Option(
|
|
106
|
-
..., "--ffmpeg-target-resolution", help=""""""
|
|
116
|
+
..., "--ffmpeg-target-resolution", help="""Target resolution"""
|
|
107
117
|
),
|
|
108
118
|
ffmpeg_target_video_codec: str = typer.Option(
|
|
109
|
-
..., "--ffmpeg-target-video-codec", help=""""""
|
|
110
|
-
),
|
|
111
|
-
ffmpeg_temporal_aq: bool = typer.Option(
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
119
|
+
..., "--ffmpeg-target-video-codec", help="""Target video codec"""
|
|
120
|
+
),
|
|
121
|
+
ffmpeg_temporal_aq: bool = typer.Option(
|
|
122
|
+
..., "--ffmpeg-temporal-aq", help="""Temporal AQ"""
|
|
123
|
+
),
|
|
124
|
+
ffmpeg_threads: int = typer.Option(
|
|
125
|
+
..., "--ffmpeg-threads", help="""Threads""", min=0
|
|
126
|
+
),
|
|
127
|
+
ffmpeg_tonemap: str = typer.Option(
|
|
128
|
+
..., "--ffmpeg-tonemap", help="""Tone mapping"""
|
|
129
|
+
),
|
|
130
|
+
ffmpeg_transcode: str = typer.Option(
|
|
131
|
+
..., "--ffmpeg-transcode", help="""Transcode policy"""
|
|
132
|
+
),
|
|
133
|
+
ffmpeg_two_pass: bool = typer.Option(..., "--ffmpeg-two-pass", help="""Two pass"""),
|
|
134
|
+
image_colorspace: str = typer.Option(
|
|
135
|
+
..., "--image-colorspace", help="""Colorspace"""
|
|
136
|
+
),
|
|
117
137
|
image_extract_embedded: bool = typer.Option(
|
|
118
|
-
..., "--image-extract-embedded", help=""""""
|
|
138
|
+
..., "--image-extract-embedded", help="""Extract embedded"""
|
|
119
139
|
),
|
|
120
140
|
image_fullsize_enabled: bool = typer.Option(
|
|
121
|
-
..., "--image-fullsize-enabled", help=""""""
|
|
141
|
+
..., "--image-fullsize-enabled", help="""Enabled"""
|
|
122
142
|
),
|
|
123
143
|
image_fullsize_format: str = typer.Option(
|
|
124
|
-
..., "--image-fullsize-format", help=""""""
|
|
144
|
+
..., "--image-fullsize-format", help="""Image format"""
|
|
145
|
+
),
|
|
146
|
+
image_fullsize_progressive: Literal["true", "false"] | None = typer.Option(
|
|
147
|
+
None, "--image-fullsize-progressive", help="""Progressive"""
|
|
125
148
|
),
|
|
126
149
|
image_fullsize_quality: int = typer.Option(
|
|
127
|
-
..., "--image-fullsize-quality", help="""""", min=1, max=100
|
|
150
|
+
..., "--image-fullsize-quality", help="""Quality""", min=1, max=100
|
|
128
151
|
),
|
|
129
152
|
image_preview_format: str = typer.Option(
|
|
130
|
-
..., "--image-preview-format", help=""""""
|
|
153
|
+
..., "--image-preview-format", help="""Image format"""
|
|
154
|
+
),
|
|
155
|
+
image_preview_progressive: Literal["true", "false"] | None = typer.Option(
|
|
156
|
+
None, "--image-preview-progressive", help=""""""
|
|
131
157
|
),
|
|
132
158
|
image_preview_quality: int = typer.Option(
|
|
133
|
-
..., "--image-preview-quality", help="""""", min=1, max=100
|
|
159
|
+
..., "--image-preview-quality", help="""Quality""", min=1, max=100
|
|
134
160
|
),
|
|
135
161
|
image_preview_size: int = typer.Option(
|
|
136
|
-
..., "--image-preview-size", help="""""", min=1
|
|
162
|
+
..., "--image-preview-size", help="""Size""", min=1
|
|
137
163
|
),
|
|
138
164
|
image_thumbnail_format: str = typer.Option(
|
|
139
|
-
..., "--image-thumbnail-format", help=""""""
|
|
165
|
+
..., "--image-thumbnail-format", help="""Image format"""
|
|
166
|
+
),
|
|
167
|
+
image_thumbnail_progressive: Literal["true", "false"] | None = typer.Option(
|
|
168
|
+
None, "--image-thumbnail-progressive", help=""""""
|
|
140
169
|
),
|
|
141
170
|
image_thumbnail_quality: int = typer.Option(
|
|
142
|
-
..., "--image-thumbnail-quality", help="""""", min=1, max=100
|
|
171
|
+
..., "--image-thumbnail-quality", help="""Quality""", min=1, max=100
|
|
143
172
|
),
|
|
144
173
|
image_thumbnail_size: int = typer.Option(
|
|
145
|
-
..., "--image-thumbnail-size", help="""""", min=1
|
|
174
|
+
..., "--image-thumbnail-size", help="""Size""", min=1
|
|
146
175
|
),
|
|
147
176
|
job_background_task_concurrency: int = typer.Option(
|
|
148
|
-
..., "--job-background-task-concurrency", help="""""", min=1
|
|
177
|
+
..., "--job-background-task-concurrency", help="""Concurrency""", min=1
|
|
178
|
+
),
|
|
179
|
+
job_editor_concurrency: int = typer.Option(
|
|
180
|
+
..., "--job-editor-concurrency", help="""Concurrency""", min=1
|
|
149
181
|
),
|
|
150
182
|
job_face_detection_concurrency: int = typer.Option(
|
|
151
|
-
..., "--job-face-detection-concurrency", help="""""", min=1
|
|
183
|
+
..., "--job-face-detection-concurrency", help="""Concurrency""", min=1
|
|
152
184
|
),
|
|
153
185
|
job_library_concurrency: int = typer.Option(
|
|
154
|
-
..., "--job-library-concurrency", help="""""", min=1
|
|
186
|
+
..., "--job-library-concurrency", help="""Concurrency""", min=1
|
|
155
187
|
),
|
|
156
188
|
job_metadata_extraction_concurrency: int = typer.Option(
|
|
157
|
-
..., "--job-metadata-extraction-concurrency", help="""""", min=1
|
|
189
|
+
..., "--job-metadata-extraction-concurrency", help="""Concurrency""", min=1
|
|
158
190
|
),
|
|
159
191
|
job_migration_concurrency: int = typer.Option(
|
|
160
|
-
..., "--job-migration-concurrency", help="""""", min=1
|
|
192
|
+
..., "--job-migration-concurrency", help="""Concurrency""", min=1
|
|
161
193
|
),
|
|
162
194
|
job_notifications_concurrency: int = typer.Option(
|
|
163
|
-
..., "--job-notifications-concurrency", help="""""", min=1
|
|
195
|
+
..., "--job-notifications-concurrency", help="""Concurrency""", min=1
|
|
164
196
|
),
|
|
165
197
|
job_ocr_concurrency: int = typer.Option(
|
|
166
|
-
..., "--job-ocr-concurrency", help="""""", min=1
|
|
198
|
+
..., "--job-ocr-concurrency", help="""Concurrency""", min=1
|
|
167
199
|
),
|
|
168
200
|
job_search_concurrency: int = typer.Option(
|
|
169
|
-
..., "--job-search-concurrency", help="""""", min=1
|
|
201
|
+
..., "--job-search-concurrency", help="""Concurrency""", min=1
|
|
170
202
|
),
|
|
171
203
|
job_sidecar_concurrency: int = typer.Option(
|
|
172
|
-
..., "--job-sidecar-concurrency", help="""""", min=1
|
|
204
|
+
..., "--job-sidecar-concurrency", help="""Concurrency""", min=1
|
|
173
205
|
),
|
|
174
206
|
job_smart_search_concurrency: int = typer.Option(
|
|
175
|
-
..., "--job-smart-search-concurrency", help="""""", min=1
|
|
207
|
+
..., "--job-smart-search-concurrency", help="""Concurrency""", min=1
|
|
176
208
|
),
|
|
177
209
|
job_thumbnail_generation_concurrency: int = typer.Option(
|
|
178
|
-
..., "--job-thumbnail-generation-concurrency", help="""""", min=1
|
|
210
|
+
..., "--job-thumbnail-generation-concurrency", help="""Concurrency""", min=1
|
|
179
211
|
),
|
|
180
212
|
job_video_conversion_concurrency: int = typer.Option(
|
|
181
|
-
..., "--job-video-conversion-concurrency", help="""""", min=1
|
|
213
|
+
..., "--job-video-conversion-concurrency", help="""Concurrency""", min=1
|
|
182
214
|
),
|
|
183
215
|
job_workflow_concurrency: int = typer.Option(
|
|
184
|
-
..., "--job-workflow-concurrency", help="""""", min=1
|
|
216
|
+
..., "--job-workflow-concurrency", help="""Concurrency""", min=1
|
|
185
217
|
),
|
|
186
218
|
library_scan_cron_expression: str = typer.Option(
|
|
187
219
|
..., "--library-scan-cron-expression", help=""""""
|
|
188
220
|
),
|
|
189
221
|
library_scan_enabled: bool = typer.Option(
|
|
190
|
-
..., "--library-scan-enabled", help=""""""
|
|
222
|
+
..., "--library-scan-enabled", help="""Enabled"""
|
|
191
223
|
),
|
|
192
224
|
library_watch_enabled: bool = typer.Option(
|
|
193
|
-
..., "--library-watch-enabled", help=""""""
|
|
225
|
+
..., "--library-watch-enabled", help="""Enabled"""
|
|
194
226
|
),
|
|
195
|
-
logging_enabled: bool = typer.Option(..., "--logging-enabled", help=""""""),
|
|
227
|
+
logging_enabled: bool = typer.Option(..., "--logging-enabled", help="""Enabled"""),
|
|
196
228
|
logging_level: str = typer.Option(..., "--logging-level", help=""""""),
|
|
197
229
|
machine_learning_availability_checks_enabled: bool = typer.Option(
|
|
198
|
-
..., "--machine-learning-availability-checks-enabled", help=""""""
|
|
230
|
+
..., "--machine-learning-availability-checks-enabled", help="""Enabled"""
|
|
199
231
|
),
|
|
200
232
|
machine_learning_availability_checks_interval: float = typer.Option(
|
|
201
233
|
..., "--machine-learning-availability-checks-interval", help=""""""
|
|
@@ -204,174 +236,222 @@ def update_config(
|
|
|
204
236
|
..., "--machine-learning-availability-checks-timeout", help=""""""
|
|
205
237
|
),
|
|
206
238
|
machine_learning_clip_enabled: bool = typer.Option(
|
|
207
|
-
..., "--machine-learning-clip-enabled", help=""""""
|
|
239
|
+
..., "--machine-learning-clip-enabled", help="""Whether the task is enabled"""
|
|
208
240
|
),
|
|
209
241
|
machine_learning_clip_model_name: str = typer.Option(
|
|
210
|
-
..., "--machine-learning-clip-model-name", help=""""""
|
|
242
|
+
..., "--machine-learning-clip-model-name", help="""Name of the model to use"""
|
|
211
243
|
),
|
|
212
244
|
machine_learning_duplicate_detection_enabled: bool = typer.Option(
|
|
213
|
-
...,
|
|
245
|
+
...,
|
|
246
|
+
"--machine-learning-duplicate-detection-enabled",
|
|
247
|
+
help="""Whether the task is enabled""",
|
|
214
248
|
),
|
|
215
249
|
machine_learning_duplicate_detection_max_distance: float = typer.Option(
|
|
216
250
|
...,
|
|
217
251
|
"--machine-learning-duplicate-detection-max-distance",
|
|
218
|
-
help="""""",
|
|
252
|
+
help="""Maximum distance threshold for duplicate detection""",
|
|
219
253
|
min=0.001,
|
|
220
254
|
max=0.1,
|
|
221
255
|
),
|
|
222
256
|
machine_learning_enabled: bool = typer.Option(
|
|
223
|
-
..., "--machine-learning-enabled", help=""""""
|
|
257
|
+
..., "--machine-learning-enabled", help="""Enabled"""
|
|
224
258
|
),
|
|
225
259
|
machine_learning_facial_recognition_enabled: bool = typer.Option(
|
|
226
|
-
...,
|
|
260
|
+
...,
|
|
261
|
+
"--machine-learning-facial-recognition-enabled",
|
|
262
|
+
help="""Whether the task is enabled""",
|
|
227
263
|
),
|
|
228
264
|
machine_learning_facial_recognition_max_distance: float = typer.Option(
|
|
229
265
|
...,
|
|
230
266
|
"--machine-learning-facial-recognition-max-distance",
|
|
231
|
-
help="""""",
|
|
267
|
+
help="""Maximum distance threshold for face recognition""",
|
|
232
268
|
min=0.1,
|
|
233
269
|
max=2,
|
|
234
270
|
),
|
|
235
271
|
machine_learning_facial_recognition_min_faces: int = typer.Option(
|
|
236
|
-
...,
|
|
272
|
+
...,
|
|
273
|
+
"--machine-learning-facial-recognition-min-faces",
|
|
274
|
+
help="""Minimum number of faces required for recognition""",
|
|
275
|
+
min=1,
|
|
237
276
|
),
|
|
238
277
|
machine_learning_facial_recognition_min_score: float = typer.Option(
|
|
239
278
|
...,
|
|
240
279
|
"--machine-learning-facial-recognition-min-score",
|
|
241
|
-
help="""""",
|
|
280
|
+
help="""Minimum confidence score for face detection""",
|
|
242
281
|
min=0.1,
|
|
243
282
|
max=1,
|
|
244
283
|
),
|
|
245
284
|
machine_learning_facial_recognition_model_name: str = typer.Option(
|
|
246
|
-
...,
|
|
285
|
+
...,
|
|
286
|
+
"--machine-learning-facial-recognition-model-name",
|
|
287
|
+
help="""Name of the model to use""",
|
|
247
288
|
),
|
|
248
289
|
machine_learning_ocr_enabled: bool = typer.Option(
|
|
249
|
-
..., "--machine-learning-ocr-enabled", help=""""""
|
|
290
|
+
..., "--machine-learning-ocr-enabled", help="""Whether the task is enabled"""
|
|
250
291
|
),
|
|
251
292
|
machine_learning_ocr_max_resolution: int = typer.Option(
|
|
252
|
-
...,
|
|
293
|
+
...,
|
|
294
|
+
"--machine-learning-ocr-max-resolution",
|
|
295
|
+
help="""Maximum resolution for OCR processing""",
|
|
296
|
+
min=1,
|
|
253
297
|
),
|
|
254
298
|
machine_learning_ocr_min_detection_score: float = typer.Option(
|
|
255
|
-
...,
|
|
299
|
+
...,
|
|
300
|
+
"--machine-learning-ocr-min-detection-score",
|
|
301
|
+
help="""Minimum confidence score for text detection""",
|
|
302
|
+
min=0.1,
|
|
303
|
+
max=1,
|
|
256
304
|
),
|
|
257
305
|
machine_learning_ocr_min_recognition_score: float = typer.Option(
|
|
258
|
-
...,
|
|
306
|
+
...,
|
|
307
|
+
"--machine-learning-ocr-min-recognition-score",
|
|
308
|
+
help="""Minimum confidence score for text recognition""",
|
|
309
|
+
min=0.1,
|
|
310
|
+
max=1,
|
|
259
311
|
),
|
|
260
312
|
machine_learning_ocr_model_name: str = typer.Option(
|
|
261
|
-
..., "--machine-learning-ocr-model-name", help=""""""
|
|
313
|
+
..., "--machine-learning-ocr-model-name", help="""Name of the model to use"""
|
|
262
314
|
),
|
|
263
315
|
machine_learning_urls: list[str] = typer.Option(
|
|
264
316
|
..., "--machine-learning-urls", help=""""""
|
|
265
317
|
),
|
|
266
318
|
map_dark_style: str = typer.Option(..., "--map-dark-style", help=""""""),
|
|
267
|
-
map_enabled: bool = typer.Option(..., "--map-enabled", help=""""""),
|
|
319
|
+
map_enabled: bool = typer.Option(..., "--map-enabled", help="""Enabled"""),
|
|
268
320
|
map_light_style: str = typer.Option(..., "--map-light-style", help=""""""),
|
|
269
321
|
metadata_faces_import_: bool = typer.Option(
|
|
270
|
-
..., "--metadata-faces-import", help=""""""
|
|
322
|
+
..., "--metadata-faces-import", help="""Import"""
|
|
271
323
|
),
|
|
272
324
|
new_version_check_enabled: bool = typer.Option(
|
|
273
|
-
..., "--new-version-check-enabled", help=""""""
|
|
325
|
+
..., "--new-version-check-enabled", help="""Enabled"""
|
|
274
326
|
),
|
|
275
327
|
nightly_tasks_cluster_new_faces: bool = typer.Option(
|
|
276
|
-
..., "--nightly-tasks-cluster-new-faces", help=""""""
|
|
328
|
+
..., "--nightly-tasks-cluster-new-faces", help="""Cluster new faces"""
|
|
277
329
|
),
|
|
278
330
|
nightly_tasks_database_cleanup: bool = typer.Option(
|
|
279
|
-
..., "--nightly-tasks-database-cleanup", help=""""""
|
|
331
|
+
..., "--nightly-tasks-database-cleanup", help="""Database cleanup"""
|
|
280
332
|
),
|
|
281
333
|
nightly_tasks_generate_memories: bool = typer.Option(
|
|
282
|
-
..., "--nightly-tasks-generate-memories", help=""""""
|
|
334
|
+
..., "--nightly-tasks-generate-memories", help="""Generate memories"""
|
|
283
335
|
),
|
|
284
336
|
nightly_tasks_missing_thumbnails: bool = typer.Option(
|
|
285
|
-
..., "--nightly-tasks-missing-thumbnails", help=""""""
|
|
337
|
+
..., "--nightly-tasks-missing-thumbnails", help="""Missing thumbnails"""
|
|
286
338
|
),
|
|
287
339
|
nightly_tasks_start_time: str = typer.Option(
|
|
288
340
|
..., "--nightly-tasks-start-time", help=""""""
|
|
289
341
|
),
|
|
290
342
|
nightly_tasks_sync_quota_usage: bool = typer.Option(
|
|
291
|
-
..., "--nightly-tasks-sync-quota-usage", help=""""""
|
|
343
|
+
..., "--nightly-tasks-sync-quota-usage", help="""Sync quota usage"""
|
|
292
344
|
),
|
|
293
345
|
notifications_smtp_enabled: bool = typer.Option(
|
|
294
|
-
...,
|
|
346
|
+
...,
|
|
347
|
+
"--notifications-smtp-enabled",
|
|
348
|
+
help="""Whether SMTP email notifications are enabled""",
|
|
295
349
|
),
|
|
296
350
|
notifications_smtp_from_: str = typer.Option(
|
|
297
|
-
..., "--notifications-smtp-from", help=""""""
|
|
351
|
+
..., "--notifications-smtp-from", help="""Email address to send from"""
|
|
298
352
|
),
|
|
299
353
|
notifications_smtp_reply_to: str = typer.Option(
|
|
300
|
-
..., "--notifications-smtp-reply-to", help=""""""
|
|
354
|
+
..., "--notifications-smtp-reply-to", help="""Email address for replies"""
|
|
301
355
|
),
|
|
302
356
|
notifications_smtp_transport_host: str = typer.Option(
|
|
303
|
-
..., "--notifications-smtp-transport-host", help=""""""
|
|
357
|
+
..., "--notifications-smtp-transport-host", help="""SMTP server hostname"""
|
|
304
358
|
),
|
|
305
359
|
notifications_smtp_transport_ignore_cert: bool = typer.Option(
|
|
306
|
-
...,
|
|
360
|
+
...,
|
|
361
|
+
"--notifications-smtp-transport-ignore-cert",
|
|
362
|
+
help="""Whether to ignore SSL certificate errors""",
|
|
307
363
|
),
|
|
308
364
|
notifications_smtp_transport_password: str = typer.Option(
|
|
309
|
-
..., "--notifications-smtp-transport-password", help=""""""
|
|
365
|
+
..., "--notifications-smtp-transport-password", help="""SMTP password"""
|
|
310
366
|
),
|
|
311
367
|
notifications_smtp_transport_port: float = typer.Option(
|
|
312
|
-
...,
|
|
368
|
+
...,
|
|
369
|
+
"--notifications-smtp-transport-port",
|
|
370
|
+
help="""SMTP server port""",
|
|
371
|
+
min=0,
|
|
372
|
+
max=65535,
|
|
313
373
|
),
|
|
314
374
|
notifications_smtp_transport_secure: bool = typer.Option(
|
|
315
|
-
...,
|
|
375
|
+
...,
|
|
376
|
+
"--notifications-smtp-transport-secure",
|
|
377
|
+
help="""Whether to use secure connection (TLS/SSL)""",
|
|
316
378
|
),
|
|
317
379
|
notifications_smtp_transport_username: str = typer.Option(
|
|
318
|
-
..., "--notifications-smtp-transport-username", help=""""""
|
|
380
|
+
..., "--notifications-smtp-transport-username", help="""SMTP username"""
|
|
381
|
+
),
|
|
382
|
+
oauth_auto_launch: bool = typer.Option(
|
|
383
|
+
..., "--oauth-auto-launch", help="""Auto launch"""
|
|
384
|
+
),
|
|
385
|
+
oauth_auto_register: bool = typer.Option(
|
|
386
|
+
..., "--oauth-auto-register", help="""Auto register"""
|
|
387
|
+
),
|
|
388
|
+
oauth_button_text: str = typer.Option(
|
|
389
|
+
..., "--oauth-button-text", help="""Button text"""
|
|
390
|
+
),
|
|
391
|
+
oauth_client_id: str = typer.Option(..., "--oauth-client-id", help="""Client ID"""),
|
|
392
|
+
oauth_client_secret: str = typer.Option(
|
|
393
|
+
..., "--oauth-client-secret", help="""Client secret"""
|
|
319
394
|
),
|
|
320
|
-
oauth_auto_launch: bool = typer.Option(..., "--oauth-auto-launch", help=""""""),
|
|
321
|
-
oauth_auto_register: bool = typer.Option(..., "--oauth-auto-register", help=""""""),
|
|
322
|
-
oauth_button_text: str = typer.Option(..., "--oauth-button-text", help=""""""),
|
|
323
|
-
oauth_client_id: str = typer.Option(..., "--oauth-client-id", help=""""""),
|
|
324
|
-
oauth_client_secret: str = typer.Option(..., "--oauth-client-secret", help=""""""),
|
|
325
395
|
oauth_default_storage_quota: int = typer.Option(
|
|
326
|
-
..., "--oauth-default-storage-quota", help="""""", min=0
|
|
396
|
+
..., "--oauth-default-storage-quota", help="""Default storage quota""", min=0
|
|
397
|
+
),
|
|
398
|
+
oauth_enabled: bool = typer.Option(..., "--oauth-enabled", help="""Enabled"""),
|
|
399
|
+
oauth_issuer_url: str = typer.Option(
|
|
400
|
+
..., "--oauth-issuer-url", help="""Issuer URL"""
|
|
327
401
|
),
|
|
328
|
-
oauth_enabled: bool = typer.Option(..., "--oauth-enabled", help=""""""),
|
|
329
|
-
oauth_issuer_url: str = typer.Option(..., "--oauth-issuer-url", help=""""""),
|
|
330
402
|
oauth_mobile_override_enabled: bool = typer.Option(
|
|
331
|
-
..., "--oauth-mobile-override-enabled", help=""""""
|
|
403
|
+
..., "--oauth-mobile-override-enabled", help="""Mobile override enabled"""
|
|
332
404
|
),
|
|
333
405
|
oauth_mobile_redirect_uri: str = typer.Option(
|
|
334
|
-
..., "--oauth-mobile-redirect-uri", help=""""""
|
|
406
|
+
..., "--oauth-mobile-redirect-uri", help="""Mobile redirect URI"""
|
|
335
407
|
),
|
|
336
408
|
oauth_profile_signing_algorithm: str = typer.Option(
|
|
337
|
-
..., "--oauth-profile-signing-algorithm", help=""""""
|
|
409
|
+
..., "--oauth-profile-signing-algorithm", help="""Profile signing algorithm"""
|
|
338
410
|
),
|
|
339
|
-
oauth_role_claim: str = typer.Option(
|
|
340
|
-
|
|
411
|
+
oauth_role_claim: str = typer.Option(
|
|
412
|
+
..., "--oauth-role-claim", help="""Role claim"""
|
|
413
|
+
),
|
|
414
|
+
oauth_scope: str = typer.Option(..., "--oauth-scope", help="""Scope"""),
|
|
341
415
|
oauth_signing_algorithm: str = typer.Option(
|
|
342
416
|
..., "--oauth-signing-algorithm", help=""""""
|
|
343
417
|
),
|
|
344
418
|
oauth_storage_label_claim: str = typer.Option(
|
|
345
|
-
..., "--oauth-storage-label-claim", help=""""""
|
|
419
|
+
..., "--oauth-storage-label-claim", help="""Storage label claim"""
|
|
346
420
|
),
|
|
347
421
|
oauth_storage_quota_claim: str = typer.Option(
|
|
348
|
-
..., "--oauth-storage-quota-claim", help=""""""
|
|
422
|
+
..., "--oauth-storage-quota-claim", help="""Storage quota claim"""
|
|
423
|
+
),
|
|
424
|
+
oauth_timeout: int = typer.Option(
|
|
425
|
+
..., "--oauth-timeout", help="""Timeout""", min=1
|
|
349
426
|
),
|
|
350
|
-
oauth_timeout: int = typer.Option(..., "--oauth-timeout", help="""""", min=1),
|
|
351
427
|
oauth_token_endpoint_auth_method: str = typer.Option(
|
|
352
|
-
..., "--oauth-token-endpoint-auth-method", help=""""""
|
|
428
|
+
..., "--oauth-token-endpoint-auth-method", help="""Token endpoint auth method"""
|
|
353
429
|
),
|
|
354
430
|
password_login_enabled: bool = typer.Option(
|
|
355
|
-
..., "--password-login-enabled", help=""""""
|
|
431
|
+
..., "--password-login-enabled", help="""Enabled"""
|
|
356
432
|
),
|
|
357
433
|
reverse_geocoding_enabled: bool = typer.Option(
|
|
358
|
-
..., "--reverse-geocoding-enabled", help=""""""
|
|
434
|
+
..., "--reverse-geocoding-enabled", help="""Enabled"""
|
|
359
435
|
),
|
|
360
436
|
server_external_domain: str = typer.Option(
|
|
361
|
-
..., "--server-external-domain", help=""""""
|
|
437
|
+
..., "--server-external-domain", help="""External domain"""
|
|
362
438
|
),
|
|
363
439
|
server_login_page_message: str = typer.Option(
|
|
364
|
-
..., "--server-login-page-message", help=""""""
|
|
440
|
+
..., "--server-login-page-message", help="""Login page message"""
|
|
441
|
+
),
|
|
442
|
+
server_public_users: bool = typer.Option(
|
|
443
|
+
..., "--server-public-users", help="""Public users"""
|
|
365
444
|
),
|
|
366
|
-
server_public_users: bool = typer.Option(..., "--server-public-users", help=""""""),
|
|
367
445
|
storage_template_enabled: bool = typer.Option(
|
|
368
|
-
..., "--storage-template-enabled", help=""""""
|
|
446
|
+
..., "--storage-template-enabled", help="""Enabled"""
|
|
369
447
|
),
|
|
370
448
|
storage_template_hash_verification_enabled: bool = typer.Option(
|
|
371
|
-
...,
|
|
449
|
+
...,
|
|
450
|
+
"--storage-template-hash-verification-enabled",
|
|
451
|
+
help="""Hash verification enabled""",
|
|
372
452
|
),
|
|
373
453
|
storage_template_template: str = typer.Option(
|
|
374
|
-
..., "--storage-template-template", help=""""""
|
|
454
|
+
..., "--storage-template-template", help="""Template"""
|
|
375
455
|
),
|
|
376
456
|
templates_email_album_invite_template: str = typer.Option(
|
|
377
457
|
..., "--templates-email-album-invite-template", help=""""""
|
|
@@ -382,11 +462,13 @@ def update_config(
|
|
|
382
462
|
templates_email_welcome_template: str = typer.Option(
|
|
383
463
|
..., "--templates-email-welcome-template", help=""""""
|
|
384
464
|
),
|
|
385
|
-
theme_custom_css: str = typer.Option(
|
|
386
|
-
|
|
387
|
-
|
|
465
|
+
theme_custom_css: str = typer.Option(
|
|
466
|
+
..., "--theme-custom-css", help="""Custom CSS for theming"""
|
|
467
|
+
),
|
|
468
|
+
trash_days: int = typer.Option(..., "--trash-days", help="""Days""", min=0),
|
|
469
|
+
trash_enabled: bool = typer.Option(..., "--trash-enabled", help="""Enabled"""),
|
|
388
470
|
user_delete_delay: int = typer.Option(
|
|
389
|
-
..., "--user-delete-delay", help="""""", min=1
|
|
471
|
+
..., "--user-delete-delay", help="""Delete delay""", min=1
|
|
390
472
|
),
|
|
391
473
|
) -> None:
|
|
392
474
|
"""Update system configuration
|
|
@@ -433,16 +515,35 @@ def update_config(
|
|
|
433
515
|
set_nested(json_data, ["image_extract_embedded"], image_extract_embedded)
|
|
434
516
|
set_nested(json_data, ["image_fullsize_enabled"], image_fullsize_enabled)
|
|
435
517
|
set_nested(json_data, ["image_fullsize_format"], image_fullsize_format)
|
|
518
|
+
if image_fullsize_progressive is not None:
|
|
519
|
+
set_nested(
|
|
520
|
+
json_data,
|
|
521
|
+
["image_fullsize_progressive"],
|
|
522
|
+
image_fullsize_progressive.lower() == "true",
|
|
523
|
+
)
|
|
436
524
|
set_nested(json_data, ["image_fullsize_quality"], image_fullsize_quality)
|
|
437
525
|
set_nested(json_data, ["image_preview_format"], image_preview_format)
|
|
526
|
+
if image_preview_progressive is not None:
|
|
527
|
+
set_nested(
|
|
528
|
+
json_data,
|
|
529
|
+
["image_preview_progressive"],
|
|
530
|
+
image_preview_progressive.lower() == "true",
|
|
531
|
+
)
|
|
438
532
|
set_nested(json_data, ["image_preview_quality"], image_preview_quality)
|
|
439
533
|
set_nested(json_data, ["image_preview_size"], image_preview_size)
|
|
440
534
|
set_nested(json_data, ["image_thumbnail_format"], image_thumbnail_format)
|
|
535
|
+
if image_thumbnail_progressive is not None:
|
|
536
|
+
set_nested(
|
|
537
|
+
json_data,
|
|
538
|
+
["image_thumbnail_progressive"],
|
|
539
|
+
image_thumbnail_progressive.lower() == "true",
|
|
540
|
+
)
|
|
441
541
|
set_nested(json_data, ["image_thumbnail_quality"], image_thumbnail_quality)
|
|
442
542
|
set_nested(json_data, ["image_thumbnail_size"], image_thumbnail_size)
|
|
443
543
|
set_nested(
|
|
444
544
|
json_data, ["job_background_task_concurrency"], job_background_task_concurrency
|
|
445
545
|
)
|
|
546
|
+
set_nested(json_data, ["job_editor_concurrency"], job_editor_concurrency)
|
|
446
547
|
set_nested(
|
|
447
548
|
json_data, ["job_face_detection_concurrency"], job_face_detection_concurrency
|
|
448
549
|
)
|
|
@@ -73,7 +73,9 @@ def get_version_check_state(
|
|
|
73
73
|
)
|
|
74
74
|
def update_admin_onboarding(
|
|
75
75
|
ctx: typer.Context,
|
|
76
|
-
is_onboarded: bool = typer.Option(
|
|
76
|
+
is_onboarded: bool = typer.Option(
|
|
77
|
+
..., "--is-onboarded", help="""Is admin onboarded"""
|
|
78
|
+
),
|
|
77
79
|
) -> None:
|
|
78
80
|
"""Update admin onboarding
|
|
79
81
|
|
immichpy/cli/commands/tags.py
CHANGED
|
@@ -19,8 +19,8 @@ app = typer.Typer(
|
|
|
19
19
|
@app.command("bulk-tag-assets", deprecated=False, rich_help_panel="API commands")
|
|
20
20
|
def bulk_tag_assets(
|
|
21
21
|
ctx: typer.Context,
|
|
22
|
-
asset_ids: list[str] = typer.Option(..., "--asset-ids", help=""""""),
|
|
23
|
-
tag_ids: list[str] = typer.Option(..., "--tag-ids", help=""""""),
|
|
22
|
+
asset_ids: list[str] = typer.Option(..., "--asset-ids", help="""Asset IDs"""),
|
|
23
|
+
tag_ids: list[str] = typer.Option(..., "--tag-ids", help="""Tag IDs"""),
|
|
24
24
|
) -> None:
|
|
25
25
|
"""Tag assets
|
|
26
26
|
|
|
@@ -40,9 +40,9 @@ def bulk_tag_assets(
|
|
|
40
40
|
@app.command("create-tag", deprecated=False, rich_help_panel="API commands")
|
|
41
41
|
def create_tag(
|
|
42
42
|
ctx: typer.Context,
|
|
43
|
-
color: str | None = typer.Option(None, "--color", help=""""""),
|
|
44
|
-
name: str = typer.Option(..., "--name", help=""""""),
|
|
45
|
-
parent_id: str | None = typer.Option(None, "--parent-id", help=""""""),
|
|
43
|
+
color: str | None = typer.Option(None, "--color", help="""Tag color (hex)"""),
|
|
44
|
+
name: str = typer.Option(..., "--name", help="""Tag name"""),
|
|
45
|
+
parent_id: str | None = typer.Option(None, "--parent-id", help="""Parent tag ID"""),
|
|
46
46
|
) -> None:
|
|
47
47
|
"""Create a tag
|
|
48
48
|
|
|
@@ -112,7 +112,7 @@ def get_tag_by_id(
|
|
|
112
112
|
def tag_assets(
|
|
113
113
|
ctx: typer.Context,
|
|
114
114
|
id: str = typer.Argument(..., help=""""""),
|
|
115
|
-
ids: list[str] = typer.Option(..., "--ids", help=""""""),
|
|
115
|
+
ids: list[str] = typer.Option(..., "--ids", help="""IDs to process"""),
|
|
116
116
|
) -> None:
|
|
117
117
|
"""Tag assets
|
|
118
118
|
|
|
@@ -133,7 +133,7 @@ def tag_assets(
|
|
|
133
133
|
def untag_assets(
|
|
134
134
|
ctx: typer.Context,
|
|
135
135
|
id: str = typer.Argument(..., help=""""""),
|
|
136
|
-
ids: list[str] = typer.Option(..., "--ids", help=""""""),
|
|
136
|
+
ids: list[str] = typer.Option(..., "--ids", help="""IDs to process"""),
|
|
137
137
|
) -> None:
|
|
138
138
|
"""Untag assets
|
|
139
139
|
|
|
@@ -154,7 +154,7 @@ def untag_assets(
|
|
|
154
154
|
def update_tag(
|
|
155
155
|
ctx: typer.Context,
|
|
156
156
|
id: str = typer.Argument(..., help=""""""),
|
|
157
|
-
color: str | None = typer.Option(None, "--color", help=""""""),
|
|
157
|
+
color: str | None = typer.Option(None, "--color", help="""Tag color (hex)"""),
|
|
158
158
|
) -> None:
|
|
159
159
|
"""Update a tag
|
|
160
160
|
|
|
@@ -175,7 +175,7 @@ def update_tag(
|
|
|
175
175
|
@app.command("upsert-tags", deprecated=False, rich_help_panel="API commands")
|
|
176
176
|
def upsert_tags(
|
|
177
177
|
ctx: typer.Context,
|
|
178
|
-
tags: list[str] = typer.Option(..., "--tags", help=""""""),
|
|
178
|
+
tags: list[str] = typer.Option(..., "--tags", help="""Tag names to upsert"""),
|
|
179
179
|
) -> None:
|
|
180
180
|
"""Upsert tags
|
|
181
181
|
|
immichpy/cli/commands/trash.py
CHANGED
|
@@ -33,7 +33,7 @@ def empty_trash(
|
|
|
33
33
|
@app.command("restore-assets", deprecated=False, rich_help_panel="API commands")
|
|
34
34
|
def restore_assets(
|
|
35
35
|
ctx: typer.Context,
|
|
36
|
-
ids: list[str] = typer.Option(..., "--ids", help=""""""),
|
|
36
|
+
ids: list[str] = typer.Option(..., "--ids", help="""IDs to process"""),
|
|
37
37
|
) -> None:
|
|
38
38
|
"""Restore assets
|
|
39
39
|
|