From 2e9c7877eb3a3c5d64cc5c3383f0a7c0b51f5481 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Thu, 16 Dec 2021 16:49:43 +0100 Subject: Add videos.getFiles plugin helper --- server/lib/plugins/plugin-helpers-builder.ts | 55 +++++++++++++++++++++++++++- 1 file changed, 53 insertions(+), 2 deletions(-) (limited to 'server/lib') diff --git a/server/lib/plugins/plugin-helpers-builder.ts b/server/lib/plugins/plugin-helpers-builder.ts index e26776f45..bea0f8959 100644 --- a/server/lib/plugins/plugin-helpers-builder.ts +++ b/server/lib/plugins/plugin-helpers-builder.ts @@ -9,15 +9,16 @@ import { AccountBlocklistModel } from '@server/models/account/account-blocklist' import { getServerActor } from '@server/models/application/application' import { ServerModel } from '@server/models/server/server' import { ServerBlocklistModel } from '@server/models/server/server-blocklist' +import { UserModel } from '@server/models/user/user' import { VideoModel } from '@server/models/video/video' import { VideoBlacklistModel } from '@server/models/video/video-blacklist' import { MPlugin } from '@server/types/models' import { PeerTubeHelpers } from '@server/types/plugins' -import { VideoBlacklistCreate } from '@shared/models' +import { VideoBlacklistCreate, VideoStorage } from '@shared/models' import { addAccountInBlocklist, addServerInBlocklist, removeAccountFromBlocklist, removeServerFromBlocklist } from '../blocklist' import { ServerConfigManager } from '../server-config-manager' import { blacklistVideo, unblacklistVideo } from '../video-blacklist' -import { UserModel } from '@server/models/user/user' +import { VideoPathManager } from '../video-path-manager' function buildPluginHelpers (pluginModel: MPlugin, npmName: string): PeerTubeHelpers { const logger = buildPluginLogger(npmName) @@ -85,6 +86,56 @@ function buildVideosHelpers () { await video.destroy({ transaction: t }) }) + }, + + getFiles: async (id: number | string) => { + const video = await VideoModel.loadAndPopulateAccountAndServerAndTags(id) + if (!video) return undefined + + const webtorrentVideoFiles = (video.VideoFiles || []).map(f => ({ + path: f.storage === VideoStorage.FILE_SYSTEM + ? VideoPathManager.Instance.getFSVideoFileOutputPath(video, f) + : null, + url: f.getFileUrl(video), + + resolution: f.resolution, + size: f.size, + fps: f.fps + })) + + const hls = video.getHLSPlaylist() + + const hlsVideoFiles = hls + ? (video.getHLSPlaylist().VideoFiles || []).map(f => { + return { + path: f.storage === VideoStorage.FILE_SYSTEM + ? VideoPathManager.Instance.getFSVideoFileOutputPath(hls, f) + : null, + url: f.getFileUrl(video), + resolution: f.resolution, + size: f.size, + fps: f.fps + } + }) + : [] + + const thumbnails = video.Thumbnails.map(t => ({ + type: t.type, + url: t.getFileUrl(video), + path: t.getPath() + })) + + return { + webtorrent: { + videoFiles: webtorrentVideoFiles + }, + + hls: { + videoFiles: hlsVideoFiles + }, + + thumbnails + } } } } -- cgit v1.2.3