]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - scripts/regenerate-thumbnails.ts
Update data in DB when regenerate thumbnails
[github/Chocobozzz/PeerTube.git] / scripts / regenerate-thumbnails.ts
index 04c6e2b74367b27aab512cd0c9183e3f84840f20..0213b8a22414ed1f4557852e9d003f838b4890f6 100644 (file)
@@ -3,12 +3,13 @@ registerTSPaths()
 
 import * as Bluebird from 'bluebird'
 import * as program from 'commander'
-import { pathExists } from 'fs-extra'
+import { pathExists, remove } from 'fs-extra'
 import { 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'
 import { initDatabaseModels } from '@server/initializers/database'
+import { ActorImageModel } from '@server/models/account/actor-image'
 
 program
   .description('Regenerate local thumbnails using preview files')
@@ -37,13 +38,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 +48,22 @@ async function processVideo (videoArg: MVideo) {
     width: THUMBNAILS_SIZE.width,
     height: THUMBNAILS_SIZE.height
   }
+
+  const oldPath = thumbnail.getPath()
+
+  // Update thumbnail
+  thumbnail.filename = ActorImageModel.generateFilename()
+  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
 }