]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - server/lib/thumbnail.ts
Fix E2E tests
[github/Chocobozzz/PeerTube.git] / server / lib / thumbnail.ts
index cfee69cfc50df4ad6ef9733357c26f619a87662d..36270e5c13aad8a0bb12196c6f1989e1f16fa739 100644 (file)
@@ -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<any>
   filename: string
   height: number