import { Hooks } from '@server/lib/plugins/hooks'
import { isAbleToUploadVideo } from '@server/lib/user'
import { addOptimizeOrMergeAudioJob } from '@server/lib/video'
-import { getVideoFilePath } from '@server/lib/video-paths'
+import { generateVideoFilename, getVideoFilePath } from '@server/lib/video-paths'
import { ThumbnailModel } from '@server/models/video/thumbnail'
import { MVideoImportDefault, MVideoImportDefaultFiles, MVideoImportVideo } from '@server/types/models/video/video-import'
import {
const options = {
type: payload.type,
- videoImportId: payload.videoImportId,
-
- generateThumbnail: true,
- generatePreview: true
+ videoImportId: payload.videoImportId
}
const target = {
torrentName: videoImport.torrentName ? getSecureTorrentName(videoImport.torrentName) : undefined,
const videoImport = await getVideoImportOrDie(payload.videoImportId)
const options = {
type: payload.type,
- videoImportId: videoImport.id,
-
- generateThumbnail: payload.generateThumbnail,
- generatePreview: payload.generatePreview
+ videoImportId: videoImport.id
}
return processFile(
type ProcessFileOptions = {
type: VideoImportYoutubeDLPayloadType | VideoImportTorrentPayloadType
videoImportId: number
-
- generateThumbnail: boolean
- generatePreview: boolean
}
async function processFile (downloader: () => Promise<string>, videoImport: MVideoImportDefault, options: ProcessFileOptions) {
let tempVideoPath: string
const duration = await getDurationFromVideoFile(tempVideoPath)
// Prepare video file object for creation in database
+ const fileExt = extname(tempVideoPath)
const videoFileData = {
- extname: extname(tempVideoPath),
+ extname: fileExt,
resolution: videoFileResolution,
size: stats.size,
+ filename: generateVideoFilename(videoImport.Video, false, videoFileResolution, fileExt),
fps,
videoId: videoImport.videoId
}
await move(tempVideoPath, videoDestFile)
tempVideoPath = null // This path is not used anymore
- // Process thumbnail
+ // Generate miniature if the import did not created it
let thumbnailModel: MThumbnail
let thumbnailSave: object
- if (options.generateThumbnail) {
- thumbnailModel = await generateVideoMiniature(videoImportWithFiles.Video, videoFile, ThumbnailType.MINIATURE)
+ if (!videoImportWithFiles.Video.getMiniature()) {
+ thumbnailModel = await generateVideoMiniature({
+ video: videoImportWithFiles.Video,
+ videoFile,
+ type: ThumbnailType.MINIATURE
+ })
thumbnailSave = thumbnailModel.toJSON()
}
- // Process preview
+ // Generate preview if the import did not created it
let previewModel: MThumbnail
let previewSave: object
- if (options.generatePreview) {
- previewModel = await generateVideoMiniature(videoImportWithFiles.Video, videoFile, ThumbnailType.PREVIEW)
+ if (!videoImportWithFiles.Video.getPreview()) {
+ previewModel = await generateVideoMiniature({
+ video: videoImportWithFiles.Video,
+ videoFile,
+ type: ThumbnailType.PREVIEW
+ })
previewSave = previewModel.toJSON()
}