X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Flib%2Fthumbnail.ts;h=36270e5c13aad8a0bb12196c6f1989e1f16fa739;hb=2e9c7877eb3a3c5d64cc5c3383f0a7c0b51f5481;hp=cfee69cfc50df4ad6ef9733357c26f619a87662d;hpb=84531547bc0934a2abda586d539f7455b455d488;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/lib/thumbnail.ts b/server/lib/thumbnail.ts index cfee69cfc..36270e5c1 100644 --- a/server/lib/thumbnail.ts +++ b/server/lib/thumbnail.ts @@ -1,5 +1,4 @@ import { join } from 'path' - import { ThumbnailType } from '../../shared/models/videos/thumbnail.type' import { generateImageFromVideoFile } from '../helpers/ffmpeg-utils' import { generateImageFilename, processImage } from '../helpers/image-utils' @@ -10,11 +9,11 @@ import { ThumbnailModel } from '../models/video/thumbnail' import { MVideoFile, MVideoThumbnail, MVideoUUID } from '../types/models' import { MThumbnail } from '../types/models/video/thumbnail' import { MVideoPlaylistThumbnail } from '../types/models/video/video-playlist' -import { getVideoFilePath } from './video-paths' +import { VideoPathManager } from './video-path-manager' type ImageSize = { height?: number, width?: number } -function createPlaylistMiniatureFromExisting (options: { +function updatePlaylistMiniatureFromExisting (options: { inputPath: string playlist: MVideoPlaylistThumbnail automaticallyGenerated: boolean @@ -26,7 +25,7 @@ function createPlaylistMiniatureFromExisting (options: { const type = ThumbnailType.MINIATURE const thumbnailCreator = () => processImage(inputPath, outputPath, { width, height }, keepOriginal) - return createThumbnailFromFunction({ + return updateThumbnailFromFunction({ thumbnailCreator, filename, height, @@ -37,7 +36,7 @@ function createPlaylistMiniatureFromExisting (options: { }) } -function createPlaylistMiniatureFromUrl (options: { +function updatePlaylistMiniatureFromUrl (options: { downloadUrl: string playlist: MVideoPlaylistThumbnail size?: ImageSize @@ -52,10 +51,10 @@ function createPlaylistMiniatureFromUrl (options: { : downloadUrl const thumbnailCreator = () => downloadImage(downloadUrl, basePath, filename, { width, height }) - return createThumbnailFromFunction({ thumbnailCreator, filename, height, width, type, existingThumbnail, fileUrl }) + return updateThumbnailFromFunction({ thumbnailCreator, filename, height, width, type, existingThumbnail, fileUrl }) } -function createVideoMiniatureFromUrl (options: { +function updateVideoMiniatureFromUrl (options: { downloadUrl: string video: MVideoThumbnail type: ThumbnailType @@ -82,10 +81,10 @@ function createVideoMiniatureFromUrl (options: { return Promise.resolve() } - return createThumbnailFromFunction({ thumbnailCreator, filename, height, width, type, existingThumbnail, fileUrl }) + return updateThumbnailFromFunction({ thumbnailCreator, filename, height, width, type, existingThumbnail, fileUrl }) } -function createVideoMiniatureFromExisting (options: { +function updateVideoMiniatureFromExisting (options: { inputPath: string video: MVideoThumbnail type: ThumbnailType @@ -98,7 +97,7 @@ function createVideoMiniatureFromExisting (options: { const { filename, outputPath, height, width, existingThumbnail } = buildMetadataFromVideo(video, type, size) const thumbnailCreator = () => processImage(inputPath, outputPath, { width, height }, keepOriginal) - return createThumbnailFromFunction({ + return updateThumbnailFromFunction({ thumbnailCreator, filename, height, @@ -116,25 +115,26 @@ function generateVideoMiniature (options: { }) { const { video, videoFile, type } = options - const input = getVideoFilePath(video, videoFile) + return VideoPathManager.Instance.makeAvailableVideoFile(videoFile.withVideoOrPlaylist(video), input => { + const { filename, basePath, height, width, existingThumbnail, outputPath } = buildMetadataFromVideo(video, type) - const { filename, basePath, height, width, existingThumbnail, outputPath } = buildMetadataFromVideo(video, type) - const thumbnailCreator = videoFile.isAudio() - ? () => processImage(ASSETS_PATH.DEFAULT_AUDIO_BACKGROUND, outputPath, { width, height }, true) - : () => generateImageFromVideoFile(input, basePath, filename, { height, width }) + const thumbnailCreator = videoFile.isAudio() + ? () => processImage(ASSETS_PATH.DEFAULT_AUDIO_BACKGROUND, outputPath, { width, height }, true) + : () => generateImageFromVideoFile(input, basePath, filename, { height, width }) - return createThumbnailFromFunction({ - thumbnailCreator, - filename, - height, - width, - type, - automaticallyGenerated: true, - existingThumbnail + return updateThumbnailFromFunction({ + thumbnailCreator, + filename, + height, + width, + type, + automaticallyGenerated: true, + existingThumbnail + }) }) } -function createPlaceholderThumbnail (options: { +function updatePlaceholderThumbnail (options: { fileUrl: string video: MVideoThumbnail type: ThumbnailType @@ -165,11 +165,11 @@ function createPlaceholderThumbnail (options: { export { generateVideoMiniature, - createVideoMiniatureFromUrl, - createVideoMiniatureFromExisting, - createPlaceholderThumbnail, - createPlaylistMiniatureFromUrl, - createPlaylistMiniatureFromExisting + updateVideoMiniatureFromUrl, + updateVideoMiniatureFromExisting, + updatePlaceholderThumbnail, + updatePlaylistMiniatureFromUrl, + updatePlaylistMiniatureFromExisting } function hasThumbnailUrlChanged (existingThumbnail: MThumbnail, downloadUrl: string, video: MVideoUUID) { @@ -231,7 +231,7 @@ function buildMetadataFromVideo (video: MVideoThumbnail, type: ThumbnailType, si return undefined } -async function createThumbnailFromFunction (parameters: { +async function updateThumbnailFromFunction (parameters: { thumbnailCreator: () => Promise filename: string height: number