diff --git a/src/engines/aerender/aerender_engine.py b/src/engines/aerender/aerender_engine.py index 45736ce..b16f100 100644 --- a/src/engines/aerender/aerender_engine.py +++ b/src/engines/aerender/aerender_engine.py @@ -2,14 +2,14 @@ import glob import logging import subprocess -from src.engines.core.base_engine import BaseRenderEngine, SUBPROCESS_TIMEOUT +from src.engines.core.base_engine import BaseRenderEngine logger = logging.getLogger() class AERender(BaseRenderEngine): - file_extensions = ['aep'] + file_extensions = ['aepx'] def version(self): version = None @@ -29,8 +29,30 @@ class AERender(BaseRenderEngine): logger.warning('Multiple After Effects installations detected') elif not paths: logger.error('After Effects installation not found') - else: - return paths[0] + return paths[0] + + def get_project_info(self, project_path, timeout=10): + scene_info = {} + try: + import xml.etree.ElementTree as ET + + tree = ET.parse(project_path) + root = tree.getroot() + namespace = {'ae': 'http://www.adobe.com/products/aftereffects'} + + comp_names = [] + for item in root.findall(".//ae:Item", namespace): + if item.find("ae:Layr", namespace) is not None: + for string in item.findall("./ae:string", namespace): + comp_names.append(string.text) + scene_info['comp_names'] = comp_names + except Exception as e: + logger.error(f'Error getting file details for .aepx file: {e}') + return scene_info + + def run_javascript(self, script_path, project_path, timeout=None): + # todo: implement + pass @classmethod def get_output_formats(cls): @@ -39,5 +61,5 @@ class AERender(BaseRenderEngine): if __name__ == "__main__": - x = AERender().supported_extensions() + x = AERender().get_project_info('/Users/brett/ae_testing/project.aepx') print(x)