my-video-workflow/model/VideoClip.py
2022-04-22 16:03:05 +08:00

39 lines
1.2 KiB
Python

import os.path
from typing import TYPE_CHECKING
from . import db
if TYPE_CHECKING:
from .Workflow import Workflow
from .DanmakuClip import DanmakuClip
class VideoClip(db.Model):
danmaku_clips: list["DanmakuClip"]
id = db.Column(db.Integer, primary_key=True, autoincrement=True)
base_path = db.Column(db.String(255))
file = db.Column(db.String(255))
duration = db.Column(db.Float, nullable=False, default=0)
offset = db.Column(db.Float, nullable=False, default=0)
workflow_id = db.Column(db.Integer, db.ForeignKey('workflow.id'))
workflow: "Workflow" = db.relationship("Workflow", uselist=False, backref=db.backref("video_clips"))
@property
def full_path(self):
if self.base_path is not None and self.base_path != "":
return os.path.abspath(os.path.join(self.base_path, self.file))
else:
return os.path.abspath(self.file)
def to_json(self):
return {
"id": self.id,
"base_path": self.base_path,
"file": self.file,
"duration": self.duration,
"offset": self.offset,
"workflow_id": self.workflow_id,
"danmaku_clips": [i.to_json() for i in self.danmaku_clips],
}