1
0
Fork 0

Handle thumbnail update

This commit is contained in:
Chocobozzz 2018-02-14 15:33:49 +01:00
parent a0922eb9b3
commit e3a682a877
No known key found for this signature in database
GPG Key ID: 583A612D890159BE
5 changed files with 21 additions and 6 deletions

View File

@ -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 -----------

View File

@ -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']

View File

@ -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

View File

@ -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) {

View File

@ -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))
} }
} }