+ // 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)
+
+ const newTorrentFilename = generateTorrentFileName(videoOrPlaylist, videoFile.resolution)
+ const newTorrentPath = join(CONFIG.STORAGE.TORRENTS_DIR, newTorrentFilename)
+
+ logger.info('Updating torrent URLs %s -> %s.', oldTorrentPath, newTorrentPath)
+
+ await writeFile(newTorrentPath, bencode.encode(decoded))
+ await remove(join(CONFIG.STORAGE.TORRENTS_DIR, videoFile.torrentFilename))
+
+ videoFile.torrentFilename = newTorrentFilename