diff options
Diffstat (limited to 'server/helpers/webtorrent.ts')
-rw-r--r-- | server/helpers/webtorrent.ts | 31 |
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' | |||
6 | import * as WebTorrent from 'webtorrent' | 6 | import * as WebTorrent from 'webtorrent' |
7 | import { isArray } from '@server/helpers/custom-validators/misc' | 7 | import { isArray } from '@server/helpers/custom-validators/misc' |
8 | import { WEBSERVER } from '@server/initializers/constants' | 8 | import { WEBSERVER } from '@server/initializers/constants' |
9 | import { generateTorrentFileName, getVideoFilePath } from '@server/lib/video-paths' | 9 | import { generateTorrentFileName } from '@server/lib/paths' |
10 | import { VideoPathManager } from '@server/lib/video-path-manager' | ||
10 | import { MVideo } from '@server/types/models/video/video' | 11 | import { MVideo } from '@server/types/models/video/video' |
11 | import { MVideoFile, MVideoFileRedundanciesOpt } from '@server/types/models/video/video-file' | 12 | import { MVideoFile, MVideoFileRedundanciesOpt } from '@server/types/models/video/video-file' |
12 | import { MStreamingPlaylistVideo } from '@server/types/models/video/video-streaming-playlist' | 13 | import { 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 | ||
81 | async function createTorrentAndSetInfoHash ( | 82 | function 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 | ||
116 | function generateMagnetUri ( | 119 | function generateMagnetUri ( |