X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=server%2Fhelpers%2Fwebtorrent.ts;h=f33a7bccdb0a3c24620203211b03fb14033252fe;hb=cffef25313bdf7a6c435f56ac6715fdd91acf7b3;hp=88bdb16b630c7688d8d62440b1d9c9be0ba1ea8a;hpb=28dca0a2211524bbf3ad17666c607eb6325763b8;p=github%2FChocobozzz%2FPeerTube.git diff --git a/server/helpers/webtorrent.ts b/server/helpers/webtorrent.ts index 88bdb16b6..f33a7bccd 100644 --- a/server/helpers/webtorrent.ts +++ b/server/helpers/webtorrent.ts @@ -1,7 +1,7 @@ import { decode, encode } from 'bencode' import createTorrent from 'create-torrent' -import { createWriteStream, ensureDir, readFile, remove, writeFile } from 'fs-extra' -import magnetUtil from 'magnet-uri' +import { createWriteStream, ensureDir, pathExists, readFile, remove, writeFile } from 'fs-extra' +import { encode as magnetUriEncode } from 'magnet-uri' import parseTorrent from 'parse-torrent' import { dirname, join } from 'path' import { pipeline } from 'stream' @@ -13,9 +13,9 @@ import { VideoPathManager } from '@server/lib/video-path-manager' import { MVideo } from '@server/types/models/video/video' import { MVideoFile, MVideoFileRedundanciesOpt } from '@server/types/models/video/video-file' import { MStreamingPlaylistVideo } from '@server/types/models/video/video-streaming-playlist' +import { promisify2 } from '@shared/core-utils' import { sha1 } from '@shared/extra-utils' import { CONFIG } from '../initializers/config' -import { promisify2 } from './core-utils' import { logger } from './logger' import { generateVideoImportTmpPath } from './utils' import { extractVideo } from './video' @@ -134,6 +134,11 @@ async function updateTorrentMetadata (videoOrPlaylist: MVideo | MStreamingPlayli const oldTorrentPath = join(CONFIG.STORAGE.TORRENTS_DIR, videoFile.torrentFilename) + if (!await pathExists(oldTorrentPath)) { + logger.info('Do not update torrent metadata %s of video %s because the file does not exist anymore.', video.uuid, oldTorrentPath) + return + } + const torrentContent = await readFile(oldTorrentPath) const decoded = decode(torrentContent) @@ -151,7 +156,7 @@ async function updateTorrentMetadata (videoOrPlaylist: MVideo | MStreamingPlayli logger.info('Updating torrent metadata %s -> %s.', oldTorrentPath, newTorrentPath) await writeFile(newTorrentPath, encode(decoded)) - await remove(join(CONFIG.STORAGE.TORRENTS_DIR, videoFile.torrentFilename)) + await remove(oldTorrentPath) videoFile.torrentFilename = newTorrentFilename videoFile.infoHash = sha1(encode(decoded.info)) @@ -164,7 +169,10 @@ function generateMagnetUri ( ) { const xs = videoFile.getTorrentUrl() const announce = trackerUrls - let urlList = [ videoFile.getFileUrl(video) ] + + let urlList = video.hasPrivateStaticPath() + ? [] + : [ videoFile.getFileUrl(video) ] const redundancies = videoFile.RedundancyVideos if (isArray(redundancies)) urlList = urlList.concat(redundancies.map(r => r.fileUrl)) @@ -177,7 +185,7 @@ function generateMagnetUri ( name: video.name } - return magnetUtil.encode(magnetHash) + return magnetUriEncode(magnetHash) } // --------------------------------------------------------------------------- @@ -240,6 +248,8 @@ function buildAnnounceList () { } function buildUrlList (video: MVideo, videoFile: MVideoFile) { + if (video.hasPrivateStaticPath()) return [] + return [ videoFile.getFileUrl(video) ] }