+ if (payload.type === 'youtube-dl') return processYoutubeDLImport(job, payload)
+ if (payload.type === 'magnet-uri' || payload.type === 'torrent-file') return processTorrentImport(job, payload)
+}
+
+// ---------------------------------------------------------------------------
+
+export {
+ processVideoImport
+}
+
+// ---------------------------------------------------------------------------
+
+async function processTorrentImport (job: Bull.Job, payload: VideoImportTorrentPayload) {
+ logger.info('Processing torrent video import in job %d.', job.id)
+
+ const videoImport = await getVideoImportOrDie(payload.videoImportId)
+
+ const options = {
+ type: payload.type,
+ videoImportId: payload.videoImportId,
+
+ generateThumbnail: true,
+ generatePreview: true
+ }
+ const target = {
+ torrentName: videoImport.torrentName ? getSecureTorrentName(videoImport.torrentName) : undefined,
+ magnetUri: videoImport.magnetUri
+ }
+ return processFile(() => downloadWebTorrentVideo(target, VIDEO_IMPORT_TIMEOUT), videoImport, options)
+}
+
+async function processYoutubeDLImport (job: Bull.Job, payload: VideoImportYoutubeDLPayload) {
+ logger.info('Processing youtubeDL video import in job %d.', job.id)
+
+ const videoImport = await getVideoImportOrDie(payload.videoImportId)
+ const options = {
+ type: payload.type,
+ videoImportId: videoImport.id,
+
+ generateThumbnail: payload.generateThumbnail,
+ generatePreview: payload.generatePreview
+ }
+
+ return processFile(() => downloadYoutubeDLVideo(videoImport.targetUrl, payload.fileExt, VIDEO_IMPORT_TIMEOUT), videoImport, options)
+}
+
+async function getVideoImportOrDie (videoImportId: number) {
+ const videoImport = await VideoImportModel.loadAndPopulateVideo(videoImportId)