Add ability to get file list and download files from project output

This commit is contained in:
Brett Williams
2022-10-26 18:27:13 -07:00
parent 2da06ab166
commit eb9e719f47
8 changed files with 71 additions and 28 deletions

View File

@@ -75,15 +75,15 @@ class AERenderWorker(BaseRenderWorker):
# }
job = {'template':
{
'src': 'file://' + self.input, 'composition': self.comp.replace('"', ''),
'src': 'file://' + self.input_path, 'composition': self.comp.replace('"', ''),
'settingsTemplate': self.render_settings.replace('"', ''),
'outputModule': self.omsettings.replace('"', ''), 'outputExt': 'mov'}
}
x = ['./nexrender-cli-macos', "'{}'".format(json.dumps(job))]
else:
logging.info('nexrender not found')
x = [aerender_path(), '-project', self.input, '-comp', self.comp, '-RStemplate', self.render_settings,
'-OMtemplate', self.omsettings, '-output', self.output]
x = [aerender_path(), '-project', self.input_path, '-comp', self.comp, '-RStemplate', self.render_settings,
'-OMtemplate', self.omsettings, '-output', self.output_path]
return x
def _parse_stdout(self, line):

View File

@@ -44,12 +44,12 @@ class BlenderRenderWorker(BaseRenderWorker):
def _generate_subprocess(self):
cmd = [self.renderer_path(), '-b', self.input]
cmd = [self.renderer_path(), '-b', self.input_path]
if self.camera:
cmd.extend(['--python-expr', f"import bpy;bpy.context.scene.camera = bpy.data.objects['{self.camera}'];"])
cmd.extend(['-E', self.engine, '-o', self.output, '-F', self.export_format])
cmd.extend(['-E', self.engine, '-o', self.output_path, '-F', self.export_format])
# all frames or single
cmd.extend(['-a'] if self.render_all_frames else ['-f', str(self.frame)])

View File

@@ -41,10 +41,10 @@ class FFMPEGRenderWorker(BaseRenderWorker):
def _generate_subprocess(self):
cmd = [self.renderer_path(), '-y', '-stats', '-i', self.input]
cmd = [self.renderer_path(), '-y', '-stats', '-i', self.input_path]
if self.args:
cmd.extend(self.args)
cmd.append(self.output)
cmd.append(self.output_path)
return cmd

View File

@@ -45,8 +45,8 @@ class BaseRenderWorker(object):
raise ValueError(err_meg)
# Essential Info
self.input = input_path
self.output = output_path
self.input_path = input_path
self.output_path = output_path
self.args = args or {}
self.date_created = datetime.now()
self.renderer_version = self.version()
@@ -96,9 +96,9 @@ class BaseRenderWorker(object):
def start(self):
if not os.path.exists(self.input):
if not os.path.exists(self.input_path):
self.status = RenderStatus.ERROR
msg = 'Cannot find input path: {}'.format(self.input)
msg = 'Cannot find input path: {}'.format(self.input_path)
logger.error(msg)
self.errors.append(msg)
return
@@ -111,7 +111,7 @@ class BaseRenderWorker(object):
return
self.status = RenderStatus.RUNNING
logger.info('Starting {0} {1} Render for {2}'.format(self.renderer, self.version(), self.input))
logger.info('Starting {0} {1} Render for {2}'.format(self.renderer, self.version(), self.input_path))
self.thread.start()
def run(self):
@@ -119,10 +119,10 @@ class BaseRenderWorker(object):
# Setup logging
try:
if not self.log_path:
log_dir = os.path.join(os.path.dirname(self.input), 'logs')
log_dir = os.path.join(os.path.dirname(self.input_path), 'logs')
if not os.path.exists(log_dir):
os.makedirs(log_dir)
self.log_path = os.path.join(log_dir, os.path.basename(self.input)) + '.log'
self.log_path = os.path.join(log_dir, os.path.basename(self.input_path)) + '.log'
logger.info('Logs saved in {}'.format(self.log_path))
except Exception as e:
logger.error("Error setting up logging: {}".format(e))
@@ -141,7 +141,7 @@ class BaseRenderWorker(object):
with open(self.log_path, "a") as f:
f.write("{3} - Starting {0} {1} Render for {2}\n".format(self.renderer, self.version(), self.input,
f.write("{3} - Starting {0} {1} Render for {2}\n".format(self.renderer, self.version(), self.input_path,
self.start_time.isoformat()))
f.write(f"Running command: {' '.join(subprocess_cmds)}\n")
for c in io.TextIOWrapper(self.process.stdout, encoding="utf-8"): # or another encoding
@@ -173,7 +173,7 @@ class BaseRenderWorker(object):
f.write(message)
if self.failed_attempts >= self.maximum_attempts and self.status is not RenderStatus.CANCELLED:
logger.error('{} Render of {} failed after {} attempts'.format(self.renderer, self.input, self.failed_attempts))
logger.error('{} Render of {} failed after {} attempts'.format(self.renderer, self.input_path, self.failed_attempts))
self.status = RenderStatus.ERROR
if not self.errors:
self.errors = [self.last_output]