blob: 8a69d11fa86148786872f7c83199a56e6ffe8536 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
|
import { ContextType } from '../activitypub/context'
import { VideoResolution } from '../videos/file/video-resolution.enum'
import { SendEmailOptions } from './emailer.model'
export type JobState = 'active' | 'completed' | 'failed' | 'waiting' | 'delayed' | 'paused'
export type JobType =
| 'activitypub-http-unicast'
| 'activitypub-http-broadcast'
| 'activitypub-http-fetcher'
| 'activitypub-cleaner'
| 'activitypub-follow'
| 'video-file-import'
| 'video-transcoding'
| 'email'
| 'video-import'
| 'videos-views-stats'
| 'activitypub-refresher'
| 'video-redundancy'
| 'video-live-ending'
| 'actor-keys'
| 'move-to-object-storage'
export interface Job {
id: number
state: JobState
type: JobType
data: any
priority: number
progress: number
error: any
createdAt: Date | string
finishedOn: Date | string
processedOn: Date | string
}
export type ActivitypubHttpBroadcastPayload = {
uris: string[]
signatureActorId?: number
body: any
contextType?: ContextType
}
export type ActivitypubFollowPayload = {
followerActorId: number
name: string
host: string
isAutoFollow?: boolean
assertIsChannel?: boolean
}
export type FetchType = 'activity' | 'video-likes' | 'video-dislikes' | 'video-shares' | 'video-comments' | 'account-playlists'
export type ActivitypubHttpFetcherPayload = {
uri: string
type: FetchType
videoId?: number
}
export type ActivitypubHttpUnicastPayload = {
uri: string
signatureActorId?: number
body: object
contextType?: ContextType
}
export type RefreshPayload = {
type: 'video' | 'video-playlist' | 'actor'
url: string
}
export type EmailPayload = SendEmailOptions
export type VideoFileImportPayload = {
videoUUID: string
filePath: string
}
export type VideoImportTorrentPayloadType = 'magnet-uri' | 'torrent-file'
export type VideoImportYoutubeDLPayloadType = 'youtube-dl'
export type VideoImportYoutubeDLPayload = {
type: VideoImportYoutubeDLPayloadType
videoImportId: number
fileExt?: string
}
export type VideoImportTorrentPayload = {
type: VideoImportTorrentPayloadType
videoImportId: number
}
export type VideoImportPayload = VideoImportYoutubeDLPayload | VideoImportTorrentPayload
export type VideoRedundancyPayload = {
videoId: number
}
// Video transcoding payloads
interface BaseTranscodingPayload {
videoUUID: string
isNewVideo?: boolean
}
export interface HLSTranscodingPayload extends BaseTranscodingPayload {
type: 'new-resolution-to-hls'
resolution: VideoResolution
copyCodecs: boolean
hasAudio: boolean
isPortraitMode?: boolean
autoDeleteWebTorrentIfNeeded: boolean
isMaxQuality: boolean
}
export interface NewResolutionTranscodingPayload extends BaseTranscodingPayload {
type: 'new-resolution-to-webtorrent'
resolution: VideoResolution
hasAudio: boolean
isPortraitMode?: boolean
}
export interface MergeAudioTranscodingPayload extends BaseTranscodingPayload {
type: 'merge-audio-to-webtorrent'
resolution: VideoResolution
}
export interface OptimizeTranscodingPayload extends BaseTranscodingPayload {
type: 'optimize-to-webtorrent'
}
export type VideoTranscodingPayload =
HLSTranscodingPayload
| NewResolutionTranscodingPayload
| OptimizeTranscodingPayload
| MergeAudioTranscodingPayload
export interface VideoLiveEndingPayload {
videoId: number
}
export interface ActorKeysPayload {
actorId: number
}
export interface DeleteResumableUploadMetaFilePayload {
filepath: string
}
export interface MoveObjectStoragePayload {
videoUUID: string
isNewVideo: boolean
}
|