+ return VideoPathManager.Instance.makeAvailableVideoFile(videoOrPlaylist, videoFile, async videoPath => {
+ const torrentContent = await createTorrentPromise(videoPath, options)
+
+ const torrentFilename = generateTorrentFileName(videoOrPlaylist, videoFile.resolution)
+ const torrentPath = join(CONFIG.STORAGE.TORRENTS_DIR, torrentFilename)
+ logger.info('Creating torrent %s.', torrentPath)
+
+ await writeFile(torrentPath, torrentContent)
+
+ // Remove old torrent file if it existed
+ if (videoFile.hasTorrent()) {
+ await remove(join(CONFIG.STORAGE.TORRENTS_DIR, videoFile.torrentFilename))
+ }
+
+ const parsedTorrent = parseTorrent(torrentContent)
+ videoFile.infoHash = parsedTorrent.infoHash
+ videoFile.torrentFilename = torrentFilename
+ })
+}
+
+async function updateTorrentUrls (videoOrPlaylist: MVideo | MStreamingPlaylistVideo, videoFile: MVideoFile) {
+ const video = extractVideo(videoOrPlaylist)
+
+ const oldTorrentPath = join(CONFIG.STORAGE.TORRENTS_DIR, videoFile.torrentFilename)
+
+ const torrentContent = await readFile(oldTorrentPath)
+ const decoded = bencode.decode(torrentContent)
+
+ decoded['announce-list'] = buildAnnounceList()
+ decoded.announce = decoded['announce-list'][0][0]
+
+ decoded['url-list'] = buildUrlList(video, videoFile)