Be more robust with missing thumbnails/previews

pull/2472/head
Chocobozzz 2020-02-06 17:39:19 +01:00
parent a3b7421abb
commit 6872996d29
No known key found for this signature in database
GPG Key ID: 583A612D890159BE
2 changed files with 18 additions and 4 deletions

View File

@ -340,9 +340,11 @@ async function updateVideoFromAP (options: {
if (thumbnailModel) await videoUpdated.addAndSaveThumbnail(thumbnailModel, t)
const previewUrl = videoUpdated.getPreview().getFileUrl(videoUpdated)
const previewModel = createPlaceholderThumbnail(previewUrl, video, ThumbnailType.PREVIEW, PREVIEWS_SIZE)
await videoUpdated.addAndSaveThumbnail(previewModel, t)
if (videoUpdated.getPreview()) {
const previewUrl = videoUpdated.getPreview().getFileUrl(videoUpdated)
const previewModel = createPlaceholderThumbnail(previewUrl, video, ThumbnailType.PREVIEW, PREVIEWS_SIZE)
await videoUpdated.addAndSaveThumbnail(previewModel, t)
}
{
const videoFileAttributes = videoFileActivityUrlToDBAttributes(videoUpdated, videoObject.url)
@ -531,6 +533,10 @@ async function createVideo (videoObject: VideoTorrentObject, channel: MChannelAc
const video = VideoModel.build(videoData) as MVideoThumbnail
const promiseThumbnail = createVideoMiniatureFromUrl(getThumbnailFromIcons(videoObject).url, video, ThumbnailType.MINIATURE)
.catch(err => {
logger.error('Cannot create miniature from url.', { err })
return undefined
})
let thumbnailModel: MThumbnail
if (waitThumbnail === true) {
@ -602,11 +608,15 @@ async function createVideo (videoObject: VideoTorrentObject, channel: MChannelAc
})
if (waitThumbnail === false) {
// Error is already caught above
// eslint-disable-next-line @typescript-eslint/no-floating-promises
promiseThumbnail.then(thumbnailModel => {
if (!thumbnailModel) return
thumbnailModel = videoCreated.id
return thumbnailModel.save()
}).catch(err => logger.error('Cannot create miniature from url.', { err }))
})
}
return { autoBlacklisted, videoCreated }

View File

@ -1937,6 +1937,10 @@ export class VideoModel extends Model<VideoModel> {
return this.uuid + '.jpg'
}
hasPreview () {
return !!this.getPreview()
}
getPreview () {
if (Array.isArray(this.Thumbnails) === false) return undefined