]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - scripts/regenerate-thumbnails.ts
Load server config on app init
[github/Chocobozzz/PeerTube.git] / scripts / regenerate-thumbnails.ts
index 04c6e2b74367b27aab512cd0c9183e3f84840f20..b95343c0b40f03719ec73df6c29700ea72d9983c 100644 (file)
@@ -3,8 +3,8 @@ registerTSPaths()
 
 import * as Bluebird from 'bluebird'
 import * as program from 'commander'
-import { pathExists } from 'fs-extra'
-import { processImage } from '@server/helpers/image-utils'
+import { pathExists, remove } from 'fs-extra'
+import { generateImageFilename, processImage } from '@server/helpers/image-utils'
 import { THUMBNAILS_SIZE } from '@server/initializers/constants'
 import { VideoModel } from '@server/models/video/video'
 import { MVideo } from '@server/types/models'
@@ -37,13 +37,8 @@ async function processVideo (videoArg: MVideo) {
   const thumbnail = video.getMiniature()
   const preview = video.getPreview()
 
-  const thumbnailPath = thumbnail.getPath()
   const previewPath = preview.getPath()
 
-  if (!await pathExists(thumbnailPath)) {
-    throw new Error(`Thumbnail ${thumbnailPath} does not exist on disk`)
-  }
-
   if (!await pathExists(previewPath)) {
     throw new Error(`Preview ${previewPath} does not exist on disk`)
   }
@@ -52,5 +47,22 @@ async function processVideo (videoArg: MVideo) {
     width: THUMBNAILS_SIZE.width,
     height: THUMBNAILS_SIZE.height
   }
+
+  const oldPath = thumbnail.getPath()
+
+  // Update thumbnail
+  thumbnail.filename = generateImageFilename()
+  thumbnail.width = size.width
+  thumbnail.height = size.height
+
+  const thumbnailPath = thumbnail.getPath()
   await processImage(previewPath, thumbnailPath, size, true)
+
+  // Save new attributes
+  await thumbnail.save()
+
+  // Remove old thumbnail
+  await remove(oldPath)
+
+  // Don't federate, remote instances will refresh the thumbnails after a while
 }