From 7986960b2133b0f0fbf8b7ad89b95f345801c4ef Mon Sep 17 00:00:00 2001 From: Brett Williams Date: Sat, 3 Aug 2024 20:21:26 -0500 Subject: [PATCH] Changes to engine file extensions structure --- src/engines/aerender/aerender_engine.py | 9 +++++++-- src/engines/aerender/aerender_worker.py | 1 - src/engines/blender/blender_engine.py | 5 +---- src/engines/core/base_engine.py | 9 ++++++--- src/engines/ffmpeg/ffmpeg_engine.py | 16 +++++++++------- 5 files changed, 23 insertions(+), 17 deletions(-) diff --git a/src/engines/aerender/aerender_engine.py b/src/engines/aerender/aerender_engine.py index 64eb8de..45736ce 100644 --- a/src/engines/aerender/aerender_engine.py +++ b/src/engines/aerender/aerender_engine.py @@ -9,7 +9,7 @@ logger = logging.getLogger() class AERender(BaseRenderEngine): - supported_extensions = ['.aep'] + file_extensions = ['aep'] def version(self): version = None @@ -35,4 +35,9 @@ class AERender(BaseRenderEngine): @classmethod def get_output_formats(cls): # todo: create implementation - return [] \ No newline at end of file + return [] + + +if __name__ == "__main__": + x = AERender().supported_extensions() + print(x) diff --git a/src/engines/aerender/aerender_worker.py b/src/engines/aerender/aerender_worker.py index 65d386c..76802c8 100644 --- a/src/engines/aerender/aerender_worker.py +++ b/src/engines/aerender/aerender_worker.py @@ -22,7 +22,6 @@ def aerender_path(): class AERenderWorker(BaseRenderWorker): - supported_extensions = ['.aep'] engine = AERender def __init__(self, input_path, output_path, args=None, parent=None, name=None): diff --git a/src/engines/blender/blender_engine.py b/src/engines/blender/blender_engine.py index b086c33..5729932 100644 --- a/src/engines/blender/blender_engine.py +++ b/src/engines/blender/blender_engine.py @@ -11,6 +11,7 @@ class Blender(BaseRenderEngine): install_paths = ['/Applications/Blender.app/Contents/MacOS/Blender'] binary_names = {'linux': 'blender', 'windows': 'blender.exe', 'macos': 'Blender'} + file_extensions = ['blend'] @staticmethod def downloader(): @@ -26,10 +27,6 @@ class Blender(BaseRenderEngine): from src.engines.blender.blender_ui import BlenderUI return BlenderUI.get_options(self) - @staticmethod - def supported_extensions(): - return ['blend'] - def version(self): version = None try: diff --git a/src/engines/core/base_engine.py b/src/engines/core/base_engine.py index 26371e2..c1bc0ed 100644 --- a/src/engines/core/base_engine.py +++ b/src/engines/core/base_engine.py @@ -9,7 +9,7 @@ SUBPROCESS_TIMEOUT = 5 class BaseRenderEngine(object): install_paths = [] - supported_extensions = [] + file_extensions = [] def __init__(self, custom_path=None): self.custom_renderer_path = custom_path @@ -58,8 +58,7 @@ class BaseRenderEngine(object): path = self.renderer_path() if not path: raise FileNotFoundError("renderer path not found") - help_doc = subprocess.check_output([path, '-h'], stderr=subprocess.STDOUT, - timeout=SUBPROCESS_TIMEOUT).decode('utf-8') + help_doc = subprocess.run([path, '-h'], capture_output=True, text=True).stdout.strip() return help_doc def get_project_info(self, project_path, timeout=10): @@ -69,6 +68,10 @@ class BaseRenderEngine(object): def get_output_formats(cls): raise NotImplementedError(f"get_output_formats not implemented for {cls.__name__}") + @classmethod + def supported_extensions(cls): + return cls.file_extensions + def get_arguments(self): pass diff --git a/src/engines/ffmpeg/ffmpeg_engine.py b/src/engines/ffmpeg/ffmpeg_engine.py index 5e780a6..c9da9f1 100644 --- a/src/engines/ffmpeg/ffmpeg_engine.py +++ b/src/engines/ffmpeg/ffmpeg_engine.py @@ -23,13 +23,15 @@ class FFMPEG(BaseRenderEngine): @classmethod def supported_extensions(cls): - help_text = (subprocess.check_output([cls().renderer_path(), '-h', 'full'], stderr=subprocess.STDOUT) - .decode('utf-8')) - found = re.findall(r'extensions that .* is allowed to access \(default "(.*)"', help_text) - found_extensions = set() - for match in found: - found_extensions.update(match.split(',')) - return list(found_extensions) + if not cls.file_extensions: + help_text = (subprocess.check_output([cls().renderer_path(), '-h', 'full'], stderr=subprocess.STDOUT) + .decode('utf-8')) + found = re.findall(r'extensions that .* is allowed to access \(default "(.*)"', help_text) + found_extensions = set() + for match in found: + found_extensions.update(match.split(',')) + cls.file_extensions = list(found_extensions) + return cls.file_extensions def version(self): version = None