mirror of
https://github.com/blw1138/Zordon.git
synced 2025-12-17 16:58:12 +00:00
Misc worker cleanup
This commit is contained in:
@@ -20,9 +20,9 @@ class AERenderWorker(BaseRenderWorker):
|
|||||||
super(AERenderWorker, self).__init__(input_path=input_path, output_path=output_path, engine_path=engine_path,
|
super(AERenderWorker, self).__init__(input_path=input_path, output_path=output_path, engine_path=engine_path,
|
||||||
args=args, parent=parent, name=name)
|
args=args, parent=parent, name=name)
|
||||||
|
|
||||||
self.progress = 0
|
# temp files for processing stdout
|
||||||
self.progress_history = []
|
self.__progress_history = []
|
||||||
self.attributes = {}
|
self.__temp_attributes = {}
|
||||||
|
|
||||||
def generate_worker_subprocess(self):
|
def generate_worker_subprocess(self):
|
||||||
|
|
||||||
@@ -30,7 +30,7 @@ class AERenderWorker(BaseRenderWorker):
|
|||||||
render_settings = self.args.get('render_settings', None)
|
render_settings = self.args.get('render_settings', None)
|
||||||
omsettings = self.args.get('omsettings', None)
|
omsettings = self.args.get('omsettings', None)
|
||||||
|
|
||||||
command = [self.renderer_path, '-project', self.input_path, '-comp', comp]
|
command = [self.renderer_path, '-project', self.input_path, '-comp', f'"{comp}"']
|
||||||
|
|
||||||
if render_settings:
|
if render_settings:
|
||||||
command.extend(['-RStemplate', render_settings])
|
command.extend(['-RStemplate', render_settings])
|
||||||
@@ -48,12 +48,12 @@ class AERenderWorker(BaseRenderWorker):
|
|||||||
# print 'progress'
|
# print 'progress'
|
||||||
trimmed = line.replace('PROGRESS:', '').strip()
|
trimmed = line.replace('PROGRESS:', '').strip()
|
||||||
if len(trimmed):
|
if len(trimmed):
|
||||||
self.progress_history.append(line)
|
self.__progress_history.append(line)
|
||||||
if 'Seconds' in trimmed:
|
if 'Seconds' in trimmed:
|
||||||
self._update_progress(line)
|
self._update_progress(line)
|
||||||
elif ': ' in trimmed:
|
elif ': ' in trimmed:
|
||||||
tmp = trimmed.split(': ')
|
tmp = trimmed.split(': ')
|
||||||
self.attributes[tmp[0].strip()] = tmp[1].strip()
|
self.__temp_attributes[tmp[0].strip()] = tmp[1].strip()
|
||||||
elif line.startswith('WARNING:'):
|
elif line.startswith('WARNING:'):
|
||||||
trimmed = line.replace('WARNING:', '').strip()
|
trimmed = line.replace('WARNING:', '').strip()
|
||||||
self.warnings.append(trimmed)
|
self.warnings.append(trimmed)
|
||||||
@@ -64,8 +64,8 @@ class AERenderWorker(BaseRenderWorker):
|
|||||||
def _update_progress(self, line):
|
def _update_progress(self, line):
|
||||||
|
|
||||||
if not self.total_frames:
|
if not self.total_frames:
|
||||||
duration_string = self.attributes.get('Duration', None)
|
duration_string = self.__temp_attributes.get('Duration', None)
|
||||||
frame_rate = self.attributes.get('Frame Rate', '0').split(' ')[0]
|
frame_rate = self.__temp_attributes.get('Frame Rate', '0').split(' ')[0]
|
||||||
self.total_frames = timecode_to_frames(duration_string.split('Duration:')[-1], float(frame_rate))
|
self.total_frames = timecode_to_frames(duration_string.split('Duration:')[-1], float(frame_rate))
|
||||||
|
|
||||||
match = re.match(r'PROGRESS:.*\((?P<frame>\d+)\): (?P<time>\d+)', line).groupdict()
|
match = re.match(r'PROGRESS:.*\((?P<frame>\d+)\): (?P<time>\d+)', line).groupdict()
|
||||||
@@ -75,7 +75,7 @@ class AERenderWorker(BaseRenderWorker):
|
|||||||
|
|
||||||
total_durations = 0
|
total_durations = 0
|
||||||
|
|
||||||
for line in self.progress_history:
|
for line in self.__progress_history:
|
||||||
match = re.match(r'PROGRESS:.*\((?P<frame>\d+)\): (?P<time>\d+)', line)
|
match = re.match(r'PROGRESS:.*\((?P<frame>\d+)\): (?P<time>\d+)', line)
|
||||||
if match:
|
if match:
|
||||||
total_durations += int(match.group(2))
|
total_durations += int(match.group(2))
|
||||||
@@ -93,7 +93,7 @@ class AERenderWorker(BaseRenderWorker):
|
|||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
logging.basicConfig(format='%(asctime)s - %(message)s', datefmt='%d-%b-%y %H:%M:%S', level=logging.DEBUG)
|
logging.basicConfig(format='%(asctime)s - %(message)s', datefmt='%d-%b-%y %H:%M:%S', level=logging.DEBUG)
|
||||||
|
|
||||||
r = AERenderWorker(input_path='/Users/brett/Desktop/tc_title.aep',
|
r = AERenderWorker(input_path='/Users/brett/Desktop/gun_tower.aep',
|
||||||
output_path='/Users/brett/Desktop/testing_output/tc_title.mp4',
|
output_path='/Users/brett/Desktop/testing_output/tc_title.mp4',
|
||||||
engine_path=AERenderWorker.engine.default_renderer_path())
|
engine_path=AERenderWorker.engine.default_renderer_path())
|
||||||
|
|
||||||
|
|||||||
@@ -112,7 +112,7 @@ class Blender(BaseRenderEngine):
|
|||||||
logger.error(f'Error packing .blend file: {e}')
|
logger.error(f'Error packing .blend file: {e}')
|
||||||
return None
|
return None
|
||||||
|
|
||||||
def get_arguments(self):
|
def get_arguments(self): # possibly deprecate
|
||||||
help_text = subprocess.check_output([self.renderer_path(), '-h']).decode('utf-8')
|
help_text = subprocess.check_output([self.renderer_path(), '-h']).decode('utf-8')
|
||||||
lines = help_text.splitlines()
|
lines = help_text.splitlines()
|
||||||
|
|
||||||
|
|||||||
@@ -17,13 +17,7 @@ class BlenderRenderWorker(BaseRenderWorker):
|
|||||||
|
|
||||||
# Stats
|
# Stats
|
||||||
self.__frame_percent_complete = 0.0
|
self.__frame_percent_complete = 0.0
|
||||||
|
self.current_frame = -1 # todo: is this necessary?
|
||||||
# Scene Info
|
|
||||||
self.scene_info = Blender(engine_path).get_project_info(input_path)
|
|
||||||
self.start_frame = int(self.scene_info.get('start_frame', 1))
|
|
||||||
self.end_frame = int(self.scene_info.get('end_frame', self.start_frame))
|
|
||||||
self.project_length = (self.end_frame - self.start_frame) + 1
|
|
||||||
self.current_frame = -1
|
|
||||||
|
|
||||||
def generate_worker_subprocess(self):
|
def generate_worker_subprocess(self):
|
||||||
|
|
||||||
|
|||||||
@@ -81,8 +81,11 @@ class BaseRenderWorker(Base):
|
|||||||
# Frame Ranges
|
# Frame Ranges
|
||||||
self.project_length = 0 # is this necessary?
|
self.project_length = 0 # is this necessary?
|
||||||
self.current_frame = 0
|
self.current_frame = 0
|
||||||
self.start_frame = 0
|
|
||||||
self.end_frame = None
|
# Get Project Info
|
||||||
|
self.scene_info = self.engine(engine_path).get_project_info(project_path=parent)
|
||||||
|
self.start_frame = int(self.scene_info.get('start_frame', 1))
|
||||||
|
self.end_frame = int(self.scene_info.get('end_frame', self.start_frame))
|
||||||
|
|
||||||
# Logging
|
# Logging
|
||||||
self.start_time = None
|
self.start_time = None
|
||||||
@@ -192,7 +195,7 @@ class BaseRenderWorker(Base):
|
|||||||
|
|
||||||
f.write(f"{self.start_time.isoformat()} - Starting {self.engine.name()} {self.renderer_version} "
|
f.write(f"{self.start_time.isoformat()} - Starting {self.engine.name()} {self.renderer_version} "
|
||||||
f"render for {self.input_path}\n\n")
|
f"render for {self.input_path}\n\n")
|
||||||
f.write(f"Running command: {subprocess_cmds}\n")
|
f.write(f"Running command: \"{' '.join(subprocess_cmds)}\"\n")
|
||||||
f.write('=' * 80 + '\n\n')
|
f.write('=' * 80 + '\n\n')
|
||||||
|
|
||||||
while True:
|
while True:
|
||||||
@@ -207,9 +210,9 @@ class BaseRenderWorker(Base):
|
|||||||
else:
|
else:
|
||||||
f.write(f'\n{"=" * 20} Attempt #{failed_attempts + 1} {"=" * 20}\n\n')
|
f.write(f'\n{"=" * 20} Attempt #{failed_attempts + 1} {"=" * 20}\n\n')
|
||||||
logger.warning(f"Restarting render - Attempt #{failed_attempts + 1}")
|
logger.warning(f"Restarting render - Attempt #{failed_attempts + 1}")
|
||||||
self.status = RenderStatus.RUNNING
|
|
||||||
|
|
||||||
# Start process and get updates
|
# Start process and get updates
|
||||||
|
self.status = RenderStatus.RUNNING
|
||||||
self.__process = subprocess.Popen(subprocess_cmds, stdout=subprocess.PIPE, stderr=subprocess.STDOUT,
|
self.__process = subprocess.Popen(subprocess_cmds, stdout=subprocess.PIPE, stderr=subprocess.STDOUT,
|
||||||
universal_newlines=False)
|
universal_newlines=False)
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user