mirror of https://github.com/Chocobozzz/PeerTube
Handle thumbnail update
parent
a0922eb9b3
commit
e3a682a877
|
@ -158,8 +158,13 @@ app.use(function (req, res, next) {
|
||||||
})
|
})
|
||||||
|
|
||||||
app.use(function (err, req, res, next) {
|
app.use(function (err, req, res, next) {
|
||||||
logger.error('Error in controller.', { error: err.stack || err.message || err })
|
let error = 'Unknown error.'
|
||||||
res.sendStatus(err.status || 500)
|
if (err) {
|
||||||
|
error = err.stack || err.message || err
|
||||||
|
}
|
||||||
|
|
||||||
|
logger.error('Error in controller.', { error })
|
||||||
|
return res.status(err.status || 500).end()
|
||||||
})
|
})
|
||||||
|
|
||||||
// ----------- Run -----------
|
// ----------- Run -----------
|
||||||
|
|
|
@ -195,7 +195,10 @@ async function addVideo (req: express.Request, res: express.Response, videoPhysi
|
||||||
const videoFile = new VideoFileModel(videoFileData)
|
const videoFile = new VideoFileModel(videoFileData)
|
||||||
const videoDir = CONFIG.STORAGE.VIDEOS_DIR
|
const videoDir = CONFIG.STORAGE.VIDEOS_DIR
|
||||||
const destination = join(videoDir, video.getVideoFilename(videoFile))
|
const destination = join(videoDir, video.getVideoFilename(videoFile))
|
||||||
|
|
||||||
await renamePromise(videoPhysicalFile.path, destination)
|
await renamePromise(videoPhysicalFile.path, destination)
|
||||||
|
// This is important in case if there is another attempt in the retry process
|
||||||
|
videoPhysicalFile.filename = video.getVideoFilename(videoFile)
|
||||||
|
|
||||||
// Process thumbnail or create it from the video
|
// Process thumbnail or create it from the video
|
||||||
const thumbnailField = req.files['thumbnailfile']
|
const thumbnailField = req.files['thumbnailfile']
|
||||||
|
|
|
@ -21,7 +21,7 @@ function keysExcluder (key, value) {
|
||||||
return excludedKeys[key] === true ? undefined : value
|
return excludedKeys[key] === true ? undefined : value
|
||||||
}
|
}
|
||||||
|
|
||||||
const loggerFormat = winston.format.printf((info) => {
|
const loggerFormat = winston.format.printf(info => {
|
||||||
let additionalInfos = JSON.stringify(info, keysExcluder, 2)
|
let additionalInfos = JSON.stringify(info, keysExcluder, 2)
|
||||||
if (additionalInfos === '{}') additionalInfos = ''
|
if (additionalInfos === '{}') additionalInfos = ''
|
||||||
else additionalInfos = ' ' + additionalInfos
|
else additionalInfos = ' ' + additionalInfos
|
||||||
|
|
|
@ -11,7 +11,10 @@ import { ActorModel } from '../../../models/activitypub/actor'
|
||||||
import { TagModel } from '../../../models/video/tag'
|
import { TagModel } from '../../../models/video/tag'
|
||||||
import { VideoFileModel } from '../../../models/video/video-file'
|
import { VideoFileModel } from '../../../models/video/video-file'
|
||||||
import { fetchAvatarIfExists, getOrCreateActorAndServerAndModel, updateActorAvatarInstance, updateActorInstance } from '../actor'
|
import { fetchAvatarIfExists, getOrCreateActorAndServerAndModel, updateActorAvatarInstance, updateActorInstance } from '../actor'
|
||||||
import { getOrCreateAccountAndVideoAndChannel, videoActivityObjectToDBAttributes, videoFileActivityUrlToDBAttributes } from '../videos'
|
import {
|
||||||
|
generateThumbnailFromUrl, getOrCreateAccountAndVideoAndChannel, videoActivityObjectToDBAttributes,
|
||||||
|
videoFileActivityUrlToDBAttributes
|
||||||
|
} from '../videos'
|
||||||
|
|
||||||
async function processUpdateActivity (activity: ActivityUpdate) {
|
async function processUpdateActivity (activity: ActivityUpdate) {
|
||||||
const actor = await getOrCreateActorAndServerAndModel(activity.actor)
|
const actor = await getOrCreateActorAndServerAndModel(activity.actor)
|
||||||
|
@ -82,6 +85,10 @@ async function updateRemoteVideo (actor: ActorModel, activity: ActivityUpdate) {
|
||||||
|
|
||||||
await videoInstance.save(sequelizeOptions)
|
await videoInstance.save(sequelizeOptions)
|
||||||
|
|
||||||
|
// Don't block on request
|
||||||
|
generateThumbnailFromUrl(videoInstance, videoAttributesToUpdate.icon)
|
||||||
|
.catch(err => logger.warn('Cannot generate thumbnail of %s.', videoAttributesToUpdate.id, err))
|
||||||
|
|
||||||
// Remove old video files
|
// Remove old video files
|
||||||
const videoFileDestroyTasks: Bluebird<void>[] = []
|
const videoFileDestroyTasks: Bluebird<void>[] = []
|
||||||
for (const videoFile of videoInstance.VideoFiles) {
|
for (const videoFile of videoInstance.VideoFiles) {
|
||||||
|
|
|
@ -11,12 +11,12 @@ function asyncMiddleware (fun: RequestPromiseHandler | RequestPromiseHandler[])
|
||||||
if (Array.isArray(fun) === true) {
|
if (Array.isArray(fun) === true) {
|
||||||
return eachSeries(fun as RequestHandler[], (f, cb) => {
|
return eachSeries(fun as RequestHandler[], (f, cb) => {
|
||||||
Promise.resolve(f(req, res, cb))
|
Promise.resolve(f(req, res, cb))
|
||||||
.catch(next)
|
.catch(err => next(err))
|
||||||
}, next)
|
}, next)
|
||||||
}
|
}
|
||||||
|
|
||||||
return Promise.resolve((fun as RequestHandler)(req, res, next))
|
return Promise.resolve((fun as RequestHandler)(req, res, next))
|
||||||
.catch(next)
|
.catch(err => next(err))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue