X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=shared%2Fmodels%2Fserver%2Fjob.model.ts;h=9370cf011caedc0bbda00f887259438585c7e9ff;hb=4ec52d04dcc5d664612331f8e08d7d90da990415;hp=694361276c23c8bc051dfe9ad2046c4219b26226;hpb=8dc8a34ee8428e7657414115d1c137592efa174d;p=github%2FChocobozzz%2FPeerTube.git diff --git a/shared/models/server/job.model.ts b/shared/models/server/job.model.ts index 694361276..9370cf011 100644 --- a/shared/models/server/job.model.ts +++ b/shared/models/server/job.model.ts @@ -1,27 +1,37 @@ -import { ContextType } from '@server/helpers/activitypub' +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' -import { VideoResolution } from '@shared/models' -export type JobState = 'active' | 'completed' | 'failed' | 'waiting' | 'delayed' +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' + | 'videos-views-stats' | 'activitypub-refresher' | 'video-redundancy' + | 'video-live-ending' + | 'actor-keys' + | 'manage-video-torrent' + | 'move-to-object-storage' + | 'video-studio-edition' export interface Job { id: number state: JobState type: JobType data: any + priority: number + progress: number error: any createdAt: Date | string finishedOn: Date | string @@ -30,9 +40,9 @@ export interface Job { export type ActivitypubHttpBroadcastPayload = { uris: string[] - signatureActorId?: number + contextType: ContextType body: any - contextType?: ContextType + signatureActorId?: number } export type ActivitypubFollowPayload = { @@ -43,19 +53,18 @@ 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 videoId?: number - accountId?: number } export type ActivitypubHttpUnicastPayload = { uri: string + contextType: ContextType signatureActorId?: number - body: any - contextType?: ContextType + body: object } export type RefreshPayload = { @@ -70,17 +79,17 @@ export type VideoFileImportPayload = { filePath: string } +export type VideoImportTorrentPayloadType = 'magnet-uri' | 'torrent-file' +export type VideoImportYoutubeDLPayloadType = 'youtube-dl' + export type VideoImportYoutubeDLPayload = { - type: 'youtube-dl' + type: VideoImportYoutubeDLPayloadType videoImportId: number - generateThumbnail: boolean - generatePreview: boolean - fileExt?: string } export type VideoImportTorrentPayload = { - type: 'magnet-uri' | 'torrent-file' + type: VideoImportTorrentPayloadType videoImportId: number } export type VideoImportPayload = VideoImportYoutubeDLPayload | VideoImportTorrentPayload @@ -89,6 +98,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 { @@ -96,30 +119,98 @@ interface BaseTranscodingPayload { isNewVideo?: boolean } -interface HLSTranscodingPayload extends BaseTranscodingPayload { - type: 'hls' - isPortraitMode?: boolean +export interface HLSTranscodingPayload extends BaseTranscodingPayload { + type: 'new-resolution-to-hls' resolution: VideoResolution copyCodecs: boolean -} -export interface NewResolutionTranscodingPayload extends BaseTranscodingPayload { - type: 'new-resolution' + hasAudio: boolean isPortraitMode?: boolean + + autoDeleteWebTorrentIfNeeded: boolean + isMaxQuality: boolean +} + +export interface NewWebTorrentResolutionTranscodingPayload extends BaseTranscodingPayload { + type: 'new-resolution-to-webtorrent' resolution: VideoResolution + + hasAudio: boolean + createHLSIfNeeded: boolean + + isPortraitMode?: boolean } export interface MergeAudioTranscodingPayload extends BaseTranscodingPayload { - type: 'merge-audio' + type: 'merge-audio-to-webtorrent' resolution: VideoResolution + createHLSIfNeeded: true } export interface OptimizeTranscodingPayload extends BaseTranscodingPayload { - type: 'optimize' + type: 'optimize-to-webtorrent' } export type VideoTranscodingPayload = HLSTranscodingPayload - | NewResolutionTranscodingPayload + | NewWebTorrentResolutionTranscodingPayload | OptimizeTranscodingPayload | MergeAudioTranscodingPayload + +export interface VideoLiveEndingPayload { + videoId: number + publishedAt: string + + replayDirectory?: string +} + +export interface ActorKeysPayload { + actorId: number +} + +export interface DeleteResumableUploadMetaFilePayload { + filepath: string +} + +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[] +}