aboutsummaryrefslogtreecommitdiffhomepage
path: root/server/lib/job-queue/handlers/video-import.ts
diff options
context:
space:
mode:
Diffstat (limited to 'server/lib/job-queue/handlers/video-import.ts')
-rw-r--r--server/lib/job-queue/handlers/video-import.ts20
1 files changed, 15 insertions, 5 deletions
diff --git a/server/lib/job-queue/handlers/video-import.ts b/server/lib/job-queue/handlers/video-import.ts
index f4629159c..9901b878c 100644
--- a/server/lib/job-queue/handlers/video-import.ts
+++ b/server/lib/job-queue/handlers/video-import.ts
@@ -8,7 +8,7 @@ import { generateWebTorrentVideoFilename } from '@server/lib/paths'
8import { Hooks } from '@server/lib/plugins/hooks' 8import { Hooks } from '@server/lib/plugins/hooks'
9import { ServerConfigManager } from '@server/lib/server-config-manager' 9import { ServerConfigManager } from '@server/lib/server-config-manager'
10import { isAbleToUploadVideo } from '@server/lib/user' 10import { isAbleToUploadVideo } from '@server/lib/user'
11import { buildOptimizeOrMergeAudioJob, buildMoveToObjectStorageJob } from '@server/lib/video' 11import { buildMoveToObjectStorageJob, buildOptimizeOrMergeAudioJob } from '@server/lib/video'
12import { VideoPathManager } from '@server/lib/video-path-manager' 12import { VideoPathManager } from '@server/lib/video-path-manager'
13import { buildNextVideoState } from '@server/lib/video-state' 13import { buildNextVideoState } from '@server/lib/video-state'
14import { ThumbnailModel } from '@server/models/video/thumbnail' 14import { ThumbnailModel } from '@server/models/video/thumbnail'
@@ -18,6 +18,7 @@ import { isAudioFile } from '@shared/extra-utils'
18import { 18import {
19 ThumbnailType, 19 ThumbnailType,
20 VideoImportPayload, 20 VideoImportPayload,
21 VideoImportPreventExceptionResult,
21 VideoImportState, 22 VideoImportState,
22 VideoImportTorrentPayload, 23 VideoImportTorrentPayload,
23 VideoImportTorrentPayloadType, 24 VideoImportTorrentPayloadType,
@@ -41,20 +42,29 @@ import { Notifier } from '../../notifier'
41import { generateVideoMiniature } from '../../thumbnail' 42import { generateVideoMiniature } from '../../thumbnail'
42import { JobQueue } from '../job-queue' 43import { JobQueue } from '../job-queue'
43 44
44async function processVideoImport (job: Job) { 45async function processVideoImport (job: Job): Promise<VideoImportPreventExceptionResult> {
45 const payload = job.data as VideoImportPayload 46 const payload = job.data as VideoImportPayload
46 47
47 const videoImport = await getVideoImportOrDie(payload) 48 const videoImport = await getVideoImportOrDie(payload)
48 if (videoImport.state === VideoImportState.CANCELLED) { 49 if (videoImport.state === VideoImportState.CANCELLED) {
49 logger.info('Do not process import since it has been cancelled', { payload }) 50 logger.info('Do not process import since it has been cancelled', { payload })
50 return 51 return { resultType: 'success' }
51 } 52 }
52 53
53 videoImport.state = VideoImportState.PROCESSING 54 videoImport.state = VideoImportState.PROCESSING
54 await videoImport.save() 55 await videoImport.save()
55 56
56 if (payload.type === 'youtube-dl') return processYoutubeDLImport(job, videoImport, payload) 57 try {
57 if (payload.type === 'magnet-uri' || payload.type === 'torrent-file') return processTorrentImport(job, videoImport, payload) 58 if (payload.type === 'youtube-dl') await processYoutubeDLImport(job, videoImport, payload)
59 if (payload.type === 'magnet-uri' || payload.type === 'torrent-file') await processTorrentImport(job, videoImport, payload)
60
61 return { resultType: 'success' }
62 } catch (err) {
63 if (!payload.preventException) throw err
64
65 logger.warn('Catch error in video import to send value to parent job.', { payload, err })
66 return { resultType: 'error' }
67 }
58} 68}
59 69
60// --------------------------------------------------------------------------- 70// ---------------------------------------------------------------------------