From ce33919c24e7402d92d81f3cd8e545df52d98240 Mon Sep 17 00:00:00 2001 From: Chocobozzz Date: Mon, 6 Aug 2018 17:13:39 +0200 Subject: Import magnets with webtorrent --- server/helpers/webtorrent.ts | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 server/helpers/webtorrent.ts (limited to 'server/helpers/webtorrent.ts') diff --git a/server/helpers/webtorrent.ts b/server/helpers/webtorrent.ts new file mode 100644 index 000000000..fce88a1f6 --- /dev/null +++ b/server/helpers/webtorrent.ts @@ -0,0 +1,31 @@ +import { logger } from './logger' +import { generateVideoTmpPath } from './utils' +import * as WebTorrent from 'webtorrent' +import { createWriteStream } from 'fs' + +function downloadWebTorrentVideo (target: string) { + const path = generateVideoTmpPath(target) + + logger.info('Importing torrent video %s', target) + + return new Promise((res, rej) => { + const webtorrent = new WebTorrent() + + const torrent = webtorrent.add(target, torrent => { + if (torrent.files.length !== 1) throw new Error('The number of files is not equal to 1 for ' + target) + + const file = torrent.files[ 0 ] + file.createReadStream().pipe(createWriteStream(path)) + }) + + torrent.on('done', () => res(path)) + + torrent.on('error', err => rej(err)) + }) +} + +// --------------------------------------------------------------------------- + +export { + downloadWebTorrentVideo +} -- cgit v1.2.3