get_project_info gets comp names from .aepx files now

This commit is contained in:
Brett Williams
2024-08-04 01:01:21 -05:00
parent dc7f3877b2
commit 58822c4a20

View File

@@ -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,9 +29,31 @@ class AERender(BaseRenderEngine):
logger.warning('Multiple After Effects installations detected')
elif not paths:
logger.error('After Effects installation not found')
else:
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):
# todo: create implementation
@@ -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)