Introduce File using list_directory()

This commit is contained in:
henryruhs 2024-12-09 22:32:45 +01:00
parent 63399c04d0
commit 0789d19548
9 changed files with 36 additions and 13 deletions

View File

@ -105,7 +105,7 @@ def apply_args(args : Args, apply_state_item : ApplyStateItem) -> None:
apply_state_item('output_video_fps', output_video_fps)
apply_state_item('skip_audio', args.get('skip_audio'))
# processors
available_processors = list_directory('facefusion/processors/modules')
available_processors = [ file.get('name') for file in list_directory('facefusion/processors/modules') ]
apply_state_item('processors', args.get('processors'))
for processor_module in get_processors_modules(available_processors):
processor_module.apply_args(args, apply_state_item)

View File

@ -133,7 +133,7 @@ def force_download() -> ErrorCode:
face_recognizer,
voice_extractor
]
available_processors = list_directory('facefusion/processors/modules')
available_processors = [ file.get('name') for file in list_directory('facefusion/processors/modules') ]
processor_modules = get_processors_modules(available_processors)
for module in common_modules + processor_modules:

View File

@ -7,6 +7,7 @@ from typing import List, Optional
import filetype
from facefusion.common_helper import is_windows
from facefusion.typing import File
if is_windows():
import ctypes
@ -126,11 +127,23 @@ def create_directory(directory_path : str) -> bool:
return False
def list_directory(directory_path : str) -> Optional[List[str]]:
def list_directory(directory_path : str) -> Optional[List[File]]:
if is_directory(directory_path):
file_paths = os.listdir(directory_path)
file_paths = [ Path(file_path).stem for file_path in file_paths if not Path(file_path).stem.startswith(('.', '__')) ]
return sorted(file_paths)
file_paths = sorted(os.listdir(directory_path))
files: List[File] = []
for file_path in file_paths:
file_name, file_extension = os.path.splitext(file_path)
if not file_name.startswith(('.', '__')):
files.append(
{
'name': file_name,
'extension': file_extension,
'path': os.path.join(directory_path, file_path)
})
return files
return None

View File

@ -169,7 +169,7 @@ def create_output_creation_program() -> ArgumentParser:
def create_processors_program() -> ArgumentParser:
program = ArgumentParser(add_help = False)
available_processors = list_directory('facefusion/processors/modules')
available_processors = [ file.get('name') for file in list_directory('facefusion/processors/modules') ]
group_processors = program.add_argument_group('processors')
group_processors.add_argument('--processors', help = wording.get('help.processors').format(choices = ', '.join(available_processors)), default = config.get_str_list('processors.processors', 'face_swapper'), nargs = '+')
job_store.register_step_keys([ 'processors' ])
@ -180,7 +180,7 @@ def create_processors_program() -> ArgumentParser:
def create_uis_program() -> ArgumentParser:
program = ArgumentParser(add_help = False)
available_ui_layouts = list_directory('facefusion/uis/layouts')
available_ui_layouts = [ file.get('name') for file in list_directory('facefusion/uis/layouts') ]
group_uis = program.add_argument_group('uis')
group_uis.add_argument('--open-browser', help = wording.get('help.open_browser'), action = 'store_true', default = config.get_bool_value('uis.open_browser'))
group_uis.add_argument('--ui-layouts', help = wording.get('help.ui_layouts').format(choices = ', '.join(available_ui_layouts)), default = config.get_str_list('uis.ui_layouts', 'default'), nargs = '+')

View File

@ -167,6 +167,13 @@ DownloadSet = Dict[str, Download]
VideoMemoryStrategy = Literal['strict', 'moderate', 'tolerant']
File = TypedDict('File',
{
'name' : str,
'extension' : str,
'path': str
})
AppContext = Literal['cli', 'ui']
InferencePool = Dict[str, InferenceSession]

View File

@ -36,7 +36,7 @@ def update_download_providers(download_providers : List[DownloadProviderKey]) ->
face_masker,
voice_extractor
]
available_processors = list_directory('facefusion/processors/modules')
available_processors = [ file.get('name') for file in list_directory('facefusion/processors/modules') ]
processor_modules = get_processors_modules(available_processors)
for module in common_modules + processor_modules:

View File

@ -36,7 +36,7 @@ def update_execution_providers(execution_providers : List[ExecutionProviderKey])
face_recognizer,
voice_extractor
]
available_processors = list_directory('facefusion/processors/modules')
available_processors = [ file.get('name') for file in list_directory('facefusion/processors/modules') ]
processor_modules = get_processors_modules(available_processors)
for module in common_modules + processor_modules:

View File

@ -39,5 +39,5 @@ def update_processors(processors : List[str]) -> gradio.CheckboxGroup:
def sort_processors(processors : List[str]) -> List[str]:
available_processors = list_directory('facefusion/processors/modules')
available_processors = [ file.get('name') for file in list_directory('facefusion/processors/modules') ]
return sorted(available_processors, key = lambda processor : processors.index(processor) if processor in processors else len(processors))

View File

@ -105,8 +105,11 @@ def test_create_directory() -> None:
def test_list_directory() -> None:
assert list_directory(get_test_examples_directory())
assert list_directory(get_test_example_file('source.jpg')) is None
files = list_directory(get_test_examples_directory())
for file in files:
assert file.get('path') == get_test_example_file(file.get('name') + file.get('extension'))
assert list_directory('invalid') is None