aboutsummaryrefslogtreecommitdiffhomepage
path: root/server/lib/job-queue
diff options
context:
space:
mode:
authorChocobozzz <me@florianbigard.com>2018-08-07 09:54:36 +0200
committerChocobozzz <me@florianbigard.com>2018-08-08 09:30:31 +0200
commit990b6a0b0c4fbebc165e5cf7cec8fbc1cbaa6c66 (patch)
tree8aaa0638798bfa14813f4d6ed5247242313b9ce6 /server/lib/job-queue
parentce33919c24e7402d92d81f3cd8e545df52d98240 (diff)
downloadPeerTube-990b6a0b0c4fbebc165e5cf7cec8fbc1cbaa6c66.tar.gz
PeerTube-990b6a0b0c4fbebc165e5cf7cec8fbc1cbaa6c66.tar.zst
PeerTube-990b6a0b0c4fbebc165e5cf7cec8fbc1cbaa6c66.zip
Import torrents with webtorrent
Diffstat (limited to 'server/lib/job-queue')
-rw-r--r--server/lib/job-queue/handlers/video-import.ts12
1 files changed, 9 insertions, 3 deletions
diff --git a/server/lib/job-queue/handlers/video-import.ts b/server/lib/job-queue/handlers/video-import.ts
index c457b71fc..fd61aecad 100644
--- a/server/lib/job-queue/handlers/video-import.ts
+++ b/server/lib/job-queue/handlers/video-import.ts
@@ -14,6 +14,7 @@ import { JobQueue } from '../index'
14import { federateVideoIfNeeded } from '../../activitypub' 14import { federateVideoIfNeeded } from '../../activitypub'
15import { VideoModel } from '../../../models/video/video' 15import { VideoModel } from '../../../models/video/video'
16import { downloadWebTorrentVideo } from '../../../helpers/webtorrent' 16import { downloadWebTorrentVideo } from '../../../helpers/webtorrent'
17import { getSecureTorrentName } from '../../../helpers/utils'
17 18
18type VideoImportYoutubeDLPayload = { 19type VideoImportYoutubeDLPayload = {
19 type: 'youtube-dl' 20 type: 'youtube-dl'
@@ -25,7 +26,7 @@ type VideoImportYoutubeDLPayload = {
25} 26}
26 27
27type VideoImportTorrentPayload = { 28type VideoImportTorrentPayload = {
28 type: 'magnet-uri' 29 type: 'magnet-uri' | 'torrent-file'
29 videoImportId: number 30 videoImportId: number
30} 31}
31 32
@@ -35,7 +36,7 @@ async function processVideoImport (job: Bull.Job) {
35 const payload = job.data as VideoImportPayload 36 const payload = job.data as VideoImportPayload
36 37
37 if (payload.type === 'youtube-dl') return processYoutubeDLImport(job, payload) 38 if (payload.type === 'youtube-dl') return processYoutubeDLImport(job, payload)
38 if (payload.type === 'magnet-uri') return processTorrentImport(job, payload) 39 if (payload.type === 'magnet-uri' || payload.type === 'torrent-file') return processTorrentImport(job, payload)
39} 40}
40 41
41// --------------------------------------------------------------------------- 42// ---------------------------------------------------------------------------
@@ -50,6 +51,7 @@ async function processTorrentImport (job: Bull.Job, payload: VideoImportTorrentP
50 logger.info('Processing torrent video import in job %d.', job.id) 51 logger.info('Processing torrent video import in job %d.', job.id)
51 52
52 const videoImport = await getVideoImportOrDie(payload.videoImportId) 53 const videoImport = await getVideoImportOrDie(payload.videoImportId)
54
53 const options = { 55 const options = {
54 videoImportId: payload.videoImportId, 56 videoImportId: payload.videoImportId,
55 57
@@ -59,7 +61,11 @@ async function processTorrentImport (job: Bull.Job, payload: VideoImportTorrentP
59 generateThumbnail: true, 61 generateThumbnail: true,
60 generatePreview: true 62 generatePreview: true
61 } 63 }
62 return processFile(() => downloadWebTorrentVideo(videoImport.magnetUri), videoImport, options) 64 const target = {
65 torrentName: videoImport.torrentName ? getSecureTorrentName(videoImport.torrentName) : undefined,
66 magnetUri: videoImport.magnetUri
67 }
68 return processFile(() => downloadWebTorrentVideo(target), videoImport, options)
63} 69}
64 70
65async function processYoutubeDLImport (job: Bull.Job, payload: VideoImportYoutubeDLPayload) { 71async function processYoutubeDLImport (job: Bull.Job, payload: VideoImportYoutubeDLPayload) {