]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - scripts/regenerate-thumbnails.ts
Fix tests
[github/Chocobozzz/PeerTube.git] / scripts / regenerate-thumbnails.ts
index 04c6e2b74367b27aab512cd0c9183e3f84840f20..8075f90bab9f4bd01681e560dc28eaf1dbf2864f 100644 (file)
@@ -1,10 +1,10 @@
 import { registerTSPaths } from '../server/helpers/register-ts-paths'
 registerTSPaths()
 
-import * as Bluebird from 'bluebird'
-import * as program from 'commander'
-import { pathExists } from 'fs-extra'
-import { processImage } from '@server/helpers/image-utils'
+import { map } from 'bluebird'
+import { program } from 'commander'
+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'
@@ -23,7 +23,7 @@ async function run () {
 
   const videos = await VideoModel.listLocal()
 
-  await Bluebird.map(videos, v => {
+  await map(videos, v => {
     return processVideo(v)
       .catch(err => console.error('Cannot process video %s.', v.url, err))
   }, { concurrency: 20 })
@@ -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
 }