server/core/lib/files-cache/video-miniature-permanent-file-cache.ts
import { CONFIG } from '@server/initializers/config.js'
import { THUMBNAILS_SIZE } from '@server/initializers/constants.js'
import { ThumbnailModel } from '@server/models/video/thumbnail.js'
import { MThumbnail } from '@server/types/models/index.js'
import { ThumbnailType } from '@peertube/peertube-models'
import { AbstractPermanentFileCache } from './shared/index.js'
export class VideoMiniaturePermanentFileCache extends AbstractPermanentFileCache<MThumbnail> {
constructor () {
super(CONFIG.STORAGE.THUMBNAILS_DIR)
}
protected loadModel (filename: string) {
return ThumbnailModel.loadByFilename(filename, ThumbnailType.MINIATURE)
}
protected getImageSize (image: MThumbnail): { width: number, height: number } {
if (image.width && image.height) {
return {
height: image.height,
width: image.width
}
}
return THUMBNAILS_SIZE
}
}