Don't fail on upload if we cannot generate thumbnail
This commit is contained in:
parent
266707202c
commit
6fdc553adb
|
@ -1,8 +1,10 @@
|
||||||
import * as ffmpeg from 'fluent-ffmpeg'
|
import * as ffmpeg from 'fluent-ffmpeg'
|
||||||
|
import { join } from 'path'
|
||||||
import { VideoResolution } from '../../shared/models/videos'
|
import { VideoResolution } from '../../shared/models/videos'
|
||||||
import { CONFIG, MAX_VIDEO_TRANSCODING_FPS } from '../initializers'
|
import { CONFIG, MAX_VIDEO_TRANSCODING_FPS } from '../initializers'
|
||||||
|
import { unlinkPromise } from './core-utils'
|
||||||
import { processImage } from './image-utils'
|
import { processImage } from './image-utils'
|
||||||
import { join } from 'path'
|
import { logger } from './logger'
|
||||||
|
|
||||||
async function getVideoFileHeight (path: string) {
|
async function getVideoFileHeight (path: string) {
|
||||||
const videoStream = await getVideoFileStream(path)
|
const videoStream = await getVideoFileStream(path)
|
||||||
|
@ -45,16 +47,27 @@ async function generateImageFromVideoFile (fromPath: string, folder: string, ima
|
||||||
folder
|
folder
|
||||||
}
|
}
|
||||||
|
|
||||||
await new Promise<string>((res, rej) => {
|
|
||||||
ffmpeg(fromPath)
|
|
||||||
.on('error', rej)
|
|
||||||
.on('end', () => res(imageName))
|
|
||||||
.thumbnail(options)
|
|
||||||
})
|
|
||||||
|
|
||||||
const pendingImagePath = join(folder, pendingImageName)
|
const pendingImagePath = join(folder, pendingImageName)
|
||||||
const destination = join(folder, imageName)
|
|
||||||
await processImage({ path: pendingImagePath }, destination, size)
|
try {
|
||||||
|
await new Promise<string>((res, rej) => {
|
||||||
|
ffmpeg(fromPath)
|
||||||
|
.on('error', rej)
|
||||||
|
.on('end', () => res(imageName))
|
||||||
|
.thumbnail(options)
|
||||||
|
})
|
||||||
|
|
||||||
|
const destination = join(folder, imageName)
|
||||||
|
await processImage({ path: pendingImagePath }, destination, size)
|
||||||
|
} catch (err) {
|
||||||
|
logger.error('Cannot generate image from video %s.', fromPath, err)
|
||||||
|
|
||||||
|
try {
|
||||||
|
await unlinkPromise(pendingImagePath)
|
||||||
|
} catch (err) {
|
||||||
|
logger.debug('Cannot remove pending image path after generation error.', err)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
type TranscodeOptions = {
|
type TranscodeOptions = {
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
import { isTestInstance } from '../../helpers/core-utils'
|
||||||
import { logger } from '../../helpers/logger'
|
import { logger } from '../../helpers/logger'
|
||||||
import { ActorFollowModel } from '../../models/activitypub/actor-follow'
|
import { ActorFollowModel } from '../../models/activitypub/actor-follow'
|
||||||
import { AbstractScheduler } from './abstract-scheduler'
|
import { AbstractScheduler } from './abstract-scheduler'
|
||||||
|
@ -11,7 +12,7 @@ export class BadActorFollowScheduler extends AbstractScheduler {
|
||||||
}
|
}
|
||||||
|
|
||||||
async execute () {
|
async execute () {
|
||||||
logger.info('Removing bad actor follows (scheduler).')
|
if (!isTestInstance()) logger.info('Removing bad actor follows (scheduler).')
|
||||||
|
|
||||||
try {
|
try {
|
||||||
await ActorFollowModel.removeBadActorFollows()
|
await ActorFollowModel.removeBadActorFollows()
|
||||||
|
|
|
@ -1,3 +1,4 @@
|
||||||
|
import { isTestInstance } from '../../helpers/core-utils'
|
||||||
import { logger } from '../../helpers/logger'
|
import { logger } from '../../helpers/logger'
|
||||||
import { JobQueue } from '../job-queue'
|
import { JobQueue } from '../job-queue'
|
||||||
import { AbstractScheduler } from './abstract-scheduler'
|
import { AbstractScheduler } from './abstract-scheduler'
|
||||||
|
@ -11,7 +12,7 @@ export class RemoveOldJobsScheduler extends AbstractScheduler {
|
||||||
}
|
}
|
||||||
|
|
||||||
async execute () {
|
async execute () {
|
||||||
logger.info('Removing old jobs (scheduler).')
|
if (!isTestInstance()) logger.info('Removing old jobs (scheduler).')
|
||||||
|
|
||||||
JobQueue.Instance.removeOldJobs()
|
JobQueue.Instance.removeOldJobs()
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue