]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - shared/models/videos/video.model.ts
Fix plugin settings manager definition
[github/Chocobozzz/PeerTube.git] / shared / models / videos / video.model.ts
index f7bbaac76bd13d7b0e6fcddde2e0eadea5b05dcb..f98eed012f2b3c22146e977beda7d80114e24f38 100644 (file)
@@ -1,28 +1,21 @@
-import { VideoResolution, VideoState } from '../../index'
-import { Account } from '../actors'
-import { Avatar } from '../avatars/avatar.model'
-import { VideoChannel } from './video-channel.model'
+import { Account, AccountSummary } from '../actors'
+import { VideoChannel, VideoChannelSummary } from './channel/video-channel.model'
+import { VideoFile } from './file'
+import { VideoConstant } from './video-constant.model'
 import { VideoPrivacy } from './video-privacy.enum'
 import { VideoScheduleUpdate } from './video-schedule-update.model'
-import { VideoConstant } from './video-constant.model'
-
-export interface VideoFile {
-  magnetUri: string
-  resolution: VideoConstant<VideoResolution>
-  size: number // Bytes
-  torrentUrl: string
-  torrentDownloadUrl: string
-  fileUrl: string
-  fileDownloadUrl: string
-  fps: number
-}
+import { VideoState } from './video-state.enum'
+import { VideoStreamingPlaylist } from './video-streaming-playlist.model'
 
 export interface Video {
   id: number
   uuid: string
+  shortUUID: string
+
   createdAt: Date | string
   updatedAt: Date | string
   publishedAt: Date | string
+  originallyPublishedAt: Date | string
   category: VideoConstant<number>
   licence: VideoConstant<number>
   language: VideoConstant<string>
@@ -31,49 +24,67 @@ export interface Video {
   duration: number
   isLocal: boolean
   name: string
+
+  isLive: boolean
+
   thumbnailPath: string
+  thumbnailUrl?: string
+
   previewPath: string
+  previewUrl?: string
+
   embedPath: string
+  embedUrl?: string
+
+  url: string
+
   views: number
+  // If live
+  viewers?: number
+
   likes: number
   dislikes: number
   nsfw: boolean
 
+  account: AccountSummary
+  channel: VideoChannelSummary
+
+  userHistory?: {
+    currentTime: number
+  }
+
+  pluginData?: any
+
+  // Additional attributes dependending on the query
   waitTranscoding?: boolean
   state?: VideoConstant<VideoState>
   scheduledUpdate?: VideoScheduleUpdate
 
-  account: {
-    id: number
-    uuid: string
-    name: string
-    displayName: string
-    url: string
-    host: string
-    avatar: Avatar
-  }
+  blacklisted?: boolean
+  blacklistedReason?: string
 
-  channel: {
-    id: number
-    uuid: string
-    name: string
-    displayName: string
-    url: string
-    host: string
-    avatar: Avatar
-  }
+  blockedOwner?: boolean
+  blockedServer?: boolean
+
+  files?: VideoFile[]
+  streamingPlaylists?: VideoStreamingPlaylist[]
 }
 
 export interface VideoDetails extends Video {
   descriptionPath: string
   support: string
   channel: VideoChannel
-  tags: string[]
-  files: VideoFile[]
   account: Account
+  tags: string[]
   commentsEnabled: boolean
+  downloadEnabled: boolean
 
-  // Not optional in details (unlike in Video)
+  // Not optional in details (unlike in parent Video)
   waitTranscoding: boolean
   state: VideoConstant<VideoState>
+
+  trackerUrls: string[]
+
+  files: VideoFile[]
+  streamingPlaylists: VideoStreamingPlaylist[]
 }