diff --git a/facefusion/args_store.py b/facefusion/args_store.py index 04000614..c6b813f0 100644 --- a/facefusion/args_store.py +++ b/facefusion/args_store.py @@ -1,7 +1,7 @@ from argparse import Action from typing import List -from facefusion.types import Args, ArgsStore, ArgumentSet, Scope +from facefusion.types import Args, ArgsStore, Scope ARGS_STORE : ArgsStore =\ @@ -12,15 +12,15 @@ ARGS_STORE : ArgsStore =\ } -def get_api_set() -> ArgumentSet: +def get_api_set() -> Args: return ARGS_STORE.get('api') -def get_cli_set() -> ArgumentSet: +def get_cli_set() -> Args: return ARGS_STORE.get('cli') -def get_sys_set() -> ArgumentSet: +def get_sys_set() -> Args: return ARGS_STORE.get('sys') @@ -36,45 +36,37 @@ def get_sys_args() -> List[str]: return list(get_cli_set().keys()) -def register_argument(action : Action, scopes : List[Scope]) -> None: - key = action.dest - value =\ - { - 'default': action.default - } +def register_arguments(actions : List[Action], scopes : List[Scope]) -> None: + for action in actions: + value =\ + { + 'default': action.default + } - if action.choices: - value['choices'] = list(action.choices) + if action.choices: + value['choices'] = list(action.choices) - for scope in scopes: - if scope == 'api': - ARGS_STORE['api'][key] = value - if scope == 'cli': - ARGS_STORE['cli'][key] = value - if scope == 'sys': - ARGS_STORE['sys'][key] = value + for scope in scopes: + if scope == 'api': + ARGS_STORE['api'][action.dest] = value + if scope == 'cli': + ARGS_STORE['cli'][action.dest] = value + if scope == 'sys': + ARGS_STORE['sys'][action.dest] = value def filter_api_args(args : Args) -> Args: api_args =\ { - key: args.get(key) for key in args if key in ARGS_STORE.get('api') #type:ignore[literal-required] + key: args.get(key) for key in args if key in get_api_set() #type:ignore[literal-required] } return api_args -def filter_sys_args(args : Args) -> Args: - sys_args =\ - { - key: args.get(key) for key in args if key in ARGS_STORE.get('sys') #type:ignore[literal-required] - } - return sys_args - - def filter_cli_args(args : Args) -> Args: cli_args =\ { - key: args.get(key) for key in args if key in ARGS_STORE.get('cli') #type:ignore[literal-required] + key: args.get(key) for key in args if key in get_cli_args() #type:ignore[literal-required] } return cli_args @@ -82,6 +74,14 @@ def filter_cli_args(args : Args) -> Args: def filter_step_args(args : Args) -> Args: step_args =\ { - key: args.get(key) for key in args if key in ARGS_STORE.get('cli') and key not in ARGS_STORE.get('sys') #type:ignore[literal-required] + key: args.get(key) for key in args if key in get_cli_args() and key not in get_sys_set() #type:ignore[literal-required] } return step_args + + +def filter_sys_args(args : Args) -> Args: + sys_args =\ + { + key: args.get(key) for key in args if key in get_sys_set() #type:ignore[literal-required] + } + return sys_args diff --git a/facefusion/processors/modules/age_modifier/core.py b/facefusion/processors/modules/age_modifier/core.py index 98f9d611..62c525ed 100755 --- a/facefusion/processors/modules/age_modifier/core.py +++ b/facefusion/processors/modules/age_modifier/core.py @@ -87,10 +87,25 @@ def get_model_options() -> ModelOptions: def register_args(program : ArgumentParser) -> None: group_processors = find_argument_group(program, 'processors') if group_processors: - age_modifier_model_action = group_processors.add_argument('--age-modifier-model', help = translator.get('help.model', __package__), default = config.get_str_value('processors', 'age_modifier_model', 'styleganex_age'), choices = age_modifier_choices.age_modifier_models) - age_modifier_direction_action = group_processors.add_argument('--age-modifier-direction', help = translator.get('help.direction', __package__), type = int, default = config.get_int_value('processors', 'age_modifier_direction', '0'), choices = age_modifier_choices.age_modifier_direction_range, metavar = create_int_metavar(age_modifier_choices.age_modifier_direction_range)) - facefusion.args_store.register_argument(age_modifier_model_action, scopes = [ 'api', 'cli' ]) - facefusion.args_store.register_argument(age_modifier_direction_action, scopes = [ 'api', 'cli' ]) + facefusion.args_store.register_arguments( + [ + group_processors.add_argument( + '--age-modifier-model', + help = translator.get('help.model', __package__), + default = config.get_str_value('processors', 'age_modifier_model', 'styleganex_age'), + choices = age_modifier_choices.age_modifier_models + ), + group_processors.add_argument( + '--age-modifier-direction', + help = translator.get('help.direction', __package__), + type = int, + default = config.get_int_value('processors', 'age_modifier_direction', '0'), + choices = age_modifier_choices.age_modifier_direction_range, + metavar = create_int_metavar(age_modifier_choices.age_modifier_direction_range) + ) + ], + scopes = [ 'api', 'cli' ] + ) def apply_args(args : Args, apply_state_item : ApplyStateItem) -> None: diff --git a/facefusion/processors/modules/background_remover/core.py b/facefusion/processors/modules/background_remover/core.py index 751150df..4757a68b 100644 --- a/facefusion/processors/modules/background_remover/core.py +++ b/facefusion/processors/modules/background_remover/core.py @@ -420,10 +420,24 @@ def get_model_options() -> ModelOptions: def register_args(program : ArgumentParser) -> None: group_processors = find_argument_group(program, 'processors') if group_processors: - background_remover_model_action = group_processors.add_argument('--background-remover-model', help = translator.get('help.model', __package__), default = config.get_str_value('processors', 'background_remover_model', 'rmbg_2.0'), choices = background_remover_choices.background_remover_models) - background_remover_color_action = group_processors.add_argument('--background-remover-color', help = translator.get('help.color', __package__), type = partial(sanitize_int_range, int_range = background_remover_choices.background_remover_color_range), default = config.get_int_list('processors', 'background_remover_color', '0 0 0 0'), nargs = '+') - facefusion.args_store.register_argument(background_remover_model_action, scopes = [ 'api', 'cli' ]) - facefusion.args_store.register_argument(background_remover_color_action, scopes = [ 'api', 'cli' ]) + facefusion.args_store.register_arguments( + [ + group_processors.add_argument( + '--background-remover-model', + help = translator.get('help.model', __package__), + default = config.get_str_value('processors', 'background_remover_model', 'rmbg_2.0'), + choices = background_remover_choices.background_remover_models + ), + group_processors.add_argument( + '--background-remover-color', + help = translator.get('help.color', __package__), + type = partial(sanitize_int_range, int_range = background_remover_choices.background_remover_color_range), + default = config.get_int_list('processors', 'background_remover_color', '0 0 0 0'), + nargs = '+' + ) + ], + scopes = [ 'api', 'cli' ] + ) def apply_args(args : Args, apply_state_item : ApplyStateItem) -> None: diff --git a/facefusion/processors/modules/deep_swapper/core.py b/facefusion/processors/modules/deep_swapper/core.py index 9b382ad2..4f10d641 100755 --- a/facefusion/processors/modules/deep_swapper/core.py +++ b/facefusion/processors/modules/deep_swapper/core.py @@ -276,10 +276,25 @@ def get_model_size() -> Size: def register_args(program : ArgumentParser) -> None: group_processors = find_argument_group(program, 'processors') if group_processors: - deep_swapper_model_action = group_processors.add_argument('--deep-swapper-model', help = translator.get('help.model', __package__), default = config.get_str_value('processors', 'deep_swapper_model', 'iperov/elon_musk_224'), choices = deep_swapper_choices.deep_swapper_models) - deep_swapper_morph_action = group_processors.add_argument('--deep-swapper-morph', help = translator.get('help.morph', __package__), type = int, default = config.get_int_value('processors', 'deep_swapper_morph', '100'), choices = deep_swapper_choices.deep_swapper_morph_range, metavar = create_int_metavar(deep_swapper_choices.deep_swapper_morph_range)) - facefusion.args_store.register_argument(deep_swapper_model_action, scopes = [ 'api', 'cli' ]) - facefusion.args_store.register_argument(deep_swapper_morph_action, scopes = [ 'api', 'cli' ]) + facefusion.args_store.register_arguments( + [ + group_processors.add_argument( + '--deep-swapper-model', + help = translator.get('help.model', __package__), + default = config.get_str_value('processors', 'deep_swapper_model', 'iperov/elon_musk_224'), + choices = deep_swapper_choices.deep_swapper_models + ), + group_processors.add_argument( + '--deep-swapper-morph', + help = translator.get('help.morph', __package__), + type = int, + default = config.get_int_value('processors', 'deep_swapper_morph', '100'), + choices = deep_swapper_choices.deep_swapper_morph_range, + metavar = create_int_metavar(deep_swapper_choices.deep_swapper_morph_range) + ) + ], + scopes = [ 'api', 'cli' ] + ) def apply_args(args : Args, apply_state_item : ApplyStateItem) -> None: diff --git a/facefusion/processors/modules/expression_restorer/core.py b/facefusion/processors/modules/expression_restorer/core.py index bfa731fc..a2ef3bbf 100755 --- a/facefusion/processors/modules/expression_restorer/core.py +++ b/facefusion/processors/modules/expression_restorer/core.py @@ -99,12 +99,33 @@ def get_model_options() -> ModelOptions: def register_args(program : ArgumentParser) -> None: group_processors = find_argument_group(program, 'processors') if group_processors: - expression_restorer_model_action = group_processors.add_argument('--expression-restorer-model', help = translator.get('help.model', __package__), default = config.get_str_value('processors', 'expression_restorer_model', 'live_portrait'), choices = expression_restorer_choices.expression_restorer_models) - expression_restorer_factor_action = group_processors.add_argument('--expression-restorer-factor', help = translator.get('help.factor', __package__), type = int, default = config.get_int_value('processors', 'expression_restorer_factor', '80'), choices = expression_restorer_choices.expression_restorer_factor_range, metavar = create_int_metavar(expression_restorer_choices.expression_restorer_factor_range)) - expression_restorer_areas_action = group_processors.add_argument('--expression-restorer-areas', help = translator.get('help.areas', __package__).format(choices = ', '.join(expression_restorer_choices.expression_restorer_areas)), default = config.get_str_list('processors', 'expression_restorer_areas', ' '.join(expression_restorer_choices.expression_restorer_areas)), choices = expression_restorer_choices.expression_restorer_areas, nargs = '+', metavar = 'EXPRESSION_RESTORER_AREAS') - facefusion.args_store.register_argument(expression_restorer_model_action, scopes = [ 'api', 'cli' ]) - facefusion.args_store.register_argument(expression_restorer_factor_action, scopes = [ 'api', 'cli' ]) - facefusion.args_store.register_argument(expression_restorer_areas_action, scopes = [ 'api', 'cli' ]) + facefusion.args_store.register_arguments( + [ + group_processors.add_argument( + '--expression-restorer-model', + help = translator.get('help.model', __package__), + default = config.get_str_value('processors', 'expression_restorer_model', 'live_portrait'), + choices = expression_restorer_choices.expression_restorer_models + ), + group_processors.add_argument( + '--expression-restorer-factor', + help = translator.get('help.factor', __package__), + type = int, + default = config.get_int_value('processors', 'expression_restorer_factor', '80'), + choices = expression_restorer_choices.expression_restorer_factor_range, + metavar = create_int_metavar(expression_restorer_choices.expression_restorer_factor_range) + ), + group_processors.add_argument( + '--expression-restorer-areas', + help = translator.get('help.areas', __package__).format(choices = ', '.join(expression_restorer_choices.expression_restorer_areas)), + default = config.get_str_list('processors', 'expression_restorer_areas', ' '.join(expression_restorer_choices.expression_restorer_areas)), + choices = expression_restorer_choices.expression_restorer_areas, + nargs = '+', + metavar = 'EXPRESSION_RESTORER_AREAS' + ) + ], + scopes = [ 'api', 'cli' ] + ) def apply_args(args : Args, apply_state_item : ApplyStateItem) -> None: diff --git a/facefusion/processors/modules/face_debugger/core.py b/facefusion/processors/modules/face_debugger/core.py index 90970497..681a9c6a 100755 --- a/facefusion/processors/modules/face_debugger/core.py +++ b/facefusion/processors/modules/face_debugger/core.py @@ -30,8 +30,19 @@ def clear_inference_pool() -> None: def register_args(program : ArgumentParser) -> None: group_processors = find_argument_group(program, 'processors') if group_processors: - face_debugger_items_action = group_processors.add_argument('--face-debugger-items', help = translator.get('help.items', __package__).format(choices = ', '.join(face_debugger_choices.face_debugger_items)), default = config.get_str_list('processors', 'face_debugger_items', 'face-landmark-5/68 face-mask'), choices = face_debugger_choices.face_debugger_items, nargs = '+', metavar = 'FACE_DEBUGGER_ITEMS') - facefusion.args_store.register_argument(face_debugger_items_action, scopes = [ 'api', 'cli' ]) + facefusion.args_store.register_arguments( + [ + group_processors.add_argument( + '--face-debugger-items', + help = translator.get('help.items', __package__).format(choices = ', '.join(face_debugger_choices.face_debugger_items)), + default = config.get_str_list('processors', 'face_debugger_items', 'face-landmark-5/68 face-mask'), + choices = face_debugger_choices.face_debugger_items, + nargs = '+', + metavar = 'FACE_DEBUGGER_ITEMS' + ) + ], + scopes = [ 'api', 'cli' ] + ) def apply_args(args : Args, apply_state_item : ApplyStateItem) -> None: diff --git a/facefusion/processors/modules/face_editor/core.py b/facefusion/processors/modules/face_editor/core.py index ef559391..ac3088d5 100755 --- a/facefusion/processors/modules/face_editor/core.py +++ b/facefusion/processors/modules/face_editor/core.py @@ -129,36 +129,129 @@ def get_model_options() -> ModelOptions: def register_args(program : ArgumentParser) -> None: group_processors = find_argument_group(program, 'processors') if group_processors: - face_editor_model_action = group_processors.add_argument('--face-editor-model', help = translator.get('help.model', __package__), default = config.get_str_value('processors', 'face_editor_model', 'live_portrait'), choices = face_editor_choices.face_editor_models) - face_editor_eyebrow_direction_action = group_processors.add_argument('--face-editor-eyebrow-direction', help = translator.get('help.eyebrow_direction', __package__), type = float, default = config.get_float_value('processors', 'face_editor_eyebrow_direction', '0'), choices = face_editor_choices.face_editor_eyebrow_direction_range, metavar = create_float_metavar(face_editor_choices.face_editor_eyebrow_direction_range)) - face_editor_eye_gaze_horizontal_action = group_processors.add_argument('--face-editor-eye-gaze-horizontal', help = translator.get('help.eye_gaze_horizontal', __package__), type = float, default = config.get_float_value('processors', 'face_editor_eye_gaze_horizontal', '0'), choices = face_editor_choices.face_editor_eye_gaze_horizontal_range, metavar = create_float_metavar(face_editor_choices.face_editor_eye_gaze_horizontal_range)) - face_editor_eye_gaze_vertical_action = group_processors.add_argument('--face-editor-eye-gaze-vertical', help = translator.get('help.eye_gaze_vertical', __package__), type = float, default = config.get_float_value('processors', 'face_editor_eye_gaze_vertical', '0'), choices = face_editor_choices.face_editor_eye_gaze_vertical_range, metavar = create_float_metavar(face_editor_choices.face_editor_eye_gaze_vertical_range)) - face_editor_eye_open_ratio_action = group_processors.add_argument('--face-editor-eye-open-ratio', help = translator.get('help.eye_open_ratio', __package__), type = float, default = config.get_float_value('processors', 'face_editor_eye_open_ratio', '0'), choices = face_editor_choices.face_editor_eye_open_ratio_range, metavar = create_float_metavar(face_editor_choices.face_editor_eye_open_ratio_range)) - face_editor_lip_open_ratio_action = group_processors.add_argument('--face-editor-lip-open-ratio', help = translator.get('help.lip_open_ratio', __package__), type = float, default = config.get_float_value('processors', 'face_editor_lip_open_ratio', '0'), choices = face_editor_choices.face_editor_lip_open_ratio_range, metavar = create_float_metavar(face_editor_choices.face_editor_lip_open_ratio_range)) - face_editor_mouth_grim_action = group_processors.add_argument('--face-editor-mouth-grim', help = translator.get('help.mouth_grim', __package__), type = float, default = config.get_float_value('processors', 'face_editor_mouth_grim', '0'), choices = face_editor_choices.face_editor_mouth_grim_range, metavar = create_float_metavar(face_editor_choices.face_editor_mouth_grim_range)) - face_editor_mouth_pout_action = group_processors.add_argument('--face-editor-mouth-pout', help = translator.get('help.mouth_pout', __package__), type = float, default = config.get_float_value('processors', 'face_editor_mouth_pout', '0'), choices = face_editor_choices.face_editor_mouth_pout_range, metavar = create_float_metavar(face_editor_choices.face_editor_mouth_pout_range)) - face_editor_mouth_purse_action = group_processors.add_argument('--face-editor-mouth-purse', help = translator.get('help.mouth_purse', __package__), type = float, default = config.get_float_value('processors', 'face_editor_mouth_purse', '0'), choices = face_editor_choices.face_editor_mouth_purse_range, metavar = create_float_metavar(face_editor_choices.face_editor_mouth_purse_range)) - face_editor_mouth_smile_action = group_processors.add_argument('--face-editor-mouth-smile', help = translator.get('help.mouth_smile', __package__), type = float, default = config.get_float_value('processors', 'face_editor_mouth_smile', '0'), choices = face_editor_choices.face_editor_mouth_smile_range, metavar = create_float_metavar(face_editor_choices.face_editor_mouth_smile_range)) - face_editor_mouth_position_horizontal_action = group_processors.add_argument('--face-editor-mouth-position-horizontal', help = translator.get('help.mouth_position_horizontal', __package__), type = float, default = config.get_float_value('processors', 'face_editor_mouth_position_horizontal', '0'), choices = face_editor_choices.face_editor_mouth_position_horizontal_range, metavar = create_float_metavar(face_editor_choices.face_editor_mouth_position_horizontal_range)) - face_editor_mouth_position_vertical_action = group_processors.add_argument('--face-editor-mouth-position-vertical', help = translator.get('help.mouth_position_vertical', __package__), type = float, default = config.get_float_value('processors', 'face_editor_mouth_position_vertical', '0'), choices = face_editor_choices.face_editor_mouth_position_vertical_range, metavar = create_float_metavar(face_editor_choices.face_editor_mouth_position_vertical_range)) - face_editor_head_pitch_action = group_processors.add_argument('--face-editor-head-pitch', help = translator.get('help.head_pitch', __package__), type = float, default = config.get_float_value('processors', 'face_editor_head_pitch', '0'), choices = face_editor_choices.face_editor_head_pitch_range, metavar = create_float_metavar(face_editor_choices.face_editor_head_pitch_range)) - face_editor_head_yaw_action = group_processors.add_argument('--face-editor-head-yaw', help = translator.get('help.head_yaw', __package__), type = float, default = config.get_float_value('processors', 'face_editor_head_yaw', '0'), choices = face_editor_choices.face_editor_head_yaw_range, metavar = create_float_metavar(face_editor_choices.face_editor_head_yaw_range)) - face_editor_head_roll_action = group_processors.add_argument('--face-editor-head-roll', help = translator.get('help.head_roll', __package__), type = float, default = config.get_float_value('processors', 'face_editor_head_roll', '0'), choices = face_editor_choices.face_editor_head_roll_range, metavar = create_float_metavar(face_editor_choices.face_editor_head_roll_range)) - facefusion.args_store.register_argument(face_editor_model_action, scopes = [ 'api', 'cli' ]) - facefusion.args_store.register_argument(face_editor_eyebrow_direction_action, scopes = [ 'api', 'cli' ]) - facefusion.args_store.register_argument(face_editor_eye_gaze_horizontal_action, scopes = [ 'api', 'cli' ]) - facefusion.args_store.register_argument(face_editor_eye_gaze_vertical_action, scopes = [ 'api', 'cli' ]) - facefusion.args_store.register_argument(face_editor_eye_open_ratio_action, scopes = [ 'api', 'cli' ]) - facefusion.args_store.register_argument(face_editor_lip_open_ratio_action, scopes = [ 'api', 'cli' ]) - facefusion.args_store.register_argument(face_editor_mouth_grim_action, scopes = [ 'api', 'cli' ]) - facefusion.args_store.register_argument(face_editor_mouth_pout_action, scopes = [ 'api', 'cli' ]) - facefusion.args_store.register_argument(face_editor_mouth_purse_action, scopes = [ 'api', 'cli' ]) - facefusion.args_store.register_argument(face_editor_mouth_smile_action, scopes = [ 'api', 'cli' ]) - facefusion.args_store.register_argument(face_editor_mouth_position_horizontal_action, scopes = [ 'api', 'cli' ]) - facefusion.args_store.register_argument(face_editor_mouth_position_vertical_action, scopes = [ 'api', 'cli' ]) - facefusion.args_store.register_argument(face_editor_head_pitch_action, scopes = [ 'api', 'cli' ]) - facefusion.args_store.register_argument(face_editor_head_yaw_action, scopes = [ 'api', 'cli' ]) - facefusion.args_store.register_argument(face_editor_head_roll_action, scopes = [ 'api', 'cli' ]) + facefusion.args_store.register_arguments( + [ + group_processors.add_argument( + '--face-editor-model', + help = translator.get('help.model', __package__), + default = config.get_str_value('processors', 'face_editor_model', 'live_portrait'), + choices = face_editor_choices.face_editor_models + ), + group_processors.add_argument( + '--face-editor-eyebrow-direction', + help = translator.get('help.eyebrow_direction', __package__), + type = float, + default = config.get_float_value('processors', 'face_editor_eyebrow_direction', '0'), + choices = face_editor_choices.face_editor_eyebrow_direction_range, + metavar = create_float_metavar(face_editor_choices.face_editor_eyebrow_direction_range) + ), + group_processors.add_argument( + '--face-editor-eye-gaze-horizontal', + help = translator.get('help.eye_gaze_horizontal', __package__), + type = float, + default = config.get_float_value('processors', 'face_editor_eye_gaze_horizontal', '0'), + choices = face_editor_choices.face_editor_eye_gaze_horizontal_range, + metavar = create_float_metavar(face_editor_choices.face_editor_eye_gaze_horizontal_range) + ), + group_processors.add_argument( + '--face-editor-eye-gaze-vertical', + help = translator.get('help.eye_gaze_vertical', __package__), + type = float, + default = config.get_float_value('processors', 'face_editor_eye_gaze_vertical', '0'), + choices = face_editor_choices.face_editor_eye_gaze_vertical_range, + metavar = create_float_metavar(face_editor_choices.face_editor_eye_gaze_vertical_range) + ), + group_processors.add_argument( + '--face-editor-eye-open-ratio', + help = translator.get('help.eye_open_ratio', __package__), + type = float, + default = config.get_float_value('processors', 'face_editor_eye_open_ratio', '0'), + choices = face_editor_choices.face_editor_eye_open_ratio_range, + metavar = create_float_metavar(face_editor_choices.face_editor_eye_open_ratio_range) + ), + group_processors.add_argument( + '--face-editor-lip-open-ratio', + help = translator.get('help.lip_open_ratio', __package__), + type = float, + default = config.get_float_value('processors', 'face_editor_lip_open_ratio', '0'), + choices = face_editor_choices.face_editor_lip_open_ratio_range, + metavar = create_float_metavar(face_editor_choices.face_editor_lip_open_ratio_range) + ), + group_processors.add_argument( + '--face-editor-mouth-grim', + help = translator.get('help.mouth_grim', __package__), + type = float, + default = config.get_float_value('processors', 'face_editor_mouth_grim', '0'), + choices = face_editor_choices.face_editor_mouth_grim_range, + metavar = create_float_metavar(face_editor_choices.face_editor_mouth_grim_range) + ), + group_processors.add_argument( + '--face-editor-mouth-pout', + help = translator.get('help.mouth_pout', __package__), + type = float, + default = config.get_float_value('processors', 'face_editor_mouth_pout', '0'), + choices = face_editor_choices.face_editor_mouth_pout_range, + metavar = create_float_metavar(face_editor_choices.face_editor_mouth_pout_range) + ), + group_processors.add_argument( + '--face-editor-mouth-purse', + help = translator.get('help.mouth_purse', __package__), + type = float, + default = config.get_float_value('processors', 'face_editor_mouth_purse', '0'), + choices = face_editor_choices.face_editor_mouth_purse_range, + metavar = create_float_metavar(face_editor_choices.face_editor_mouth_purse_range) + ), + group_processors.add_argument( + '--face-editor-mouth-smile', + help = translator.get('help.mouth_smile', __package__), + type = float, + default = config.get_float_value('processors', 'face_editor_mouth_smile', '0'), + choices = face_editor_choices.face_editor_mouth_smile_range, + metavar = create_float_metavar(face_editor_choices.face_editor_mouth_smile_range) + ), + group_processors.add_argument( + '--face-editor-mouth-position-horizontal', + help = translator.get('help.mouth_position_horizontal', __package__), + type = float, + default = config.get_float_value('processors', 'face_editor_mouth_position_horizontal', '0'), + choices = face_editor_choices.face_editor_mouth_position_horizontal_range, + metavar = create_float_metavar(face_editor_choices.face_editor_mouth_position_horizontal_range) + ), + group_processors.add_argument( + '--face-editor-mouth-position-vertical', + help = translator.get('help.mouth_position_vertical', __package__), + type = float, + default = config.get_float_value('processors', 'face_editor_mouth_position_vertical', '0'), + choices = face_editor_choices.face_editor_mouth_position_vertical_range, + metavar = create_float_metavar(face_editor_choices.face_editor_mouth_position_vertical_range) + ), + group_processors.add_argument( + '--face-editor-head-pitch', + help = translator.get('help.head_pitch', __package__), + type = float, + default = config.get_float_value('processors', 'face_editor_head_pitch', '0'), + choices = face_editor_choices.face_editor_head_pitch_range, + metavar = create_float_metavar(face_editor_choices.face_editor_head_pitch_range) + ), + group_processors.add_argument( + '--face-editor-head-yaw', + help = translator.get('help.head_yaw', __package__), + type = float, + default = config.get_float_value('processors', 'face_editor_head_yaw', '0'), + choices = face_editor_choices.face_editor_head_yaw_range, + metavar = create_float_metavar(face_editor_choices.face_editor_head_yaw_range) + ), + group_processors.add_argument( + '--face-editor-head-roll', + help = translator.get('help.head_roll', __package__), + type = float, + default = config.get_float_value('processors', 'face_editor_head_roll', '0'), + choices = face_editor_choices.face_editor_head_roll_range, + metavar = create_float_metavar(face_editor_choices.face_editor_head_roll_range) + ) + ], + scopes = [ 'api', 'cli' ] + ) def apply_args(args : Args, apply_state_item : ApplyStateItem) -> None: diff --git a/facefusion/processors/modules/face_enhancer/core.py b/facefusion/processors/modules/face_enhancer/core.py index 0337adf5..bf626ee8 100755 --- a/facefusion/processors/modules/face_enhancer/core.py +++ b/facefusion/processors/modules/face_enhancer/core.py @@ -292,12 +292,33 @@ def get_model_options() -> ModelOptions: def register_args(program : ArgumentParser) -> None: group_processors = find_argument_group(program, 'processors') if group_processors: - face_enhancer_model_action = group_processors.add_argument('--face-enhancer-model', help = translator.get('help.model', __package__), default = config.get_str_value('processors', 'face_enhancer_model', 'gfpgan_1.4'), choices = face_enhancer_choices.face_enhancer_models) - face_enhancer_blend_action = group_processors.add_argument('--face-enhancer-blend', help = translator.get('help.blend', __package__), type = int, default = config.get_int_value('processors', 'face_enhancer_blend', '80'), choices = face_enhancer_choices.face_enhancer_blend_range, metavar = create_int_metavar(face_enhancer_choices.face_enhancer_blend_range)) - face_enhancer_weight_action = group_processors.add_argument('--face-enhancer-weight', help = translator.get('help.weight', __package__), type = float, default = config.get_float_value('processors', 'face_enhancer_weight', '0.5'), choices = face_enhancer_choices.face_enhancer_weight_range, metavar = create_float_metavar(face_enhancer_choices.face_enhancer_weight_range)) - facefusion.args_store.register_argument(face_enhancer_model_action, scopes = [ 'api', 'cli' ]) - facefusion.args_store.register_argument(face_enhancer_blend_action, scopes = [ 'api', 'cli' ]) - facefusion.args_store.register_argument(face_enhancer_weight_action, scopes = [ 'api', 'cli' ]) + facefusion.args_store.register_arguments( + [ + group_processors.add_argument( + '--face-enhancer-model', + help = translator.get('help.model', __package__), + default = config.get_str_value('processors', 'face_enhancer_model', 'gfpgan_1.4'), + choices = face_enhancer_choices.face_enhancer_models + ), + group_processors.add_argument( + '--face-enhancer-blend', + help = translator.get('help.blend', __package__), + type = int, + default = config.get_int_value('processors', 'face_enhancer_blend', '80'), + choices = face_enhancer_choices.face_enhancer_blend_range, + metavar = create_int_metavar(face_enhancer_choices.face_enhancer_blend_range) + ), + group_processors.add_argument( + '--face-enhancer-weight', + help = translator.get('help.weight', __package__), + type = float, + default = config.get_float_value('processors', 'face_enhancer_weight', '0.5'), + choices = face_enhancer_choices.face_enhancer_weight_range, + metavar = create_float_metavar(face_enhancer_choices.face_enhancer_weight_range) + ) + ], + scopes = [ 'api', 'cli' ] + ) def apply_args(args : Args, apply_state_item : ApplyStateItem) -> None: diff --git a/facefusion/processors/modules/face_swapper/core.py b/facefusion/processors/modules/face_swapper/core.py index b10b7f47..75226d6d 100755 --- a/facefusion/processors/modules/face_swapper/core.py +++ b/facefusion/processors/modules/face_swapper/core.py @@ -513,14 +513,37 @@ def get_model_name() -> str: def register_args(program : ArgumentParser) -> None: group_processors = find_argument_group(program, 'processors') if group_processors: - face_swapper_model_action = group_processors.add_argument('--face-swapper-model', help = translator.get('help.model', __package__), default = config.get_str_value('processors', 'face_swapper_model', 'hyperswap_1a_256'), choices = face_swapper_choices.face_swapper_models) + facefusion.args_store.register_arguments( + [ + group_processors.add_argument( + '--face-swapper-model', + help = translator.get('help.model', __package__), + default = config.get_str_value('processors', 'face_swapper_model', 'hyperswap_1a_256'), + choices = face_swapper_choices.face_swapper_models + ) + ], + scopes = [ 'api', 'cli' ] + ) known_args, _ = program.parse_known_args() face_swapper_pixel_boost_choices = face_swapper_choices.face_swapper_set.get(known_args.face_swapper_model) - face_swapper_pixel_boost_action = group_processors.add_argument('--face-swapper-pixel-boost', help = translator.get('help.pixel_boost', __package__), default = config.get_str_value('processors', 'face_swapper_pixel_boost', get_first(face_swapper_pixel_boost_choices)), choices = face_swapper_pixel_boost_choices) - face_swapper_weight_action = group_processors.add_argument('--face-swapper-weight', help = translator.get('help.weight', __package__), type = float, default = config.get_float_value('processors', 'face_swapper_weight', '0.5'), choices = face_swapper_choices.face_swapper_weight_range) - facefusion.args_store.register_argument(face_swapper_model_action, scopes = [ 'api', 'cli' ]) - facefusion.args_store.register_argument(face_swapper_pixel_boost_action, scopes = [ 'api', 'cli' ]) - facefusion.args_store.register_argument(face_swapper_weight_action, scopes = [ 'api', 'cli' ]) + facefusion.args_store.register_arguments( + [ + group_processors.add_argument( + '--face-swapper-pixel-boost', + help = translator.get('help.pixel_boost', __package__), + default = config.get_str_value('processors', 'face_swapper_pixel_boost', get_first(face_swapper_pixel_boost_choices)), + choices = face_swapper_pixel_boost_choices + ), + group_processors.add_argument( + '--face-swapper-weight', + help = translator.get('help.weight', __package__), + type = float, + default = config.get_float_value('processors', 'face_swapper_weight', '0.5'), + choices = face_swapper_choices.face_swapper_weight_range + ) + ], + scopes = [ 'api', 'cli' ] + ) def apply_args(args : Args, apply_state_item : ApplyStateItem) -> None: diff --git a/facefusion/processors/modules/frame_colorizer/core.py b/facefusion/processors/modules/frame_colorizer/core.py index 62f920a5..462c9d35 100644 --- a/facefusion/processors/modules/frame_colorizer/core.py +++ b/facefusion/processors/modules/frame_colorizer/core.py @@ -184,12 +184,32 @@ def get_model_options() -> ModelOptions: def register_args(program : ArgumentParser) -> None: group_processors = find_argument_group(program, 'processors') if group_processors: - frame_colorizer_model_action = group_processors.add_argument('--frame-colorizer-model', help = translator.get('help.model', __package__), default = config.get_str_value('processors', 'frame_colorizer_model', 'ddcolor'), choices = frame_colorizer_choices.frame_colorizer_models) - frame_colorizer_size_action = group_processors.add_argument('--frame-colorizer-size', help = translator.get('help.size', __package__), type = str, default = config.get_str_value('processors', 'frame_colorizer_size', '256x256'), choices = frame_colorizer_choices.frame_colorizer_sizes) - frame_colorizer_blend_action = group_processors.add_argument('--frame-colorizer-blend', help = translator.get('help.blend', __package__), type = int, default = config.get_int_value('processors', 'frame_colorizer_blend', '100'), choices = frame_colorizer_choices.frame_colorizer_blend_range, metavar = create_int_metavar(frame_colorizer_choices.frame_colorizer_blend_range)) - facefusion.args_store.register_argument(frame_colorizer_model_action, scopes = [ 'api', 'cli' ]) - facefusion.args_store.register_argument(frame_colorizer_size_action, scopes = [ 'api', 'cli' ]) - facefusion.args_store.register_argument(frame_colorizer_blend_action, scopes = [ 'api', 'cli' ]) + facefusion.args_store.register_arguments( + [ + group_processors.add_argument( + '--frame-colorizer-model', + help = translator.get('help.model', __package__), + default = config.get_str_value('processors', 'frame_colorizer_model', 'ddcolor'), + choices = frame_colorizer_choices.frame_colorizer_models + ), + group_processors.add_argument( + '--frame-colorizer-size', + help = translator.get('help.size', __package__), + type = str, + default = config.get_str_value('processors', 'frame_colorizer_size', '256x256'), + choices = frame_colorizer_choices.frame_colorizer_sizes + ), + group_processors.add_argument( + '--frame-colorizer-blend', + help = translator.get('help.blend', __package__), + type = int, + default = config.get_int_value('processors', 'frame_colorizer_blend', '100'), + choices = frame_colorizer_choices.frame_colorizer_blend_range, + metavar = create_int_metavar(frame_colorizer_choices.frame_colorizer_blend_range) + ) + ], + scopes = [ 'api', 'cli' ] + ) def apply_args(args : Args, apply_state_item : ApplyStateItem) -> None: diff --git a/facefusion/processors/modules/frame_enhancer/core.py b/facefusion/processors/modules/frame_enhancer/core.py index f1d6ba26..81ea622d 100644 --- a/facefusion/processors/modules/frame_enhancer/core.py +++ b/facefusion/processors/modules/frame_enhancer/core.py @@ -573,10 +573,25 @@ def get_frame_enhancer_model() -> str: def register_args(program : ArgumentParser) -> None: group_processors = find_argument_group(program, 'processors') if group_processors: - frame_enhancer_model_action = group_processors.add_argument('--frame-enhancer-model', help = translator.get('help.model', __package__), default = config.get_str_value('processors', 'frame_enhancer_model', 'span_kendata_x4'), choices = frame_enhancer_choices.frame_enhancer_models) - frame_enhancer_blend_action = group_processors.add_argument('--frame-enhancer-blend', help = translator.get('help.blend', __package__), type = int, default = config.get_int_value('processors', 'frame_enhancer_blend', '80'), choices = frame_enhancer_choices.frame_enhancer_blend_range, metavar = create_int_metavar(frame_enhancer_choices.frame_enhancer_blend_range)) - facefusion.args_store.register_argument(frame_enhancer_model_action, scopes = [ 'api', 'cli' ]) - facefusion.args_store.register_argument(frame_enhancer_blend_action, scopes = [ 'api', 'cli' ]) + facefusion.args_store.register_arguments( + [ + group_processors.add_argument( + '--frame-enhancer-model', + help = translator.get('help.model', __package__), + default = config.get_str_value('processors', 'frame_enhancer_model', 'span_kendata_x4'), + choices = frame_enhancer_choices.frame_enhancer_models + ), + group_processors.add_argument( + '--frame-enhancer-blend', + help = translator.get('help.blend', __package__), + type = int, + default = config.get_int_value('processors', 'frame_enhancer_blend', '80'), + choices = frame_enhancer_choices.frame_enhancer_blend_range, + metavar = create_int_metavar(frame_enhancer_choices.frame_enhancer_blend_range) + ) + ], + scopes = [ 'api', 'cli' ] + ) def apply_args(args : Args, apply_state_item : ApplyStateItem) -> None: diff --git a/facefusion/processors/modules/lip_syncer/core.py b/facefusion/processors/modules/lip_syncer/core.py index 5e77c63d..717ae0a2 100755 --- a/facefusion/processors/modules/lip_syncer/core.py +++ b/facefusion/processors/modules/lip_syncer/core.py @@ -132,10 +132,25 @@ def get_model_options() -> ModelOptions: def register_args(program : ArgumentParser) -> None: group_processors = find_argument_group(program, 'processors') if group_processors: - lip_syncer_model_action = group_processors.add_argument('--lip-syncer-model', help = translator.get('help.model', __package__), default = config.get_str_value('processors', 'lip_syncer_model', 'wav2lip_gan_96'), choices = lip_syncer_choices.lip_syncer_models) - lip_syncer_weight_action = group_processors.add_argument('--lip-syncer-weight', help = translator.get('help.weight', __package__), type = float, default = config.get_float_value('processors', 'lip_syncer_weight', '0.5'), choices = lip_syncer_choices.lip_syncer_weight_range, metavar = create_float_metavar(lip_syncer_choices.lip_syncer_weight_range)) - facefusion.args_store.register_argument(lip_syncer_model_action, scopes = [ 'api', 'cli' ]) - facefusion.args_store.register_argument(lip_syncer_weight_action, scopes = [ 'api', 'cli' ]) + facefusion.args_store.register_arguments( + [ + group_processors.add_argument( + '--lip-syncer-model', + help = translator.get('help.model', __package__), + default = config.get_str_value('processors', 'lip_syncer_model', 'wav2lip_gan_96'), + choices = lip_syncer_choices.lip_syncer_models + ), + group_processors.add_argument( + '--lip-syncer-weight', + help = translator.get('help.weight', __package__), + type = float, + default = config.get_float_value('processors', 'lip_syncer_weight', '0.5'), + choices = lip_syncer_choices.lip_syncer_weight_range, + metavar = create_float_metavar(lip_syncer_choices.lip_syncer_weight_range) + ) + ], + scopes = [ 'api', 'cli' ] + ) def apply_args(args : Args, apply_state_item : ApplyStateItem) -> None: diff --git a/facefusion/program.py b/facefusion/program.py index 54bc8845..8fb01d60 100755 --- a/facefusion/program.py +++ b/facefusion/program.py @@ -24,12 +24,14 @@ def create_config_path_program() -> ArgumentParser: program = ArgumentParser(add_help = False) group_paths = program.add_argument_group('paths') - args_store.register_argument( - group_paths.add_argument( - '--config-path', - help = translator.get('help.config_path'), - default = 'facefusion.ini' - ), + args_store.register_arguments( + [ + group_paths.add_argument( + '--config-path', + help = translator.get('help.config_path'), + default = 'facefusion.ini' + ) + ], scopes = [ 'cli' ] ) @@ -41,13 +43,15 @@ def create_workflow_program() -> ArgumentParser: program = ArgumentParser(add_help = False) group_paths = program.add_argument_group('paths') - args_store.register_argument( - group_paths.add_argument( - '--workflow', - help = translator.get('help.workflow'), - default = config.get_str_value('workflow', 'workflow', 'auto'), - choices = facefusion.choices.workflows - ), + args_store.register_arguments( + [ + group_paths.add_argument( + '--workflow', + help = translator.get('help.workflow'), + default = config.get_str_value('workflow', 'workflow', 'auto'), + choices = facefusion.choices.workflows + ) + ], scopes = [ 'api', 'cli' ] ) @@ -58,12 +62,14 @@ def create_temp_path_program() -> ArgumentParser: program = ArgumentParser(add_help = False) group_paths = program.add_argument_group('paths') - args_store.register_argument( - group_paths.add_argument( - '--temp-path', - help = translator.get('help.temp_path'), - default = config.get_str_value('paths', 'temp_path', tempfile.gettempdir()) - ), + args_store.register_arguments( + [ + group_paths.add_argument( + '--temp-path', + help = translator.get('help.temp_path'), + default = config.get_str_value('paths', 'temp_path', tempfile.gettempdir()) + ) + ], scopes = [ 'cli' ] ) @@ -74,12 +80,14 @@ def create_jobs_path_program() -> ArgumentParser: program = ArgumentParser(add_help = False) group_paths = program.add_argument_group('paths') - args_store.register_argument( - group_paths.add_argument( - '--jobs-path', - help = translator.get('help.jobs_path'), - default = config.get_str_value('paths', 'jobs_path', '.jobs') - ), + args_store.register_arguments( + [ + group_paths.add_argument( + '--jobs-path', + help = translator.get('help.jobs_path'), + default = config.get_str_value('paths', 'jobs_path', '.jobs') + ) + ], scopes = [ 'cli' ] ) @@ -90,13 +98,15 @@ def create_source_paths_program() -> ArgumentParser: program = ArgumentParser(add_help = False) group_paths = program.add_argument_group('paths') - args_store.register_argument( - group_paths.add_argument( - '-s', '--source-paths', - help = translator.get('help.source_paths'), - default = config.get_str_list('paths', 'source_paths'), - nargs = '+' - ), + args_store.register_arguments( + [ + group_paths.add_argument( + '-s', '--source-paths', + help = translator.get('help.source_paths'), + default = config.get_str_list('paths', 'source_paths'), + nargs = '+' + ) + ], scopes = [ 'cli' ] ) @@ -107,12 +117,14 @@ def create_target_path_program() -> ArgumentParser: program = ArgumentParser(add_help = False) group_paths = program.add_argument_group('paths') - args_store.register_argument( - group_paths.add_argument( - '-t', '--target-path', - help = translator.get('help.target_path'), - default = config.get_str_value('paths', 'target_path') - ), + args_store.register_arguments( + [ + group_paths.add_argument( + '-t', '--target-path', + help = translator.get('help.target_path'), + default = config.get_str_value('paths', 'target_path') + ) + ], scopes = [ 'cli' ] ) @@ -123,12 +135,14 @@ def create_output_path_program() -> ArgumentParser: program = ArgumentParser(add_help = False) group_paths = program.add_argument_group('paths') - args_store.register_argument( - group_paths.add_argument( - '-o', '--output-path', - help = translator.get('help.output_path'), - default = config.get_str_value('paths', 'output_path') - ), + args_store.register_arguments( + [ + group_paths.add_argument( + '-o', '--output-path', + help = translator.get('help.output_path'), + default = config.get_str_value('paths', 'output_path') + ) + ], scopes = [ 'cli' ] ) @@ -139,12 +153,14 @@ def create_source_pattern_program() -> ArgumentParser: program = ArgumentParser(add_help = False) group_patterns = program.add_argument_group('patterns') - args_store.register_argument( - group_patterns.add_argument( - '-s', '--source-pattern', - help = translator.get('help.source_pattern'), - default = config.get_str_value('patterns', 'source_pattern') - ), + args_store.register_arguments( + [ + group_patterns.add_argument( + '-s', '--source-pattern', + help = translator.get('help.source_pattern'), + default = config.get_str_value('patterns', 'source_pattern') + ) + ], scopes = [ 'cli' ] ) @@ -155,12 +171,14 @@ def create_target_pattern_program() -> ArgumentParser: program = ArgumentParser(add_help = False) group_patterns = program.add_argument_group('patterns') - args_store.register_argument( - group_patterns.add_argument( - '-t', '--target-pattern', - help = translator.get('help.target_pattern'), - default = config.get_str_value('patterns', 'target_pattern') - ), + args_store.register_arguments( + [ + group_patterns.add_argument( + '-t', '--target-pattern', + help = translator.get('help.target_pattern'), + default = config.get_str_value('patterns', 'target_pattern') + ) + ], scopes = [ 'cli' ] ) @@ -171,12 +189,14 @@ def create_output_pattern_program() -> ArgumentParser: program = ArgumentParser(add_help = False) group_patterns = program.add_argument_group('patterns') - args_store.register_argument( - group_patterns.add_argument( - '-o', '--output-pattern', - help = translator.get('help.output_pattern'), - default = config.get_str_value('patterns', 'output_pattern') - ), + args_store.register_arguments( + [ + group_patterns.add_argument( + '-o', '--output-pattern', + help = translator.get('help.output_pattern'), + default = config.get_str_value('patterns', 'output_pattern') + ) + ], scopes = [ 'cli' ] ) @@ -187,59 +207,69 @@ def create_face_detector_program() -> ArgumentParser: program = ArgumentParser(add_help = False) group_face_detector = program.add_argument_group('face detector') - args_store.register_argument( - group_face_detector.add_argument( - '--face-detector-model', - help = translator.get('help.face_detector_model'), - default = config.get_str_value('face_detector', 'face_detector_model', 'yolo_face'), - choices = facefusion.choices.face_detector_models - ), + args_store.register_arguments( + [ + group_face_detector.add_argument( + '--face-detector-model', + help = translator.get('help.face_detector_model'), + default = config.get_str_value('face_detector', 'face_detector_model', 'yolo_face'), + choices = facefusion.choices.face_detector_models + ) + ], scopes = [ 'api', 'cli' ] ) known_args, _ = program.parse_known_args() face_detector_size_choices = facefusion.choices.face_detector_set.get(known_args.face_detector_model) - args_store.register_argument( - group_face_detector.add_argument( - '--face-detector-size', - help = translator.get('help.face_detector_size'), - default = config.get_str_value('face_detector', 'face_detector_size', get_last(face_detector_size_choices)), - choices = face_detector_size_choices - ), + args_store.register_arguments( + [ + group_face_detector.add_argument( + '--face-detector-size', + help = translator.get('help.face_detector_size'), + default = config.get_str_value('face_detector', 'face_detector_size', get_last(face_detector_size_choices)), + choices = face_detector_size_choices + ) + ], scopes = [ 'api', 'cli' ] ) - args_store.register_argument( - group_face_detector.add_argument( - '--face-detector-margin', - help = translator.get('help.face_detector_margin'), - type = partial(sanitize_int_range, int_range = facefusion.choices.face_detector_margin_range), - default = config.get_int_list('face_detector', 'face_detector_margin', '0 0 0 0'), - nargs = '+' - ), + args_store.register_arguments( + [ + group_face_detector.add_argument( + '--face-detector-margin', + help = translator.get('help.face_detector_margin'), + type = partial(sanitize_int_range, int_range = facefusion.choices.face_detector_margin_range), + default = config.get_int_list('face_detector', 'face_detector_margin', '0 0 0 0'), + nargs = '+' + ) + ], scopes = [ 'api', 'cli' ] ) - args_store.register_argument( - group_face_detector.add_argument( - '--face-detector-angles', - help = translator.get('help.face_detector_angles'), - type = int, - default = config.get_int_list('face_detector', 'face_detector_angles', '0'), - choices = facefusion.choices.face_detector_angles, - nargs = '+', - metavar = 'FACE_DETECTOR_ANGLES' - ), + args_store.register_arguments( + [ + group_face_detector.add_argument( + '--face-detector-angles', + help = translator.get('help.face_detector_angles'), + type = int, + default = config.get_int_list('face_detector', 'face_detector_angles', '0'), + choices = facefusion.choices.face_detector_angles, + nargs = '+', + metavar = 'FACE_DETECTOR_ANGLES' + ) + ], scopes = [ 'api', 'cli' ] ) - args_store.register_argument( - group_face_detector.add_argument( - '--face-detector-score', - help = translator.get('help.face_detector_score'), - type = float, - default = config.get_float_value('face_detector', 'face_detector_score', '0.5'), - choices = facefusion.choices.face_detector_score_range, - metavar = create_float_metavar(facefusion.choices.face_detector_score_range) - ), + args_store.register_arguments( + [ + group_face_detector.add_argument( + '--face-detector-score', + help = translator.get('help.face_detector_score'), + type = float, + default = config.get_float_value('face_detector', 'face_detector_score', '0.5'), + choices = facefusion.choices.face_detector_score_range, + metavar = create_float_metavar(facefusion.choices.face_detector_score_range) + ) + ], scopes = [ 'api', 'cli' ] ) @@ -250,24 +280,28 @@ def create_face_landmarker_program() -> ArgumentParser: program = ArgumentParser(add_help = False) group_face_landmarker = program.add_argument_group('face landmarker') - args_store.register_argument( - group_face_landmarker.add_argument( - '--face-landmarker-model', - help = translator.get('help.face_landmarker_model'), - default = config.get_str_value('face_landmarker', 'face_landmarker_model', '2dfan4'), - choices = facefusion.choices.face_landmarker_models - ), + args_store.register_arguments( + [ + group_face_landmarker.add_argument( + '--face-landmarker-model', + help = translator.get('help.face_landmarker_model'), + default = config.get_str_value('face_landmarker', 'face_landmarker_model', '2dfan4'), + choices = facefusion.choices.face_landmarker_models + ) + ], scopes = [ 'api', 'cli' ] ) - args_store.register_argument( - group_face_landmarker.add_argument( - '--face-landmarker-score', - help = translator.get('help.face_landmarker_score'), - type = float, - default = config.get_float_value('face_landmarker', 'face_landmarker_score', '0.5'), - choices = facefusion.choices.face_landmarker_score_range, - metavar = create_float_metavar(facefusion.choices.face_landmarker_score_range) - ), + args_store.register_arguments( + [ + group_face_landmarker.add_argument( + '--face-landmarker-score', + help = translator.get('help.face_landmarker_score'), + type = float, + default = config.get_float_value('face_landmarker', 'face_landmarker_score', '0.5'), + choices = facefusion.choices.face_landmarker_score_range, + metavar = create_float_metavar(facefusion.choices.face_landmarker_score_range) + ) + ], scopes = [ 'api', 'cli' ] ) @@ -278,91 +312,109 @@ def create_face_selector_program() -> ArgumentParser: program = ArgumentParser(add_help = False) group_face_selector = program.add_argument_group('face selector') - args_store.register_argument( - group_face_selector.add_argument( - '--face-selector-mode', - help = translator.get('help.face_selector_mode'), - default = config.get_str_value('face_selector', 'face_selector_mode', 'reference'), - choices = facefusion.choices.face_selector_modes - ), + args_store.register_arguments( + [ + group_face_selector.add_argument( + '--face-selector-mode', + help = translator.get('help.face_selector_mode'), + default = config.get_str_value('face_selector', 'face_selector_mode', 'reference'), + choices = facefusion.choices.face_selector_modes + ) + ], scopes = [ 'api', 'cli' ] ) - args_store.register_argument( - group_face_selector.add_argument( - '--face-selector-order', - help = translator.get('help.face_selector_order'), - default = config.get_str_value('face_selector', 'face_selector_order', 'large-small'), - choices = facefusion.choices.face_selector_orders - ), + args_store.register_arguments( + [ + group_face_selector.add_argument( + '--face-selector-order', + help = translator.get('help.face_selector_order'), + default = config.get_str_value('face_selector', 'face_selector_order', 'large-small'), + choices = facefusion.choices.face_selector_orders + ) + ], scopes = [ 'api', 'cli' ] ) - args_store.register_argument( - group_face_selector.add_argument( - '--face-selector-age-start', - help = translator.get('help.face_selector_age_start'), - type = int, - default = config.get_int_value('face_selector', 'face_selector_age_start'), - choices = facefusion.choices.face_selector_age_range, - metavar = create_int_metavar(facefusion.choices.face_selector_age_range) - ), + args_store.register_arguments( + [ + group_face_selector.add_argument( + '--face-selector-age-start', + help = translator.get('help.face_selector_age_start'), + type = int, + default = config.get_int_value('face_selector', 'face_selector_age_start'), + choices = facefusion.choices.face_selector_age_range, + metavar = create_int_metavar(facefusion.choices.face_selector_age_range) + ) + ], scopes = [ 'api', 'cli' ] ) - args_store.register_argument( - group_face_selector.add_argument( - '--face-selector-age-end', - help = translator.get('help.face_selector_age_end'), - type = int, - default = config.get_int_value('face_selector', 'face_selector_age_end'), - choices = facefusion.choices.face_selector_age_range, - metavar = create_int_metavar(facefusion.choices.face_selector_age_range) - ), + args_store.register_arguments( + [ + group_face_selector.add_argument( + '--face-selector-age-end', + help = translator.get('help.face_selector_age_end'), + type = int, + default = config.get_int_value('face_selector', 'face_selector_age_end'), + choices = facefusion.choices.face_selector_age_range, + metavar = create_int_metavar(facefusion.choices.face_selector_age_range) + ) + ], scopes = [ 'api', 'cli' ] ) - args_store.register_argument( - group_face_selector.add_argument( - '--face-selector-gender', - help = translator.get('help.face_selector_gender'), - default = config.get_str_value('face_selector', 'face_selector_gender'), - choices = facefusion.choices.face_selector_genders - ), + args_store.register_arguments( + [ + group_face_selector.add_argument( + '--face-selector-gender', + help = translator.get('help.face_selector_gender'), + default = config.get_str_value('face_selector', 'face_selector_gender'), + choices = facefusion.choices.face_selector_genders + ) + ], scopes = [ 'api', 'cli' ] ) - args_store.register_argument( - group_face_selector.add_argument( - '--face-selector-race', - help = translator.get('help.face_selector_race'), - default = config.get_str_value('face_selector', 'face_selector_race'), - choices = facefusion.choices.face_selector_races - ), + args_store.register_arguments( + [ + group_face_selector.add_argument( + '--face-selector-race', + help = translator.get('help.face_selector_race'), + default = config.get_str_value('face_selector', 'face_selector_race'), + choices = facefusion.choices.face_selector_races + ) + ], scopes = [ 'api', 'cli' ] ) - args_store.register_argument( - group_face_selector.add_argument( - '--reference-face-position', - help = translator.get('help.reference_face_position'), - type = int, - default = config.get_int_value('face_selector', 'reference_face_position', '0') - ), + args_store.register_arguments( + [ + group_face_selector.add_argument( + '--reference-face-position', + help = translator.get('help.reference_face_position'), + type = int, + default = config.get_int_value('face_selector', 'reference_face_position', '0') + ) + ], scopes = [ 'api', 'cli' ] ) - args_store.register_argument( - group_face_selector.add_argument( - '--reference-face-distance', - help = translator.get('help.reference_face_distance'), - type = float, - default = config.get_float_value('face_selector', 'reference_face_distance', '0.3'), - choices = facefusion.choices.reference_face_distance_range, - metavar = create_float_metavar(facefusion.choices.reference_face_distance_range) - ), + args_store.register_arguments( + [ + group_face_selector.add_argument( + '--reference-face-distance', + help = translator.get('help.reference_face_distance'), + type = float, + default = config.get_float_value('face_selector', 'reference_face_distance', '0.3'), + choices = facefusion.choices.reference_face_distance_range, + metavar = create_float_metavar(facefusion.choices.reference_face_distance_range) + ) + ], scopes = [ 'api', 'cli' ] ) - args_store.register_argument( - group_face_selector.add_argument( - '--reference-frame-number', - help = translator.get('help.reference_frame_number'), - type = int, - default = config.get_int_value('face_selector', 'reference_frame_number', '0') - ), + args_store.register_arguments( + [ + group_face_selector.add_argument( + '--reference-frame-number', + help = translator.get('help.reference_frame_number'), + type = int, + default = config.get_int_value('face_selector', 'reference_frame_number', '0') + ) + ], scopes = [ 'api', 'cli' ] ) @@ -373,76 +425,90 @@ def create_face_masker_program() -> ArgumentParser: program = ArgumentParser(add_help = False) group_face_masker = program.add_argument_group('face masker') - args_store.register_argument( - group_face_masker.add_argument( - '--face-occluder-model', - help = translator.get('help.face_occluder_model'), - default = config.get_str_value('face_masker', 'face_occluder_model', 'xseg_1'), - choices = facefusion.choices.face_occluder_models - ), + args_store.register_arguments( + [ + group_face_masker.add_argument( + '--face-occluder-model', + help = translator.get('help.face_occluder_model'), + default = config.get_str_value('face_masker', 'face_occluder_model', 'xseg_1'), + choices = facefusion.choices.face_occluder_models + ) + ], scopes = [ 'api', 'cli' ] ) - args_store.register_argument( - group_face_masker.add_argument( - '--face-parser-model', - help = translator.get('help.face_parser_model'), - default = config.get_str_value('face_masker', 'face_parser_model', 'bisenet_resnet_34'), - choices = facefusion.choices.face_parser_models - ), + args_store.register_arguments( + [ + group_face_masker.add_argument( + '--face-parser-model', + help = translator.get('help.face_parser_model'), + default = config.get_str_value('face_masker', 'face_parser_model', 'bisenet_resnet_34'), + choices = facefusion.choices.face_parser_models + ) + ], scopes = [ 'api', 'cli' ] ) - args_store.register_argument( - group_face_masker.add_argument( - '--face-mask-types', - help = translator.get('help.face_mask_types').format(choices = ', '.join(facefusion.choices.face_mask_types)), - default = config.get_str_list('face_masker', 'face_mask_types', 'box'), - choices = facefusion.choices.face_mask_types, - nargs = '+', - metavar = 'FACE_MASK_TYPES' - ), + args_store.register_arguments( + [ + group_face_masker.add_argument( + '--face-mask-types', + help = translator.get('help.face_mask_types').format(choices = ', '.join(facefusion.choices.face_mask_types)), + default = config.get_str_list('face_masker', 'face_mask_types', 'box'), + choices = facefusion.choices.face_mask_types, + nargs = '+', + metavar = 'FACE_MASK_TYPES' + ) + ], scopes = [ 'api', 'cli' ] ) - args_store.register_argument( - group_face_masker.add_argument( - '--face-mask-areas', - help = translator.get('help.face_mask_areas').format(choices = ', '.join(facefusion.choices.face_mask_areas)), - default = config.get_str_list('face_masker', 'face_mask_areas', ' '.join(facefusion.choices.face_mask_areas)), - choices = facefusion.choices.face_mask_areas, - nargs = '+', - metavar = 'FACE_MASK_AREAS' - ), + args_store.register_arguments( + [ + group_face_masker.add_argument( + '--face-mask-areas', + help = translator.get('help.face_mask_areas').format(choices = ', '.join(facefusion.choices.face_mask_areas)), + default = config.get_str_list('face_masker', 'face_mask_areas', ' '.join(facefusion.choices.face_mask_areas)), + choices = facefusion.choices.face_mask_areas, + nargs = '+', + metavar = 'FACE_MASK_AREAS' + ) + ], scopes = [ 'api', 'cli' ] ) - args_store.register_argument( - group_face_masker.add_argument( - '--face-mask-regions', - help = translator.get('help.face_mask_regions').format(choices = ', '.join(facefusion.choices.face_mask_regions)), - default = config.get_str_list('face_masker', 'face_mask_regions', ' '.join(facefusion.choices.face_mask_regions)), - choices = facefusion.choices.face_mask_regions, - nargs = '+', - metavar = 'FACE_MASK_REGIONS' - ), + args_store.register_arguments( + [ + group_face_masker.add_argument( + '--face-mask-regions', + help = translator.get('help.face_mask_regions').format(choices = ', '.join(facefusion.choices.face_mask_regions)), + default = config.get_str_list('face_masker', 'face_mask_regions', ' '.join(facefusion.choices.face_mask_regions)), + choices = facefusion.choices.face_mask_regions, + nargs = '+', + metavar = 'FACE_MASK_REGIONS' + ) + ], scopes = [ 'api', 'cli' ] ) - args_store.register_argument( - group_face_masker.add_argument( - '--face-mask-blur', - help = translator.get('help.face_mask_blur'), - type = float, - default = config.get_float_value('face_masker', 'face_mask_blur', '0.3'), - choices = facefusion.choices.face_mask_blur_range, - metavar = create_float_metavar(facefusion.choices.face_mask_blur_range) - ), + args_store.register_arguments( + [ + group_face_masker.add_argument( + '--face-mask-blur', + help = translator.get('help.face_mask_blur'), + type = float, + default = config.get_float_value('face_masker', 'face_mask_blur', '0.3'), + choices = facefusion.choices.face_mask_blur_range, + metavar = create_float_metavar(facefusion.choices.face_mask_blur_range) + ) + ], scopes = [ 'api', 'cli' ] ) - args_store.register_argument( - group_face_masker.add_argument( - '--face-mask-padding', - help = translator.get('help.face_mask_padding'), - type = partial(sanitize_int_range, int_range = facefusion.choices.face_mask_padding_range), - default = config.get_int_list('face_masker', 'face_mask_padding', '0 0 0 0'), - nargs = '+' - ), + args_store.register_arguments( + [ + group_face_masker.add_argument( + '--face-mask-padding', + help = translator.get('help.face_mask_padding'), + type = partial(sanitize_int_range, int_range = facefusion.choices.face_mask_padding_range), + default = config.get_int_list('face_masker', 'face_mask_padding', '0 0 0 0'), + nargs = '+' + ) + ], scopes = [ 'api', 'cli' ] ) @@ -453,13 +519,15 @@ def create_voice_extractor_program() -> ArgumentParser: program = ArgumentParser(add_help = False) group_voice_extractor = program.add_argument_group('voice extractor') - args_store.register_argument( - group_voice_extractor.add_argument( - '--voice-extractor-model', - help = translator.get('help.voice_extractor_model'), - default = config.get_str_value('voice_extractor', 'voice_extractor_model', 'kim_vocal_2'), - choices = facefusion.choices.voice_extractor_models - ), + args_store.register_arguments( + [ + group_voice_extractor.add_argument( + '--voice-extractor-model', + help = translator.get('help.voice_extractor_model'), + default = config.get_str_value('voice_extractor', 'voice_extractor_model', 'kim_vocal_2'), + choices = facefusion.choices.voice_extractor_models + ) + ], scopes = [ 'api', 'cli' ] ) @@ -470,31 +538,37 @@ def create_frame_extraction_program() -> ArgumentParser: program = ArgumentParser(add_help = False) group_frame_extraction = program.add_argument_group('frame extraction') - args_store.register_argument( - group_frame_extraction.add_argument( - '--trim-frame-start', - help = translator.get('help.trim_frame_start'), - type = int, - default = facefusion.config.get_int_value('frame_extraction', 'trim_frame_start') - ), + args_store.register_arguments( + [ + group_frame_extraction.add_argument( + '--trim-frame-start', + help = translator.get('help.trim_frame_start'), + type = int, + default = facefusion.config.get_int_value('frame_extraction', 'trim_frame_start') + ) + ], scopes = [ 'api', 'cli' ] ) - args_store.register_argument( - group_frame_extraction.add_argument( - '--trim-frame-end', - help = translator.get('help.trim_frame_end'), - type = int, - default = facefusion.config.get_int_value('frame_extraction', 'trim_frame_end') - ), + args_store.register_arguments( + [ + group_frame_extraction.add_argument( + '--trim-frame-end', + help = translator.get('help.trim_frame_end'), + type = int, + default = facefusion.config.get_int_value('frame_extraction', 'trim_frame_end') + ) + ], scopes = [ 'api', 'cli' ] ) - args_store.register_argument( - group_frame_extraction.add_argument( - '--temp-frame-format', - help = translator.get('help.temp_frame_format'), - default = config.get_str_value('frame_extraction', 'temp_frame_format', 'png'), - choices = facefusion.choices.temp_frame_formats - ), + args_store.register_arguments( + [ + group_frame_extraction.add_argument( + '--temp-frame-format', + help = translator.get('help.temp_frame_format'), + default = config.get_str_value('frame_extraction', 'temp_frame_format', 'png'), + choices = facefusion.choices.temp_frame_formats + ) + ], scopes = [ 'api', 'cli' ] ) @@ -506,104 +580,124 @@ def create_output_creation_program() -> ArgumentParser: available_encoder_set = get_available_encoder_set() group_output_creation = program.add_argument_group('output creation') - args_store.register_argument( - group_output_creation.add_argument( - '--output-image-quality', - help = translator.get('help.output_image_quality'), - type = int, - default = config.get_int_value('output_creation', 'output_image_quality', '80'), - choices = facefusion.choices.output_image_quality_range, - metavar = create_int_metavar(facefusion.choices.output_image_quality_range) - ), + args_store.register_arguments( + [ + group_output_creation.add_argument( + '--output-image-quality', + help = translator.get('help.output_image_quality'), + type = int, + default = config.get_int_value('output_creation', 'output_image_quality', '80'), + choices = facefusion.choices.output_image_quality_range, + metavar = create_int_metavar(facefusion.choices.output_image_quality_range) + ) + ], scopes = [ 'api', 'cli' ] ) - args_store.register_argument( - group_output_creation.add_argument( - '--output-image-scale', - help = translator.get('help.output_image_scale'), - type = float, - default = config.get_float_value('output_creation', 'output_image_scale', '1.0'), - choices = facefusion.choices.output_image_scale_range - ), + args_store.register_arguments( + [ + group_output_creation.add_argument( + '--output-image-scale', + help = translator.get('help.output_image_scale'), + type = float, + default = config.get_float_value('output_creation', 'output_image_scale', '1.0'), + choices = facefusion.choices.output_image_scale_range + ) + ], scopes = [ 'api', 'cli' ] ) - args_store.register_argument( - group_output_creation.add_argument( - '--output-audio-encoder', - help = translator.get('help.output_audio_encoder'), - default = config.get_str_value('output_creation', 'output_audio_encoder', get_first(available_encoder_set.get('audio'))), - choices = available_encoder_set.get('audio') - ), + args_store.register_arguments( + [ + group_output_creation.add_argument( + '--output-audio-encoder', + help = translator.get('help.output_audio_encoder'), + default = config.get_str_value('output_creation', 'output_audio_encoder', get_first(available_encoder_set.get('audio'))), + choices = available_encoder_set.get('audio') + ) + ], scopes = [ 'api', 'cli' ] ) - args_store.register_argument( - group_output_creation.add_argument( - '--output-audio-quality', - help = translator.get('help.output_audio_quality'), - type = int, - default = config.get_int_value('output_creation', 'output_audio_quality', '80'), - choices = facefusion.choices.output_audio_quality_range, - metavar = create_int_metavar(facefusion.choices.output_audio_quality_range) - ), + args_store.register_arguments( + [ + group_output_creation.add_argument( + '--output-audio-quality', + help = translator.get('help.output_audio_quality'), + type = int, + default = config.get_int_value('output_creation', 'output_audio_quality', '80'), + choices = facefusion.choices.output_audio_quality_range, + metavar = create_int_metavar(facefusion.choices.output_audio_quality_range) + ) + ], scopes = [ 'api', 'cli' ] ) - args_store.register_argument( - group_output_creation.add_argument( - '--output-audio-volume', - help = translator.get('help.output_audio_volume'), - type = int, - default = config.get_int_value('output_creation', 'output_audio_volume', '100'), - choices = facefusion.choices.output_audio_volume_range, - metavar = create_int_metavar(facefusion.choices.output_audio_volume_range) - ), + args_store.register_arguments( + [ + group_output_creation.add_argument( + '--output-audio-volume', + help = translator.get('help.output_audio_volume'), + type = int, + default = config.get_int_value('output_creation', 'output_audio_volume', '100'), + choices = facefusion.choices.output_audio_volume_range, + metavar = create_int_metavar(facefusion.choices.output_audio_volume_range) + ) + ], scopes = [ 'api', 'cli' ] ) - args_store.register_argument( - group_output_creation.add_argument( - '--output-video-encoder', - help = translator.get('help.output_video_encoder'), - default = config.get_str_value('output_creation', 'output_video_encoder', get_first(available_encoder_set.get('video'))), - choices = available_encoder_set.get('video') - ), + args_store.register_arguments( + [ + group_output_creation.add_argument( + '--output-video-encoder', + help = translator.get('help.output_video_encoder'), + default = config.get_str_value('output_creation', 'output_video_encoder', get_first(available_encoder_set.get('video'))), + choices = available_encoder_set.get('video') + ) + ], scopes = [ 'api', 'cli' ] ) - args_store.register_argument( - group_output_creation.add_argument( - '--output-video-preset', - help = translator.get('help.output_video_preset'), - default = config.get_str_value('output_creation', 'output_video_preset', 'veryfast'), - choices = facefusion.choices.output_video_presets - ), + args_store.register_arguments( + [ + group_output_creation.add_argument( + '--output-video-preset', + help = translator.get('help.output_video_preset'), + default = config.get_str_value('output_creation', 'output_video_preset', 'veryfast'), + choices = facefusion.choices.output_video_presets + ) + ], scopes = [ 'api', 'cli' ] ) - args_store.register_argument( - group_output_creation.add_argument( - '--output-video-quality', - help = translator.get('help.output_video_quality'), - type = int, - default = config.get_int_value('output_creation', 'output_video_quality', '80'), - choices = facefusion.choices.output_video_quality_range, - metavar = create_int_metavar(facefusion.choices.output_video_quality_range) - ), + args_store.register_arguments( + [ + group_output_creation.add_argument( + '--output-video-quality', + help = translator.get('help.output_video_quality'), + type = int, + default = config.get_int_value('output_creation', 'output_video_quality', '80'), + choices = facefusion.choices.output_video_quality_range, + metavar = create_int_metavar(facefusion.choices.output_video_quality_range) + ) + ], scopes = [ 'api', 'cli' ] ) - args_store.register_argument( - group_output_creation.add_argument( - '--output-video-scale', - help = translator.get('help.output_video_scale'), - type = float, - default = config.get_float_value('output_creation', 'output_video_scale', '1.0'), - choices = facefusion.choices.output_video_scale_range - ), + args_store.register_arguments( + [ + group_output_creation.add_argument( + '--output-video-scale', + help = translator.get('help.output_video_scale'), + type = float, + default = config.get_float_value('output_creation', 'output_video_scale', '1.0'), + choices = facefusion.choices.output_video_scale_range + ) + ], scopes = [ 'api', 'cli' ] ) - args_store.register_argument( - group_output_creation.add_argument( - '--output-video-fps', - help = translator.get('help.output_video_fps'), - type = float, - default = config.get_float_value('output_creation', 'output_video_fps') - ), + args_store.register_arguments( + [ + group_output_creation.add_argument( + '--output-video-fps', + help = translator.get('help.output_video_fps'), + type = float, + default = config.get_float_value('output_creation', 'output_video_fps') + ) + ], scopes = [ 'api', 'cli' ] ) @@ -615,14 +709,16 @@ def create_processors_program() -> ArgumentParser: available_processors = [ get_file_name(file_path) for file_path in resolve_file_paths('facefusion/processors/modules') ] group_processors = program.add_argument_group('processors') - args_store.register_argument( - group_processors.add_argument( - '--processors', - help = translator.get('help.processors').format(choices = ', '.join(available_processors)), - default = config.get_str_list('processors', 'processors', 'face_swapper'), - choices = available_processors, - nargs = '+' - ), + args_store.register_arguments( + [ + group_processors.add_argument( + '--processors', + help = translator.get('help.processors').format(choices = ', '.join(available_processors)), + default = config.get_str_list('processors', 'processors', 'face_swapper'), + choices = available_processors, + nargs = '+' + ) + ], scopes = [ 'api', 'cli' ] ) @@ -636,15 +732,17 @@ def create_download_providers_program() -> ArgumentParser: program = ArgumentParser(add_help = False) group_download = program.add_argument_group('download') - args_store.register_argument( - group_download.add_argument( - '--download-providers', - help = translator.get('help.download_providers').format(choices = ', '.join(facefusion.choices.download_providers)), - default = config.get_str_list('download', 'download_providers', ' '.join(facefusion.choices.download_providers)), - choices = facefusion.choices.download_providers, - nargs = '+', - metavar = 'DOWNLOAD_PROVIDERS' - ), + args_store.register_arguments( + [ + group_download.add_argument( + '--download-providers', + help = translator.get('help.download_providers').format(choices = ', '.join(facefusion.choices.download_providers)), + default = config.get_str_list('download', 'download_providers', ' '.join(facefusion.choices.download_providers)), + choices = facefusion.choices.download_providers, + nargs = '+', + metavar = 'DOWNLOAD_PROVIDERS' + ) + ], scopes = [ 'cli', 'sys' ] ) @@ -655,13 +753,15 @@ def create_download_scope_program() -> ArgumentParser: program = ArgumentParser(add_help = False) group_download = program.add_argument_group('download') - args_store.register_argument( - group_download.add_argument( - '--download-scope', - help = translator.get('help.download_scope'), - default = config.get_str_value('download', 'download_scope', 'lite'), - choices = facefusion.choices.download_scopes - ), + args_store.register_arguments( + [ + group_download.add_argument( + '--download-scope', + help = translator.get('help.download_scope'), + default = config.get_str_value('download', 'download_scope', 'lite'), + choices = facefusion.choices.download_scopes + ) + ], scopes = [ 'cli', 'sys' ] ) @@ -720,37 +820,43 @@ def create_execution_program() -> ArgumentParser: available_execution_providers = get_available_execution_providers() group_execution = program.add_argument_group('execution') - args_store.register_argument( - group_execution.add_argument( - '--execution-device-ids', - help = translator.get('help.execution_device_ids'), - type = int, - default = config.get_str_list('execution', 'execution_device_ids', '0'), - nargs = '+', - metavar = 'EXECUTION_DEVICE_IDS' - ), + args_store.register_arguments( + [ + group_execution.add_argument( + '--execution-device-ids', + help = translator.get('help.execution_device_ids'), + type = int, + default = config.get_str_list('execution', 'execution_device_ids', '0'), + nargs = '+', + metavar = 'EXECUTION_DEVICE_IDS' + ) + ], scopes = [ 'cli', 'sys' ] ) - args_store.register_argument( - group_execution.add_argument( - '--execution-providers', - help = translator.get('help.execution_providers').format(choices = ', '.join(available_execution_providers)), - default = config.get_str_list('execution', 'execution_providers', get_first(available_execution_providers)), - choices = available_execution_providers, - nargs = '+', - metavar = 'EXECUTION_PROVIDERS' - ), + args_store.register_arguments( + [ + group_execution.add_argument( + '--execution-providers', + help = translator.get('help.execution_providers').format(choices = ', '.join(available_execution_providers)), + default = config.get_str_list('execution', 'execution_providers', get_first(available_execution_providers)), + choices = available_execution_providers, + nargs = '+', + metavar = 'EXECUTION_PROVIDERS' + ) + ], scopes = [ 'cli', 'sys' ] ) - args_store.register_argument( - group_execution.add_argument( - '--execution-thread-count', - help = translator.get('help.execution_thread_count'), - type = int, - default = config.get_int_value('execution', 'execution_thread_count', '8'), - choices = facefusion.choices.execution_thread_count_range, - metavar = create_int_metavar(facefusion.choices.execution_thread_count_range) - ), + args_store.register_arguments( + [ + group_execution.add_argument( + '--execution-thread-count', + help = translator.get('help.execution_thread_count'), + type = int, + default = config.get_int_value('execution', 'execution_thread_count', '8'), + choices = facefusion.choices.execution_thread_count_range, + metavar = create_int_metavar(facefusion.choices.execution_thread_count_range) + ) + ], scopes = [ 'cli', 'sys' ] ) @@ -761,13 +867,15 @@ def create_memory_program() -> ArgumentParser: program = ArgumentParser(add_help = False) group_memory = program.add_argument_group('memory') - args_store.register_argument( - group_memory.add_argument( - '--video-memory-strategy', - help = translator.get('help.video_memory_strategy'), - default = config.get_str_value('memory', 'video_memory_strategy', 'strict'), - choices = facefusion.choices.video_memory_strategies - ), + args_store.register_arguments( + [ + group_memory.add_argument( + '--video-memory-strategy', + help = translator.get('help.video_memory_strategy'), + default = config.get_str_value('memory', 'video_memory_strategy', 'strict'), + choices = facefusion.choices.video_memory_strategies + ) + ], scopes = [ 'cli', 'sys' ] ) @@ -778,13 +886,15 @@ def create_log_level_program() -> ArgumentParser: program = ArgumentParser(add_help = False) group_misc = program.add_argument_group('misc') - args_store.register_argument( - group_misc.add_argument( - '--log-level', - help = translator.get('help.log_level'), - default = config.get_str_value('misc', 'log_level', 'info'), - choices = facefusion.choices.log_levels - ), + args_store.register_arguments( + [ + group_misc.add_argument( + '--log-level', + help = translator.get('help.log_level'), + default = config.get_str_value('misc', 'log_level', 'info'), + choices = facefusion.choices.log_levels + ) + ], scopes = [ 'cli' ] ) @@ -795,13 +905,15 @@ def create_halt_on_error_program() -> ArgumentParser: program = ArgumentParser(add_help = False) group_misc = program.add_argument_group('misc') - args_store.register_argument( - group_misc.add_argument( - '--halt-on-error', - help = translator.get('help.halt_on_error'), - action = 'store_true', - default = config.get_bool_value('misc', 'halt_on_error') - ), + args_store.register_arguments( + [ + group_misc.add_argument( + '--halt-on-error', + help = translator.get('help.halt_on_error'), + action = 'store_true', + default = config.get_bool_value('misc', 'halt_on_error') + ) + ], scopes = [ 'cli' ] ) diff --git a/facefusion/types.py b/facefusion/types.py index 3fec4094..9caedf28 100755 --- a/facefusion/types.py +++ b/facefusion/types.py @@ -99,17 +99,13 @@ Resolution : TypeAlias = Tuple[int, int] Args : TypeAlias = Dict[str, Any] Scope : TypeAlias = Literal['api', 'cli', 'sys'] -ArgumentValue : TypeAlias = Dict[str, Any] -ArgumentSet : TypeAlias = Dict[str, ArgumentValue] - ArgsStore = TypedDict('ArgsStore', { - 'api' : ArgumentSet, - 'cli' : ArgumentSet, - 'sys' : ArgumentSet + 'api' : Args, + 'cli' : Args, + 'sys' : Args }) - ProcessState = Literal['checking', 'processing', 'stopping', 'pending'] UpdateProgress : TypeAlias = Callable[[int], None] ProcessStep : TypeAlias = Callable[[str, int, Args], bool] diff --git a/tests/test_api_capabilities.py b/tests/test_api_capabilities.py index 7b1b3237..a42c100b 100644 --- a/tests/test_api_capabilities.py +++ b/tests/test_api_capabilities.py @@ -11,17 +11,23 @@ from facefusion.apis.core import create_api @pytest.fixture(scope = 'module') def test_client() -> Iterator[TestClient]: program = ArgumentParser() - args_store.register_argument( - program.add_argument( - '--source-paths', - nargs = '+'), + args_store.register_arguments( + [ + program.add_argument( + '--source-paths', + nargs = '+' + ) + ], scopes = [ 'api' ] ) - args_store.register_argument( - program.add_argument( - '--output-format', - default = 'mp4', - choices = [ 'mp4', 'mkv', 'webm' ]), + args_store.register_arguments( + [ + program.add_argument( + '--output-format', + default = 'mp4', + choices = [ 'mp4', 'mkv', 'webm' ] + ) + ], scopes = [ 'api' ] ) diff --git a/tests/test_api_state.py b/tests/test_api_state.py index 9a75a4f7..b39ead4e 100644 --- a/tests/test_api_state.py +++ b/tests/test_api_state.py @@ -25,21 +25,30 @@ def before_all() -> None: @pytest.fixture(scope = 'module') def test_client() -> Iterator[TestClient]: program = ArgumentParser() - args_store.register_argument( - program.add_argument( - '--source-paths', - nargs = '+'), + args_store.register_arguments( + [ + program.add_argument( + '--source-paths', + nargs = '+' + ) + ], scopes = [ 'api' ] ) - args_store.register_argument( - program.add_argument( - '--target-path'), + args_store.register_arguments( + [ + program.add_argument( + '--target-path' + ) + ], scopes = [ 'api' ] ) - args_store.register_argument( - program.add_argument( - '--execution-providers', - nargs = '+'), + args_store.register_arguments( + [ + program.add_argument( + '--execution-providers', + nargs = '+' + ) + ], scopes = [ 'api' ] ) state_manager.init_item('execution_providers', [ 'cpu' ])