mirror of
https://github.com/blw1138/Zordon.git
synced 2025-12-17 16:58:12 +00:00
Change Renderer classes to RenderWorkers. Created RenderWorkerFactory.
This commit is contained in:
@@ -13,11 +13,7 @@ import json
|
||||
import os
|
||||
from flask import Flask, jsonify, request
|
||||
|
||||
from utilities.aerender import AERenderer
|
||||
from utilities.blender import BlenderRenderer
|
||||
from utilities.ffmpeg_render import FFMPEGRenderer
|
||||
from utilities.generic_renderer import RenderStatus
|
||||
from utilities.generic_renderer import string_to_status
|
||||
from utilities.render_worker import RenderWorkerFactory, RenderStatus, string_to_status
|
||||
|
||||
data = 'foo'
|
||||
app = Flask(__name__)
|
||||
@@ -86,11 +82,6 @@ class RenderJob:
|
||||
return json_string
|
||||
|
||||
|
||||
def render_factory(input_path, output_path):
|
||||
if '.blend' in input_path.lower():
|
||||
return BlenderRenderer(input_path, output_path)
|
||||
|
||||
|
||||
class RenderServer:
|
||||
render_queue = []
|
||||
render_clients = []
|
||||
@@ -154,14 +145,7 @@ class RenderServer:
|
||||
for job in job_list:
|
||||
|
||||
# Identify renderer type and recreate Renderer object
|
||||
# TODO: refactor to factory class
|
||||
job_render_object = None
|
||||
if job['renderer'] == 'Blender':
|
||||
job_render_object = BlenderRenderer(job['render']['input'], job['render']['output'])
|
||||
elif job['renderer'] == 'After Effects':
|
||||
AERenderer()
|
||||
elif job['renderer'] == 'ffmpeg':
|
||||
job_render_object = FFMPEGRenderer(job['render']['input'], job['render']['output'])
|
||||
job_render_object = RenderWorkerFactory.create_worker(job['renderer'], input_path=job['render']['input'], output_path=job['render']['output'])
|
||||
|
||||
# Load Renderer values
|
||||
for key, val in job['render'].items():
|
||||
@@ -335,27 +319,29 @@ def add_job():
|
||||
renderer = request.json["renderer"]
|
||||
input_path = request.json["input"]
|
||||
output_path = request.json["output"]
|
||||
priority = request.json.get('priority', 2)
|
||||
args = request.json.get('args', None)
|
||||
force_start = request.json.get('force_start', False)
|
||||
|
||||
return add_job_handler(renderer, input_path, output_path, args=args, priority=priority, force_start=force_start)
|
||||
|
||||
|
||||
def add_job_handler(renderer, input_path, output_path, args=None, priority=2, force_start=False):
|
||||
|
||||
if not os.path.exists(input_path):
|
||||
err_msg = f"Cannot add job. Cannot find input file: {input_path}"
|
||||
logger.error(err_msg)
|
||||
return {"error": err_msg}, 400
|
||||
|
||||
# todo: create factory class for creating renderers
|
||||
if "blender" in renderer:
|
||||
render_job = BlenderRenderer(input_path, output_path)
|
||||
render_job.engine = request.json.get('engine', 'BLENDER_EEVEE')
|
||||
elif "aerender" in renderer:
|
||||
render_job = AERenderer(input_path, output_path)
|
||||
elif "ffmpeg" in renderer:
|
||||
render_job = FFMPEGRenderer(input_path, output_path, args=request.json.get('args', None))
|
||||
else:
|
||||
err_msg = "Unknown renderer: {}".format(renderer)
|
||||
logger.error(err_msg)
|
||||
return {'error': err_msg}, 400
|
||||
try:
|
||||
render_job = RenderWorkerFactory.create_worker(renderer, input_path, output_path, args)
|
||||
except ValueError as e:
|
||||
logger.exception(e)
|
||||
return {'error': str(e)}, 400
|
||||
|
||||
new_job = RenderJob(render_job, priority=priority)
|
||||
RenderServer.add_to_render_queue(new_job, force_start=force_start)
|
||||
|
||||
new_job = RenderJob(render_job, priority=request.json.get('priority', 2))
|
||||
RenderServer.add_to_render_queue(new_job, force_start=request.json.get('force_start', False))
|
||||
return new_job.json()
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user