X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=scripts%2Fregenerate-thumbnails.ts;h=8075f90bab9f4bd01681e560dc28eaf1dbf2864f;hb=188aa7740c603fe333cb2fa15494605d1f16a168;hp=b0071efe000b72f02391a990de21e2b7bf433c87;hpb=a786d8a08bf99f339bf16808f46e160404497ae2;p=github%2FChocobozzz%2FPeerTube.git diff --git a/scripts/regenerate-thumbnails.ts b/scripts/regenerate-thumbnails.ts index b0071efe0..8075f90ba 100644 --- a/scripts/regenerate-thumbnails.ts +++ b/scripts/regenerate-thumbnails.ts @@ -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 }) @@ -32,16 +32,13 @@ async function run () { async function processVideo (videoArg: MVideo) { const video = await VideoModel.loadWithFiles(videoArg.id) + console.log('Processing video %s.', video.name) + 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`) } @@ -50,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 }