From aa08acaa2d0262de09920f4deb2d4ca615eee6e4 Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Tue, 19 Apr 2022 10:04:47 +0800 Subject: [PATCH] =?UTF-8?q?danmakuClip=E5=88=A0=E6=9F=A5=E6=94=B9=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=EF=BC=8CvideoClip=E5=88=A0=E9=99=A4=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app.py | 2 + controller/api/danmaku_clip_blueprint.py | 56 ++++++++++++++++++++++++ controller/api/video_clip_blueprint.py | 14 +++++- 3 files changed, 71 insertions(+), 1 deletion(-) create mode 100644 controller/api/danmaku_clip_blueprint.py diff --git a/app.py b/app.py index 0916910..2f1eebf 100644 --- a/app.py +++ b/app.py @@ -6,6 +6,7 @@ from controller.api.collector_blueprint import blueprint as api_collector_bluepr from controller.api.bilirecorder_blueprint import blueprint as api_bilirecorder_blueprint from controller.api.workflow_blueprint import blueprint as api_workflow_blueprint from controller.api.video_clip_blueprint import blueprint as api_video_clip_blueprint +from controller.api.danmaku_clip_blueprint import blueprint as api_danmaku_clip_blueprint from model import db app = Flask(__name__) @@ -23,6 +24,7 @@ app.register_blueprint(api_collector_blueprint) app.register_blueprint(api_bilirecorder_blueprint) app.register_blueprint(api_workflow_blueprint) app.register_blueprint(api_video_clip_blueprint) +app.register_blueprint(api_danmaku_clip_blueprint) with app.app_context(): # db.drop_all(app=app) db.create_all(app=app) diff --git a/controller/api/danmaku_clip_blueprint.py b/controller/api/danmaku_clip_blueprint.py new file mode 100644 index 0000000..9415034 --- /dev/null +++ b/controller/api/danmaku_clip_blueprint.py @@ -0,0 +1,56 @@ +import os + +from flask import Blueprint, jsonify, request + +from model.DanmakuClip import DanmakuClip +from util.flask import not_found_json_response, error_json_response +from model import db + +blueprint = Blueprint("api_danmaku_clip", __name__, url_prefix="/api/danmaku_clip") + + +@blueprint.get("/") +def get_danmaku_clip_info(danmaku_clip_id): + danmaku_clip = DanmakuClip.query.get(danmaku_clip_id) + if danmaku_clip is None: + return not_found_json_response(id=danmaku_clip_id) + return jsonify(danmaku_clip.to_json()) + + +@blueprint.put("/") +def modify_danmaku_clip_info(danmaku_clip_id): + danmaku_clip = DanmakuClip.query.get(danmaku_clip_id) + if danmaku_clip is None: + return not_found_json_response(id=danmaku_clip_id) + payload = request.json + if "workflow_id" in payload: + try: + workflow_id = int(payload["workflow_id"]) + danmaku_clip.workflow_id = workflow_id + except ValueError: + return error_json_response("workflow_id is not a int", workflow_id=payload["workflow_id"]) + if "base_path" in payload: + if not os.path.isdir(payload["base_path"]): + return error_json_response("base_path is not a dir", base_path=payload["base_path"]) + danmaku_clip.base_path = payload["base_path"] + if "file" in payload: + if os.path.isabs(payload["file"]): + danmaku_clip.base_path = "" + danmaku_clip.file = payload["file"] + # file exist check + if not os.path.isfile(danmaku_clip.full_path): + return error_json_response("file not exist", full_path=danmaku_clip.full_path) + db.session.commit() + return jsonify(danmaku_clip.to_json()) + + +@blueprint.delete("/") +def delete_video_clip(danmaku_clip_id): + danmaku_clip = DanmakuClip.query.get(danmaku_clip_id) + if danmaku_clip is not None: + db.session.delete(danmaku_clip) + db.session.commit() + return jsonify({ + "id": danmaku_clip_id, + "old_data": danmaku_clip + }) diff --git a/controller/api/video_clip_blueprint.py b/controller/api/video_clip_blueprint.py index 6b2adf7..252b4cf 100644 --- a/controller/api/video_clip_blueprint.py +++ b/controller/api/video_clip_blueprint.py @@ -45,4 +45,16 @@ def modify_video_clip(video_clip_id): duration = duration_str_to_float(get_video_real_duration(video_clip.full_path)) video_clip.duration = duration db.session.commit() - return jsonify(video_clip.to_json()) \ No newline at end of file + return jsonify(video_clip.to_json()) + + +@blueprint.delete("/") +def delete_video_clip(video_clip_id): + video_clip = VideoClip.query.get(video_clip_id) + if video_clip is not None: + db.session.delete(video_clip) + db.session.commit() + return jsonify({ + "id": video_clip_id, + "old_data": video_clip + })