65 lines
2.3 KiB
TypeScript
65 lines
2.3 KiB
TypeScript
|
import { isStreamingPlaylist, MStreamingPlaylistVideo, MVideo, MVideoFile } from '@server/typings/models'
|
||
|
import { extractVideo } from './videos'
|
||
|
import { join } from 'path'
|
||
|
import { CONFIG } from '@server/initializers/config'
|
||
|
import { HLS_STREAMING_PLAYLIST_DIRECTORY } from '@server/initializers/constants'
|
||
|
|
||
|
// ################## Video file name ##################
|
||
|
|
||
|
function getVideoFilename (videoOrPlaylist: MVideo | MStreamingPlaylistVideo, videoFile: MVideoFile) {
|
||
|
const video = extractVideo(videoOrPlaylist)
|
||
|
|
||
|
if (isStreamingPlaylist(videoOrPlaylist)) {
|
||
|
return generateVideoStreamingPlaylistName(video.uuid, videoFile.resolution)
|
||
|
}
|
||
|
|
||
|
return generateWebTorrentVideoName(video.uuid, videoFile.resolution, videoFile.extname)
|
||
|
}
|
||
|
|
||
|
function generateVideoStreamingPlaylistName (uuid: string, resolution: number) {
|
||
|
return `${uuid}-${resolution}-fragmented.mp4`
|
||
|
}
|
||
|
|
||
|
function generateWebTorrentVideoName (uuid: string, resolution: number, extname: string) {
|
||
|
return uuid + '-' + resolution + extname
|
||
|
}
|
||
|
|
||
|
function getVideoFilePath (videoOrPlaylist: MVideo | MStreamingPlaylistVideo, videoFile: MVideoFile, isRedundancy = false) {
|
||
|
if (isStreamingPlaylist(videoOrPlaylist)) {
|
||
|
const video = extractVideo(videoOrPlaylist)
|
||
|
return join(HLS_STREAMING_PLAYLIST_DIRECTORY, video.uuid, getVideoFilename(videoOrPlaylist, videoFile))
|
||
|
}
|
||
|
|
||
|
const baseDir = isRedundancy ? CONFIG.STORAGE.REDUNDANCY_DIR : CONFIG.STORAGE.VIDEOS_DIR
|
||
|
return join(baseDir, getVideoFilename(videoOrPlaylist, videoFile))
|
||
|
}
|
||
|
|
||
|
// ################## Torrents ##################
|
||
|
|
||
|
function getTorrentFileName (videoOrPlaylist: MVideo | MStreamingPlaylistVideo, videoFile: MVideoFile) {
|
||
|
const video = extractVideo(videoOrPlaylist)
|
||
|
const extension = '.torrent'
|
||
|
|
||
|
if (isStreamingPlaylist(videoOrPlaylist)) {
|
||
|
return `${video.uuid}-${videoFile.resolution}-${videoOrPlaylist.getStringType()}${extension}`
|
||
|
}
|
||
|
|
||
|
return video.uuid + '-' + videoFile.resolution + extension
|
||
|
}
|
||
|
|
||
|
function getTorrentFilePath (videoOrPlaylist: MVideo | MStreamingPlaylistVideo, videoFile: MVideoFile) {
|
||
|
return join(CONFIG.STORAGE.TORRENTS_DIR, getTorrentFileName(videoOrPlaylist, videoFile))
|
||
|
}
|
||
|
|
||
|
// ---------------------------------------------------------------------------
|
||
|
|
||
|
export {
|
||
|
generateVideoStreamingPlaylistName,
|
||
|
generateWebTorrentVideoName,
|
||
|
getVideoFilename,
|
||
|
getVideoFilePath,
|
||
|
|
||
|
getTorrentFileName,
|
||
|
getTorrentFilePath
|
||
|
}
|