Add custom args to GUI and add arg conflict validation to workers

This commit is contained in:
Brett Williams
2023-05-22 13:43:39 -05:00
parent 815d5d78b2
commit 1e92cb3a06
6 changed files with 37 additions and 8 deletions

View File

@@ -47,7 +47,7 @@ class AERenderWorker(BaseRenderWorker):
logging.error(f'Failed to get {cls.renderer} version: {e}')
return version
def _generate_subprocess(self):
def generate_worker_subprocess(self):
if os.path.exists('nexrender-cli-macos'):
logging.info('nexrender found')

View File

@@ -21,7 +21,8 @@ class BlenderRenderWorker(BaseRenderWorker):
self.engine = self.args.get('engine', 'BLENDER_EEVEE').upper()
self.export_format = self.args.get('export_format', None) or 'JPEG'
self.camera = self.args.get('camera', None)
self.render_all_frames = self.args.get('render_all_frames', False)
self.render_all_frames = self.args.get('render_all_frames', False) or \
'-a' in (self.args.get('raw', None) or "").split(' ')
self.frame_to_render = 0
# Stats
@@ -45,7 +46,7 @@ class BlenderRenderWorker(BaseRenderWorker):
logging.error(f'Failed to get {cls.renderer} version: {e}')
return version
def _generate_subprocess(self):
def generate_worker_subprocess(self):
cmd = [self.renderer_path()]
if self.args.get('background', True): # optionally run render not in background

View File

@@ -35,7 +35,7 @@ class FFMPEGRenderWorker(BaseRenderWorker):
logger.error("Failed to get FFMPEG version: {}".format(e))
return version
def _generate_subprocess(self):
def generate_worker_subprocess(self):
cmd = [self.renderer_path(), '-y', '-stats', '-i', self.input_path]

View File

@@ -92,8 +92,28 @@ class BaseRenderWorker(object):
logging.exception(e)
return path
def _generate_subprocess(self):
raise NotImplementedError("_generate_subprocess not implemented")
def validate(self):
if not os.path.exists(self.input_path):
raise FileNotFoundError(f"Cannot find input path: {self.input_path}")
self.generate_subprocess()
def generate_subprocess(self):
# Convert raw args from string if available and catch conflicts
cmd = self.generate_worker_subprocess()
raw_args = self.args.get('raw', None)
if raw_args:
import shlex
args_split = shlex.split(raw_args)
flags = [x for x in args_split if x.startswith('-')]
conflict = any(element in flags for element in args_split)
if conflict:
raise ValueError("Custom args conflicts set parameters")
else:
cmd.extend(args_split)
return cmd
def generate_worker_subprocess(self):
raise NotImplementedError("generate_worker_subprocess not implemented")
def start(self):