X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=shared%2Fmodels%2Fserver%2Fjob.model.ts;h=4633ab7696fa2ec11ad486b948865856c62ae023;hb=630d0a1bf5897fff203cb07e426223f55dcc882d;hp=8a69d11fa86148786872f7c83199a56e6ffe8536;hpb=cbe2f36d93c779ca08424336be7e3988e57be01d;p=github%2FChocobozzz%2FPeerTube.git diff --git a/shared/models/server/job.model.ts b/shared/models/server/job.model.ts index 8a69d11fa..4633ab769 100644 --- a/shared/models/server/job.model.ts +++ b/shared/models/server/job.model.ts @@ -1,4 +1,6 @@ import { ContextType } from '../activitypub/context' +import { VideoState } from '../videos' +import { VideoStudioTaskCut } from '../videos/studio' import { VideoResolution } from '../videos/file/video-resolution.enum' import { SendEmailOptions } from './emailer.model' @@ -7,6 +9,7 @@ export type JobState = 'active' | 'completed' | 'failed' | 'waiting' | 'delayed' export type JobType = | 'activitypub-http-unicast' | 'activitypub-http-broadcast' + | 'activitypub-http-broadcast-parallel' | 'activitypub-http-fetcher' | 'activitypub-cleaner' | 'activitypub-follow' @@ -19,7 +22,9 @@ 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 @@ -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 { @@ -113,11 +132,12 @@ export interface HLSTranscodingPayload extends BaseTranscodingPayload { isMaxQuality: boolean } -export interface NewResolutionTranscodingPayload extends BaseTranscodingPayload { +export interface NewWebTorrentResolutionTranscodingPayload extends BaseTranscodingPayload { type: 'new-resolution-to-webtorrent' resolution: VideoResolution hasAudio: boolean + createHLSIfNeeded: boolean isPortraitMode?: boolean } @@ -125,6 +145,7 @@ export interface NewResolutionTranscodingPayload extends BaseTranscodingPayload export interface MergeAudioTranscodingPayload extends BaseTranscodingPayload { type: 'merge-audio-to-webtorrent' resolution: VideoResolution + createHLSIfNeeded: true } export interface OptimizeTranscodingPayload extends BaseTranscodingPayload { @@ -133,12 +154,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 +178,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[] }