X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Fcontrollers%2Fapi%2Fvideo-playlist.ts;h=41a0e07ff5f4433edacba477161c88a2ff6b4e9a;hb=8872828d59a5152e27734711ae30ebe86e84f570;hp=d9f0ff9257bac20327269d5cad5e68c1982ef35f;hpb=001ed2d40c8d2c8f494f5dc7f91ed62d56df10fd;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/controllers/api/video-playlist.ts b/server/controllers/api/video-playlist.ts index d9f0ff925..41a0e07ff 100644 --- a/server/controllers/api/video-playlist.ts +++ b/server/controllers/api/video-playlist.ts @@ -1,5 +1,5 @@ import * as express from 'express' -import { getFormattedObjects, getServerActor } from '../../helpers/utils' +import { getFormattedObjects } from '../../helpers/utils' import { asyncMiddleware, asyncRetryTransactionMiddleware, @@ -40,7 +40,8 @@ import { JobQueue } from '../../lib/job-queue' import { CONFIG } from '../../initializers/config' import { sequelizeTypescript } from '../../initializers/database' import { createPlaylistMiniatureFromExisting } from '../../lib/thumbnail' -import { MVideoPlaylistFull, MVideoPlaylistThumbnail, MVideoThumbnail } from '@server/typings/models' +import { MVideoPlaylistFull, MVideoPlaylistThumbnail, MVideoThumbnail } from '@server/types/models' +import { getServerActor } from '@server/models/application/application' const reqThumbnailFile = createReqFiles([ 'thumbnailfile' ], MIMETYPES.IMAGE.MIMETYPE_EXT, { thumbnailfile: CONFIG.STORAGE.TMP_DIR }) @@ -144,7 +145,6 @@ function getVideoPlaylist (req: express.Request, res: express.Response) { if (videoPlaylist.isOutdated()) { JobQueue.Instance.createJob({ type: 'activitypub-refresher', payload: { type: 'video-playlist', url: videoPlaylist.url } }) - .catch(err => logger.error('Cannot create AP refresher job for playlist %s.', videoPlaylist.url, { err })) } return res.json(videoPlaylist.toFormattedJSON()) @@ -297,7 +297,6 @@ async function addVideoInPlaylist (req: express.Request, res: express.Response) const position = await VideoPlaylistElementModel.getNextPositionOf(videoPlaylist.id, t) const playlistElement = await VideoPlaylistElementModel.create({ - url: getVideoPlaylistElementActivityPubUrl(videoPlaylist, video), position, startTimestamp: body.startTimestamp || null, stopTimestamp: body.stopTimestamp || null, @@ -305,6 +304,9 @@ async function addVideoInPlaylist (req: express.Request, res: express.Response) videoId: video.id }, { transaction: t }) + playlistElement.url = getVideoPlaylistElementActivityPubUrl(videoPlaylist, playlistElement) + await playlistElement.save({ transaction: t }) + videoPlaylist.changed('updatedAt', true) await videoPlaylist.save({ transaction: t }) @@ -464,7 +466,13 @@ async function regeneratePlaylistThumbnail (videoPlaylist: MVideoPlaylistThumbna async function generateThumbnailForPlaylist (videoPlaylist: MVideoPlaylistThumbnail, video: MVideoThumbnail) { logger.info('Generating default thumbnail to playlist %s.', videoPlaylist.url) - const inputPath = join(CONFIG.STORAGE.THUMBNAILS_DIR, video.getMiniature().filename) + const videoMiniature = video.getMiniature() + if (!videoMiniature) { + logger.info('Cannot generate thumbnail for playlist %s because video %s does not have any.', videoPlaylist.url, video.url) + return + } + + const inputPath = join(CONFIG.STORAGE.THUMBNAILS_DIR, videoMiniature.filename) const thumbnailModel = await createPlaylistMiniatureFromExisting(inputPath, videoPlaylist, true, true) thumbnailModel.videoPlaylistId = videoPlaylist.id