27 lines
827 B
TypeScript
27 lines
827 B
TypeScript
|
import { moveAndProcessCaptionFile } from '@server/helpers/captions-utils.js'
|
||
|
import { sequelizeTypescript } from '@server/initializers/database.js'
|
||
|
import { VideoCaptionModel } from '@server/models/video/video-caption.js'
|
||
|
import { MVideo, MVideoCaption } from '@server/types/models/index.js'
|
||
|
|
||
|
export async function createLocalCaption (options: {
|
||
|
video: MVideo
|
||
|
path: string
|
||
|
language: string
|
||
|
}) {
|
||
|
const { language, path, video } = options
|
||
|
|
||
|
const videoCaption = new VideoCaptionModel({
|
||
|
videoId: video.id,
|
||
|
filename: VideoCaptionModel.generateCaptionName(language),
|
||
|
language
|
||
|
}) as MVideoCaption
|
||
|
|
||
|
await moveAndProcessCaptionFile({ path }, videoCaption)
|
||
|
|
||
|
await sequelizeTypescript.transaction(async t => {
|
||
|
await VideoCaptionModel.insertOrReplaceLanguage(videoCaption, t)
|
||
|
})
|
||
|
|
||
|
return videoCaption
|
||
|
}
|