aboutsummaryrefslogtreecommitdiffhomepage
path: root/server/helpers/webtorrent.ts
diff options
context:
space:
mode:
Diffstat (limited to 'server/helpers/webtorrent.ts')
-rw-r--r--server/helpers/webtorrent.ts31
1 files changed, 17 insertions, 14 deletions
diff --git a/server/helpers/webtorrent.ts b/server/helpers/webtorrent.ts
index ecf63e93e..c84376304 100644
--- a/server/helpers/webtorrent.ts
+++ b/server/helpers/webtorrent.ts
@@ -6,7 +6,8 @@ import { dirname, join } from 'path'
6import * as WebTorrent from 'webtorrent' 6import * as WebTorrent from 'webtorrent'
7import { isArray } from '@server/helpers/custom-validators/misc' 7import { isArray } from '@server/helpers/custom-validators/misc'
8import { WEBSERVER } from '@server/initializers/constants' 8import { WEBSERVER } from '@server/initializers/constants'
9import { generateTorrentFileName, getVideoFilePath } from '@server/lib/video-paths' 9import { generateTorrentFileName } from '@server/lib/paths'
10import { VideoPathManager } from '@server/lib/video-path-manager'
10import { MVideo } from '@server/types/models/video/video' 11import { MVideo } from '@server/types/models/video/video'
11import { MVideoFile, MVideoFileRedundanciesOpt } from '@server/types/models/video/video-file' 12import { MVideoFile, MVideoFileRedundanciesOpt } from '@server/types/models/video/video-file'
12import { MStreamingPlaylistVideo } from '@server/types/models/video/video-streaming-playlist' 13import { MStreamingPlaylistVideo } from '@server/types/models/video/video-streaming-playlist'
@@ -78,7 +79,7 @@ async function downloadWebTorrentVideo (target: { magnetUri: string, torrentName
78 }) 79 })
79} 80}
80 81
81async function createTorrentAndSetInfoHash ( 82function createTorrentAndSetInfoHash (
82 videoOrPlaylist: MVideo | MStreamingPlaylistVideo, 83 videoOrPlaylist: MVideo | MStreamingPlaylistVideo,
83 videoFile: MVideoFile 84 videoFile: MVideoFile
84) { 85) {
@@ -95,22 +96,24 @@ async function createTorrentAndSetInfoHash (
95 urlList: [ videoFile.getFileUrl(video) ] 96 urlList: [ videoFile.getFileUrl(video) ]
96 } 97 }
97 98
98 const torrent = await createTorrentPromise(getVideoFilePath(videoOrPlaylist, videoFile), options) 99 return VideoPathManager.Instance.makeAvailableVideoFile(videoOrPlaylist, videoFile, async videoPath => {
100 const torrent = await createTorrentPromise(videoPath, options)
99 101
100 const torrentFilename = generateTorrentFileName(videoOrPlaylist, videoFile.resolution) 102 const torrentFilename = generateTorrentFileName(videoOrPlaylist, videoFile.resolution)
101 const torrentPath = join(CONFIG.STORAGE.TORRENTS_DIR, torrentFilename) 103 const torrentPath = join(CONFIG.STORAGE.TORRENTS_DIR, torrentFilename)
102 logger.info('Creating torrent %s.', torrentPath) 104 logger.info('Creating torrent %s.', torrentPath)
103 105
104 await writeFile(torrentPath, torrent) 106 await writeFile(torrentPath, torrent)
105 107
106 // Remove old torrent file if it existed 108 // Remove old torrent file if it existed
107 if (videoFile.hasTorrent()) { 109 if (videoFile.hasTorrent()) {
108 await remove(join(CONFIG.STORAGE.TORRENTS_DIR, videoFile.torrentFilename)) 110 await remove(join(CONFIG.STORAGE.TORRENTS_DIR, videoFile.torrentFilename))
109 } 111 }
110 112
111 const parsedTorrent = parseTorrent(torrent) 113 const parsedTorrent = parseTorrent(torrent)
112 videoFile.infoHash = parsedTorrent.infoHash 114 videoFile.infoHash = parsedTorrent.infoHash
113 videoFile.torrentFilename = torrentFilename 115 videoFile.torrentFilename = torrentFilename
116 })
114} 117}
115 118
116function generateMagnetUri ( 119function generateMagnetUri (