]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - shared/models/server/job.model.ts
Add peertube runner cli
[github/Chocobozzz/PeerTube.git] / shared / models / server / job.model.ts
index 073f1587291e068333ac38dd5da69f731a7abc3e..16187d133b1b9430863465f406ea725a532c841f 100644 (file)
@@ -1,33 +1,39 @@
 import { ContextType } from '../activitypub/context'
 import { VideoState } from '../videos'
-import { VideoStudioTaskCut } from '../videos/studio'
 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-fetcher'
   | 'activitypub-cleaner'
   | 'activitypub-follow'
-  | 'video-file-import'
-  | 'video-transcoding'
-  | 'email'
-  | 'video-import'
-  | 'videos-views-stats'
+  | 'activitypub-http-broadcast-parallel'
+  | 'activitypub-http-broadcast'
+  | 'activitypub-http-fetcher'
+  | 'activitypub-http-unicast'
   | 'activitypub-refresher'
-  | 'video-redundancy'
-  | 'video-live-ending'
   | 'actor-keys'
+  | 'after-video-channel-import'
+  | 'email'
+  | 'federate-video'
+  | 'transcoding-job-builder'
   | 'manage-video-torrent'
   | 'move-to-object-storage'
+  | 'notify'
+  | 'video-channel-import'
+  | 'video-file-import'
+  | 'video-import'
+  | 'video-live-ending'
+  | 'video-redundancy'
   | 'video-studio-edition'
+  | 'video-transcoding'
+  | 'videos-views-stats'
 
 export interface Job {
-  id: number
-  state: JobState
+  id: number | string
+  state: JobState | 'unknown'
   type: JobType
   data: any
   priority: number
@@ -36,6 +42,10 @@ export interface Job {
   createdAt: Date | string
   finishedOn: Date | string
   processedOn: Date | string
+
+  parent?: {
+    id: string
+  }
 }
 
 export type ActivitypubHttpBroadcastPayload = {
@@ -79,20 +89,32 @@ export type VideoFileImportPayload = {
   filePath: string
 }
 
+// ---------------------------------------------------------------------------
+
 export type VideoImportTorrentPayloadType = 'magnet-uri' | 'torrent-file'
 export type VideoImportYoutubeDLPayloadType = 'youtube-dl'
 
-export type VideoImportYoutubeDLPayload = {
+export interface VideoImportYoutubeDLPayload {
   type: VideoImportYoutubeDLPayloadType
   videoImportId: number
 
   fileExt?: string
 }
-export type VideoImportTorrentPayload = {
+
+export interface VideoImportTorrentPayload {
   type: VideoImportTorrentPayloadType
   videoImportId: number
 }
-export type VideoImportPayload = VideoImportYoutubeDLPayload | VideoImportTorrentPayload
+
+export type VideoImportPayload = (VideoImportYoutubeDLPayload | VideoImportTorrentPayload) & {
+  preventException: boolean
+}
+
+export interface VideoImportPreventExceptionResult {
+  resultType: 'success' | 'error'
+}
+
+// ---------------------------------------------------------------------------
 
 export type VideoRedundancyPayload = {
   videoId: number
@@ -122,33 +144,28 @@ interface BaseTranscodingPayload {
 export interface HLSTranscodingPayload extends BaseTranscodingPayload {
   type: 'new-resolution-to-hls'
   resolution: VideoResolution
+  fps: number
   copyCodecs: boolean
 
-  hasAudio: boolean
-  isPortraitMode?: boolean
-
-  autoDeleteWebTorrentIfNeeded: boolean
-  isMaxQuality: boolean
+  deleteWebTorrentFiles: boolean
 }
 
 export interface NewWebTorrentResolutionTranscodingPayload extends BaseTranscodingPayload {
   type: 'new-resolution-to-webtorrent'
   resolution: VideoResolution
-
-  hasAudio: boolean
-  createHLSIfNeeded: boolean
-
-  isPortraitMode?: boolean
+  fps: number
 }
 
 export interface MergeAudioTranscodingPayload extends BaseTranscodingPayload {
   type: 'merge-audio-to-webtorrent'
   resolution: VideoResolution
-  createHLSIfNeeded: true
+  fps: number
 }
 
 export interface OptimizeTranscodingPayload extends BaseTranscodingPayload {
   type: 'optimize-to-webtorrent'
+
+  quickTranscode: boolean
 }
 
 export type VideoTranscodingPayload =
@@ -216,3 +233,55 @@ export interface VideoStudioEditionPayload {
   videoUUID: string
   tasks: VideoStudioTaskPayload[]
 }
+
+// ---------------------------------------------------------------------------
+
+export interface VideoChannelImportPayload {
+  externalChannelUrl: string
+  videoChannelId: number
+
+  partOfChannelSyncId?: number
+}
+
+export interface AfterVideoChannelImportPayload {
+  channelSyncId: number
+}
+
+// ---------------------------------------------------------------------------
+
+export type NotifyPayload =
+  {
+    action: 'new-video'
+    videoUUID: string
+  }
+
+// ---------------------------------------------------------------------------
+
+export interface FederateVideoPayload {
+  videoUUID: string
+  isNewVideo: boolean
+}
+
+// ---------------------------------------------------------------------------
+
+export interface TranscodingJobBuilderPayload {
+  videoUUID: string
+
+  optimizeJob?: {
+    isNewVideo: boolean
+  }
+
+  // Array of jobs to create
+  jobs?: {
+    type: 'video-transcoding'
+    payload: VideoTranscodingPayload
+    priority?: number
+  }[]
+
+  // Array of sequential jobs to create
+  sequentialJobs?: {
+    type: 'video-transcoding'
+    payload: VideoTranscodingPayload
+    priority?: number
+  }[][]
+}