Feat/custom file format handling (#845)

* Purge filetype dependency, Rename file_extension to file_format, Introduce custom format detections

* Changed a lot

* Purge filetype dependency, Rename file_extension to file_format, Introduce custom format detections

* Fix stuff

* Fix stuff

* Simplify all the is_ and has_ methods

* Simplify all the is_ and has_ methods

* Use the new helper on more places

* Introduce are_ next to is_ and has_

* Get rid of the type-ignores

* Add more video types
This commit is contained in:
Henry Ruhs
2025-01-06 11:19:43 +01:00
committed by henryruhs
parent bb32135af2
commit 6f0675030e
36 changed files with 259 additions and 183 deletions

View File

@@ -3,7 +3,7 @@ import os.path
import pytest
from facefusion.download import conditional_download
from facefusion.filesystem import create_directory, filter_audio_paths, filter_image_paths, get_file_size, has_audio, has_image, in_directory, is_audio, is_directory, is_file, is_image, is_video, list_directory, remove_directory, same_file_extension
from facefusion.filesystem import create_directory, filter_audio_paths, filter_image_paths, get_file_extension, get_file_format, get_file_size, has_audio, has_image, has_video, in_directory, is_audio, is_directory, is_file, is_image, is_video, remove_directory, resolve_file_paths, same_file_extension
from .helper import get_test_example_file, get_test_examples_directory, get_test_outputs_directory
@@ -18,13 +18,26 @@ def before_all() -> None:
def test_get_file_size() -> None:
assert get_file_size(get_test_example_file('source.jpg')) > 0
assert get_file_size(get_test_example_file('source.jpg')) == 549458
assert get_file_size('invalid') == 0
def test_get_file_extension() -> None:
assert get_file_extension('source.jpg') == '.jpg'
assert get_file_extension('source.mp3') == '.mp3'
assert get_file_extension('invalid') is None
def test_get_file_format() -> None:
assert get_file_format('source.jpg') == 'jpg'
assert get_file_format('source.mp3') == 'mp3'
assert get_file_format('invalid') is None
def test_same_file_extension() -> None:
assert same_file_extension([ 'target.jpg', 'output.jpg' ]) is True
assert same_file_extension([ 'target.jpg', 'output.mp4' ]) is False
assert same_file_extension('source.jpg', 'source.jpg') is True
assert same_file_extension('source.jpg', 'source.mp3') is False
assert same_file_extension('invalid', 'invalid') is False
def test_is_file() -> None:
@@ -33,18 +46,6 @@ def test_is_file() -> None:
assert is_file('invalid') is False
def test_is_directory() -> None:
assert is_directory(get_test_examples_directory()) is True
assert is_directory(get_test_example_file('source.jpg')) is False
assert is_directory('invalid') is False
def test_in_directory() -> None:
assert in_directory(get_test_example_file('source.jpg')) is True
assert in_directory('source.jpg') is False
assert in_directory('invalid') is False
def test_is_audio() -> None:
assert is_audio(get_test_example_file('source.mp3')) is True
assert is_audio(get_test_example_file('source.jpg')) is False
@@ -77,6 +78,13 @@ def test_is_video() -> None:
assert is_video('invalid') is False
def test_has_video() -> None:
assert has_video([ get_test_example_file('target-240p.mp4') ]) is True
assert has_video([ get_test_example_file('target-240p.mp4'), get_test_example_file('source.mp3') ]) is True
assert has_video([ get_test_example_file('source.mp3'), get_test_example_file('source.mp3') ]) is False
assert has_video([ 'invalid' ]) is False
def test_filter_audio_paths() -> None:
assert filter_audio_paths([ get_test_example_file('source.jpg'), get_test_example_file('source.mp3') ]) == [ get_test_example_file('source.mp3') ]
assert filter_audio_paths([ get_test_example_file('source.jpg'), get_test_example_file('source.jpg') ]) == []
@@ -89,6 +97,15 @@ def test_filter_image_paths() -> None:
assert filter_audio_paths([ 'invalid' ]) == []
def test_resolve_file_paths() -> None:
file_paths = resolve_file_paths(get_test_examples_directory())
for file_path in file_paths:
assert file_path == get_test_example_file(file_path)
assert resolve_file_paths('invalid') == []
def test_create_directory() -> None:
create_directory_path = os.path.join(get_test_outputs_directory(), 'create_directory')
@@ -96,15 +113,6 @@ def test_create_directory() -> None:
assert create_directory(get_test_example_file('source.jpg')) is False
def test_list_directory() -> 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
def test_remove_directory() -> None:
remove_directory_path = os.path.join(get_test_outputs_directory(), 'remove_directory')
create_directory(remove_directory_path)
@@ -112,3 +120,15 @@ def test_remove_directory() -> None:
assert remove_directory(remove_directory_path) is True
assert remove_directory(get_test_example_file('source.jpg')) is False
assert remove_directory('invalid') is False
def test_is_directory() -> None:
assert is_directory(get_test_examples_directory()) is True
assert is_directory(get_test_example_file('source.jpg')) is False
assert is_directory('invalid') is False
def test_in_directory() -> None:
assert in_directory(get_test_example_file('source.jpg')) is True
assert in_directory('source.jpg') is False
assert in_directory('invalid') is False