]> git.immae.eu Git - github/Chocobozzz/PeerTube.git/blobdiff - shared/models/videos/video.model.ts
Fix broken playlist api
[github/Chocobozzz/PeerTube.git] / shared / models / videos / video.model.ts
index 1b5f1a09c685e3ee2aa164a517f1b5843bbe76d1..e057b3e0699177aa49e50ff46ac1db5eb361e9b5 100644 (file)
@@ -1,20 +1,20 @@
-import { VideoResolution } from '../../index'
+import { AccountSummary, VideoChannelSummary, VideoResolution, VideoState } from '../../index'
 import { Account } from '../actors'
-import { Avatar } from '../avatars/avatar.model'
-import { VideoChannel } from './video-channel.model'
+import { VideoChannel } from './channel/video-channel.model'
 import { VideoPrivacy } from './video-privacy.enum'
-
-export interface VideoConstant <T> {
-  id: number
-  label: string
-}
+import { VideoScheduleUpdate } from './video-schedule-update.model'
+import { VideoConstant } from './video-constant.model'
+import { VideoStreamingPlaylist } from './video-streaming-playlist.model'
 
 export interface VideoFile {
   magnetUri: string
   resolution: VideoConstant<VideoResolution>
   size: number // Bytes
   torrentUrl: string
+  torrentDownloadUrl: string
   fileUrl: string
+  fileDownloadUrl: string
+  fps: number
 }
 
 export interface Video {
@@ -23,9 +23,11 @@ export interface Video {
   createdAt: Date | string
   updatedAt: Date | string
   publishedAt: Date | string
+  originallyPublishedAt: Date | string
   category: VideoConstant<number>
   licence: VideoConstant<number>
-  language: VideoConstant<number>
+  language: VideoConstant<string>
+  privacy: VideoConstant<VideoPrivacy>
   description: string
   duration: number
   isLocal: boolean
@@ -38,22 +40,36 @@ export interface Video {
   dislikes: number
   nsfw: boolean
 
-  account: {
-    name: string
-    displayName: string
-    url: string
-    host: string
-    avatar: Avatar
+  waitTranscoding?: boolean
+  state?: VideoConstant<VideoState>
+  scheduledUpdate?: VideoScheduleUpdate
+
+  blacklisted?: boolean
+  blacklistedReason?: string
+
+  account: AccountSummary
+  channel: VideoChannelSummary
+
+  userHistory?: {
+    currentTime: number
   }
 }
 
 export interface VideoDetails extends Video {
-  privacy: VideoConstant<VideoPrivacy>
   descriptionPath: string
   support: string
   channel: VideoChannel
+  account: Account
   tags: string[]
   files: VideoFile[]
-  account: Account
   commentsEnabled: boolean
+  downloadEnabled: boolean
+
+  // Not optional in details (unlike in Video)
+  waitTranscoding: boolean
+  state: VideoConstant<VideoState>
+
+  trackerUrls: string[]
+
+  streamingPlaylists: VideoStreamingPlaylist[]
 }