diff --git a/controller/api/workflow_blueprint.py b/controller/api/workflow_blueprint.py index 63a2e55..d37e87e 100644 --- a/controller/api/workflow_blueprint.py +++ b/controller/api/workflow_blueprint.py @@ -1,6 +1,9 @@ +import threading + from flask import Blueprint, jsonify from model.Workflow import Workflow +from worker.danmaku import do_workflow from model import db blueprint = Blueprint("api_workflow", __name__, url_prefix="/api/workflow") @@ -18,15 +21,47 @@ def get_workflow_info(workflow_id): return jsonify(workflow) -@blueprint.put("/<int:workflow_id>/done") -def done_editing(workflow_id): +@blueprint.post("/<int:workflow_id>/edit") +def start_editing(workflow_id): workflow = Workflow.get(workflow_id) + if workflow is None: + response = jsonify({ + "message": "Not Found" + }) + response.status_code = 404 + return response + workflow.editing = True + db.session.commit() return jsonify(workflow.to_dict()) -@blueprint.post("/<int:workflow_id>/queue") -def add_to_queue(workflow_id): - # JOB_QUEUE.put(workflow_item) - return jsonify({ - 'id': workflow_id, - }) +@blueprint.delete("/<int:workflow_id>/edit") +def done_editing(workflow_id): + workflow = Workflow.get(workflow_id) + if workflow is None: + response = jsonify({ + "message": "Not Found" + }) + response.status_code = 404 + return response + workflow.editing = False + db.session.commit() + return jsonify(workflow.to_dict()) + + +@blueprint.post("/<int:workflow_id>/do") +def do_workflow(workflow_id): + workflow = Workflow.get(workflow_id) + if workflow is None: + response = jsonify({ + "message": "Not Found" + }) + response.status_code = 404 + return response + if len(workflow.video_clips) > 0 and len(workflow.danmaku_clips) > 0: + threading.Thread(target=do_workflow, args=( + workflow.video_clips[0].full_path, + workflow.danmaku_clips[0].full_path, + *[clip.full_path for clip in workflow.danmaku_clips[1:]] + )).start() + return jsonify(workflow.to_dict())