Don't create another uneeded preview placeholder

This commit is contained in:
Chocobozzz 2021-03-03 11:02:34 +01:00
parent cd2c3dcdc4
commit 1ef447bd83
No known key found for this signature in database
GPG Key ID: 583A612D890159BE
1 changed files with 19 additions and 10 deletions

View File

@ -1,5 +1,4 @@
import { join } from 'path' import { join } from 'path'
import { ThumbnailType } from '../../shared/models/videos/thumbnail.type' import { ThumbnailType } from '../../shared/models/videos/thumbnail.type'
import { generateImageFromVideoFile } from '../helpers/ffmpeg-utils' import { generateImageFromVideoFile } from '../helpers/ffmpeg-utils'
import { processImage } from '../helpers/image-utils' import { processImage } from '../helpers/image-utils'
@ -7,7 +6,7 @@ import { downloadImage } from '../helpers/requests'
import { CONFIG } from '../initializers/config' import { CONFIG } from '../initializers/config'
import { ASSETS_PATH, PREVIEWS_SIZE, THUMBNAILS_SIZE } from '../initializers/constants' import { ASSETS_PATH, PREVIEWS_SIZE, THUMBNAILS_SIZE } from '../initializers/constants'
import { ThumbnailModel } from '../models/video/thumbnail' import { ThumbnailModel } from '../models/video/thumbnail'
import { MVideoFile, MVideoThumbnail } from '../types/models' import { MVideoFile, MVideoThumbnail, MVideoUUID } from '../types/models'
import { MThumbnail } from '../types/models/video/thumbnail' import { MThumbnail } from '../types/models/video/thumbnail'
import { MVideoPlaylistThumbnail } from '../types/models/video/video-playlist' import { MVideoPlaylistThumbnail } from '../types/models/video/video-playlist'
import { getVideoFilePath } from './video-paths' import { getVideoFilePath } from './video-paths'
@ -69,13 +68,7 @@ function createVideoMiniatureFromUrl (options: {
? null ? null
: downloadUrl : downloadUrl
// If the thumbnail URL did not change const thumbnailUrlChanged = hasThumbnailUrlChanged(existingThumbnail, downloadUrl, video)
const existingUrl = existingThumbnail
? existingThumbnail.fileUrl
: null
// If the thumbnail URL did not change and has a unique filename (introduced in 3.1), avoid thumbnail processing
const thumbnailUrlChanged = !existingUrl || existingUrl !== downloadUrl || downloadUrl.endsWith(`${video.uuid}.jpg`)
// Do not change the thumbnail filename if the file did not change // Do not change the thumbnail filename if the file did not change
const filename = thumbnailUrlChanged const filename = thumbnailUrlChanged
@ -147,10 +140,17 @@ function createPlaceholderThumbnail (options: {
size: ImageSize size: ImageSize
}) { }) {
const { fileUrl, video, type, size } = options const { fileUrl, video, type, size } = options
const { filename, height, width, existingThumbnail } = buildMetadataFromVideo(video, type, size) const { filename: updatedFilename, height, width, existingThumbnail } = buildMetadataFromVideo(video, type, size)
const thumbnailUrlChanged = hasThumbnailUrlChanged(existingThumbnail, fileUrl, video)
const thumbnail = existingThumbnail || new ThumbnailModel() const thumbnail = existingThumbnail || new ThumbnailModel()
// Do not change the thumbnail filename if the file did not change
const filename = thumbnailUrlChanged
? updatedFilename
: existingThumbnail.filename
thumbnail.filename = filename thumbnail.filename = filename
thumbnail.height = height thumbnail.height = height
thumbnail.width = width thumbnail.width = width
@ -171,6 +171,15 @@ export {
createPlaylistMiniatureFromExisting createPlaylistMiniatureFromExisting
} }
function hasThumbnailUrlChanged (existingThumbnail: MThumbnail, downloadUrl: string, video: MVideoUUID) {
const existingUrl = existingThumbnail
? existingThumbnail.fileUrl
: null
// If the thumbnail URL did not change and has a unique filename (introduced in 3.1), avoid thumbnail processing
return !existingUrl || existingUrl !== downloadUrl || downloadUrl.endsWith(`${video.uuid}.jpg`)
}
function buildMetadataFromPlaylist (playlist: MVideoPlaylistThumbnail, size: ImageSize) { function buildMetadataFromPlaylist (playlist: MVideoPlaylistThumbnail, size: ImageSize) {
const filename = playlist.generateThumbnailName() const filename = playlist.generateThumbnailName()
const basePath = CONFIG.STORAGE.THUMBNAILS_DIR const basePath = CONFIG.STORAGE.THUMBNAILS_DIR