+ static async loadOrGenerate (video: MVideo, transaction?: Transaction) {
+ let playlist = await VideoStreamingPlaylistModel.loadHLSPlaylistByVideo(video.id, transaction)
+
+ if (!playlist) {
+ playlist = new VideoStreamingPlaylistModel({
+ p2pMediaLoaderPeerVersion: P2P_MEDIA_LOADER_PEER_VERSION,
+ type: VideoStreamingPlaylistType.HLS,
+ storage: VideoStorage.FILE_SYSTEM,
+ p2pMediaLoaderInfohashes: [],
+ playlistFilename: generateHLSMasterPlaylistFilename(video.isLive),
+ segmentsSha256Filename: generateHlsSha256SegmentsFilename(video.isLive),
+ videoId: video.id
+ })
+
+ await playlist.save({ transaction })
+ }
+
+ return Object.assign(playlist, { Video: video })