Add ability to disable webtorrent
[oweals/peertube.git] / shared / models / videos / video.model.ts
1 import { AccountSummary, VideoChannelSummary, VideoResolution, VideoState } from '../../index'
2 import { Account } from '../actors'
3 import { VideoChannel } from './channel/video-channel.model'
4 import { VideoPrivacy } from './video-privacy.enum'
5 import { VideoScheduleUpdate } from './video-schedule-update.model'
6 import { VideoConstant } from './video-constant.model'
7 import { VideoStreamingPlaylist } from './video-streaming-playlist.model'
8 import { VideoFile } from './video-file.model'
9
10 export interface Video {
11   id: number
12   uuid: string
13   createdAt: Date | string
14   updatedAt: Date | string
15   publishedAt: Date | string
16   originallyPublishedAt: Date | string
17   category: VideoConstant<number>
18   licence: VideoConstant<number>
19   language: VideoConstant<string>
20   privacy: VideoConstant<VideoPrivacy>
21   description: string
22   duration: number
23   isLocal: boolean
24   name: string
25   thumbnailPath: string
26   previewPath: string
27   embedPath: string
28   views: number
29   likes: number
30   dislikes: number
31   nsfw: boolean
32
33   waitTranscoding?: boolean
34   state?: VideoConstant<VideoState>
35   scheduledUpdate?: VideoScheduleUpdate
36
37   blacklisted?: boolean
38   blacklistedReason?: string
39
40   account: AccountSummary
41   channel: VideoChannelSummary
42
43   userHistory?: {
44     currentTime: number
45   }
46 }
47
48 export interface VideoDetails extends Video {
49   descriptionPath: string
50   support: string
51   channel: VideoChannel
52   account: Account
53   tags: string[]
54   files: VideoFile[]
55   commentsEnabled: boolean
56   downloadEnabled: boolean
57
58   // Not optional in details (unlike in Video)
59   waitTranscoding: boolean
60   state: VideoConstant<VideoState>
61
62   trackerUrls: string[]
63
64   streamingPlaylists: VideoStreamingPlaylist[]
65 }