X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=shared%2Fmodels%2Fserver%2Fjob.model.ts;h=a924183f2f7a43965a657f6bb11e615b9719efd9;hb=5a921e7b74910414626bfc9672b857e987e3ebed;hp=8a69d11fa86148786872f7c83199a56e6ffe8536;hpb=3318147300b4f998adf728eb0a5a14a4c1829c51;p=github%2FChocobozzz%2FPeerTube.git diff --git a/shared/models/server/job.model.ts b/shared/models/server/job.model.ts index 8a69d11fa..a924183f2 100644 --- a/shared/models/server/job.model.ts +++ b/shared/models/server/job.model.ts @@ -1,12 +1,15 @@ import { ContextType } from '../activitypub/context' +import { VideoState } from '../videos' import { VideoResolution } from '../videos/file/video-resolution.enum' +import { VideoStudioTaskCut } from '../videos/studio' import { SendEmailOptions } from './emailer.model' -export type JobState = 'active' | 'completed' | 'failed' | 'waiting' | 'delayed' | 'paused' +export type JobState = 'active' | 'completed' | 'failed' | 'waiting' | 'delayed' | 'paused' | 'waiting-children' export type JobType = | 'activitypub-http-unicast' | 'activitypub-http-broadcast' + | 'activitypub-http-broadcast-parallel' | 'activitypub-http-fetcher' | 'activitypub-cleaner' | 'activitypub-follow' @@ -19,11 +22,13 @@ export type JobType = | 'video-redundancy' | 'video-live-ending' | 'actor-keys' + | 'manage-video-torrent' | 'move-to-object-storage' + | 'video-studio-edition' export interface Job { - id: number - state: JobState + id: number | string + state: JobState | 'unknown' type: JobType data: any priority: number @@ -36,9 +41,9 @@ export interface Job { export type ActivitypubHttpBroadcastPayload = { uris: string[] - signatureActorId?: number + contextType: ContextType body: any - contextType?: ContextType + signatureActorId?: number } export type ActivitypubFollowPayload = { @@ -49,7 +54,7 @@ export type ActivitypubFollowPayload = { assertIsChannel?: boolean } -export type FetchType = 'activity' | 'video-likes' | 'video-dislikes' | 'video-shares' | 'video-comments' | 'account-playlists' +export type FetchType = 'activity' | 'video-shares' | 'video-comments' | 'account-playlists' export type ActivitypubHttpFetcherPayload = { uri: string type: FetchType @@ -58,9 +63,9 @@ export type ActivitypubHttpFetcherPayload = { export type ActivitypubHttpUnicastPayload = { uri: string + contextType: ContextType signatureActorId?: number body: object - contextType?: ContextType } export type RefreshPayload = { @@ -94,6 +99,20 @@ export type VideoRedundancyPayload = { videoId: number } +export type ManageVideoTorrentPayload = + { + action: 'create' + videoId: number + videoFileId: number + } | { + action: 'update-metadata' + + videoId?: number + streamingPlaylistId?: number + + videoFileId: number + } + // Video transcoding payloads interface BaseTranscodingPayload { @@ -107,24 +126,23 @@ export interface HLSTranscodingPayload extends BaseTranscodingPayload { copyCodecs: boolean hasAudio: boolean - isPortraitMode?: boolean autoDeleteWebTorrentIfNeeded: boolean isMaxQuality: boolean } -export interface NewResolutionTranscodingPayload extends BaseTranscodingPayload { +export interface NewWebTorrentResolutionTranscodingPayload extends BaseTranscodingPayload { type: 'new-resolution-to-webtorrent' resolution: VideoResolution hasAudio: boolean - - isPortraitMode?: boolean + createHLSIfNeeded: boolean } export interface MergeAudioTranscodingPayload extends BaseTranscodingPayload { type: 'merge-audio-to-webtorrent' resolution: VideoResolution + createHLSIfNeeded: true } export interface OptimizeTranscodingPayload extends BaseTranscodingPayload { @@ -133,12 +151,17 @@ export interface OptimizeTranscodingPayload extends BaseTranscodingPayload { export type VideoTranscodingPayload = HLSTranscodingPayload - | NewResolutionTranscodingPayload + | NewWebTorrentResolutionTranscodingPayload | OptimizeTranscodingPayload | MergeAudioTranscodingPayload export interface VideoLiveEndingPayload { videoId: number + publishedAt: string + liveSessionId: number + streamingPlaylistId: number + + replayDirectory?: string } export interface ActorKeysPayload { @@ -152,4 +175,42 @@ export interface DeleteResumableUploadMetaFilePayload { export interface MoveObjectStoragePayload { videoUUID: string isNewVideo: boolean + previousVideoState: VideoState +} + +export type VideoStudioTaskCutPayload = VideoStudioTaskCut + +export type VideoStudioTaskIntroPayload = { + name: 'add-intro' + + options: { + file: string + } +} + +export type VideoStudioTaskOutroPayload = { + name: 'add-outro' + + options: { + file: string + } +} + +export type VideoStudioTaskWatermarkPayload = { + name: 'add-watermark' + + options: { + file: string + } +} + +export type VideoStudioTaskPayload = + VideoStudioTaskCutPayload | + VideoStudioTaskIntroPayload | + VideoStudioTaskOutroPayload | + VideoStudioTaskWatermarkPayload + +export interface VideoStudioEditionPayload { + videoUUID: string + tasks: VideoStudioTaskPayload[] }