]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blame - shared/models/server/job.model.ts
Support progress for ffmpeg tasks
[github/Chocobozzz/PeerTube.git] / shared / models / server / job.model.ts
CommitLineData
e307e4fc 1import { ContextType } from '../activitypub/context'
0fecf427
C
2import { VideoResolution } from '../videos/video-resolution.enum'
3import { SendEmailOptions } from './emailer.model'
8dc8a34e 4
402145b8 5export type JobState = 'active' | 'completed' | 'failed' | 'waiting' | 'delayed' | 'paused'
94a5ff8a 6
a1587156
C
7export type JobType =
8 | 'activitypub-http-unicast'
9 | 'activitypub-http-broadcast'
10 | 'activitypub-http-fetcher'
11 | 'activitypub-follow'
12 | 'video-file-import'
13 | 'video-transcoding'
14 | 'email'
15 | 'video-import'
16 | 'videos-views'
17 | 'activitypub-refresher'
18 | 'video-redundancy'
a5cf76af 19 | 'video-live-ending'
5cd80545
C
20
21export interface Job {
22 id: number
23 state: JobState
94a5ff8a 24 type: JobType
a1587156 25 data: any
3b01f4c0 26 progress: number
a1587156 27 error: any
1061c73f
C
28 createdAt: Date | string
29 finishedOn: Date | string
30 processedOn: Date | string
5cd80545 31}
8dc8a34e
C
32
33export type ActivitypubHttpBroadcastPayload = {
34 uris: string[]
35 signatureActorId?: number
36 body: any
37 contextType?: ContextType
38}
39
40export type ActivitypubFollowPayload = {
41 followerActorId: number
42 name: string
43 host: string
44 isAutoFollow?: boolean
45 assertIsChannel?: boolean
46}
47
48export type FetchType = 'activity' | 'video-likes' | 'video-dislikes' | 'video-shares' | 'video-comments' | 'account-playlists'
49export type ActivitypubHttpFetcherPayload = {
50 uri: string
51 type: FetchType
52 videoId?: number
53 accountId?: number
54}
55
56export type ActivitypubHttpUnicastPayload = {
57 uri: string
58 signatureActorId?: number
59 body: any
60 contextType?: ContextType
61}
62
63export type RefreshPayload = {
64 type: 'video' | 'video-playlist' | 'actor'
65 url: string
66}
67
68export type EmailPayload = SendEmailOptions
69
70export type VideoFileImportPayload = {
71 videoUUID: string
72 filePath: string
73}
74
2158ac90
RK
75export type VideoImportTorrentPayloadType = 'magnet-uri' | 'torrent-file'
76export type VideoImportYoutubeDLPayloadType = 'youtube-dl'
77
8dc8a34e 78export type VideoImportYoutubeDLPayload = {
2158ac90 79 type: VideoImportYoutubeDLPayloadType
8dc8a34e
C
80 videoImportId: number
81
82 generateThumbnail: boolean
83 generatePreview: boolean
8dc8a34e
C
84 fileExt?: string
85}
86export type VideoImportTorrentPayload = {
2158ac90 87 type: VideoImportTorrentPayloadType
8dc8a34e
C
88 videoImportId: number
89}
90export type VideoImportPayload = VideoImportYoutubeDLPayload | VideoImportTorrentPayload
91
92export type VideoRedundancyPayload = {
93 videoId: number
94}
95
96// Video transcoding payloads
97
98interface BaseTranscodingPayload {
99 videoUUID: string
100 isNewVideo?: boolean
101}
102
103interface HLSTranscodingPayload extends BaseTranscodingPayload {
104 type: 'hls'
105 isPortraitMode?: boolean
106 resolution: VideoResolution
107 copyCodecs: boolean
108}
109
110export interface NewResolutionTranscodingPayload extends BaseTranscodingPayload {
111 type: 'new-resolution'
112 isPortraitMode?: boolean
113 resolution: VideoResolution
114}
115
116export interface MergeAudioTranscodingPayload extends BaseTranscodingPayload {
117 type: 'merge-audio'
118 resolution: VideoResolution
119}
120
121export interface OptimizeTranscodingPayload extends BaseTranscodingPayload {
122 type: 'optimize'
123}
124
125export type VideoTranscodingPayload =
126 HLSTranscodingPayload
127 | NewResolutionTranscodingPayload
128 | OptimizeTranscodingPayload
129 | MergeAudioTranscodingPayload
a5cf76af
C
130
131export interface VideoLiveEndingPayload {
132 videoId: number
133}