- const additionalAttributes = { playlistInfo: true }
- return res.json(getFormattedObjects(resultList.data, resultList.total, { additionalAttributes }))
+ const options = {
+ displayNSFW: buildNSFWFilter(res, req.query.nsfw),
+ accountId: user ? user.Account.id : undefined
+ }
+ return res.json(getFormattedObjects(resultList.data, resultList.total, options))
+}
+
+async function regeneratePlaylistThumbnail (videoPlaylist: MVideoPlaylistThumbnail) {
+ await videoPlaylist.Thumbnail.destroy()
+ videoPlaylist.Thumbnail = null
+
+ const firstElement = await VideoPlaylistElementModel.loadFirstElementWithVideoThumbnail(videoPlaylist.id)
+ if (firstElement) await generateThumbnailForPlaylist(videoPlaylist, firstElement.Video)
+}
+
+async function generateThumbnailForPlaylist (videoPlaylist: MVideoPlaylistThumbnail, video: MVideoThumbnail) {
+ logger.info('Generating default thumbnail to playlist %s.', videoPlaylist.url)
+
+ 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
+
+ videoPlaylist.Thumbnail = await thumbnailModel.save()