aboutsummaryrefslogtreecommitdiffhomepage
path: root/shared/models
diff options
context:
space:
mode:
Diffstat (limited to 'shared/models')
-rw-r--r--shared/models/activitypub/activitypub-actor.ts7
-rw-r--r--shared/models/actors/account.model.ts7
-rw-r--r--shared/models/actors/actor-image.model.ts1
-rw-r--r--shared/models/actors/actor.model.ts6
-rw-r--r--shared/models/plugins/server/server-hook.model.ts5
-rw-r--r--shared/models/server/custom-config.model.ts4
-rw-r--r--shared/models/server/job.model.ts39
-rw-r--r--shared/models/server/server-config.model.ts4
-rw-r--r--shared/models/users/user-notification.model.ts11
-rw-r--r--shared/models/videos/channel/video-channel.model.ts13
-rw-r--r--shared/models/videos/editor/index.ts1
-rw-r--r--shared/models/videos/editor/video-editor-create-edit.model.ts42
-rw-r--r--shared/models/videos/index.ts1
-rw-r--r--shared/models/videos/transcoding/video-transcoding-fps.model.ts1
-rw-r--r--shared/models/videos/transcoding/video-transcoding.model.ts7
-rw-r--r--shared/models/videos/video-state.enum.ts3
16 files changed, 139 insertions, 13 deletions
diff --git a/shared/models/activitypub/activitypub-actor.ts b/shared/models/activitypub/activitypub-actor.ts
index 09d4f7402..efb6edec4 100644
--- a/shared/models/activitypub/activitypub-actor.ts
+++ b/shared/models/activitypub/activitypub-actor.ts
@@ -27,8 +27,11 @@ export interface ActivityPubActor {
27 publicKeyPem: string 27 publicKeyPem: string
28 } 28 }
29 29
30 icon?: ActivityIconObject 30 image?: ActivityIconObject | ActivityIconObject[]
31 image?: ActivityIconObject 31
32 icon?: ActivityIconObject | ActivityIconObject[]
33 // TODO: migrate to `icon`, introduced in 4.2
34 icons?: ActivityIconObject[]
32 35
33 published?: string 36 published?: string
34} 37}
diff --git a/shared/models/actors/account.model.ts b/shared/models/actors/account.model.ts
index f2138077e..60f4236d5 100644
--- a/shared/models/actors/account.model.ts
+++ b/shared/models/actors/account.model.ts
@@ -4,6 +4,7 @@ import { Actor } from './actor.model'
4export interface Account extends Actor { 4export interface Account extends Actor {
5 displayName: string 5 displayName: string
6 description: string 6 description: string
7 avatars: ActorImage[]
7 8
8 updatedAt: Date | string 9 updatedAt: Date | string
9 10
@@ -16,5 +17,9 @@ export interface AccountSummary {
16 displayName: string 17 displayName: string
17 url: string 18 url: string
18 host: string 19 host: string
19 avatar?: ActorImage 20
21 avatars: ActorImage[]
22
23 // TODO: remove, deprecated in 4.2
24 avatar: ActorImage
20} 25}
diff --git a/shared/models/actors/actor-image.model.ts b/shared/models/actors/actor-image.model.ts
index ad5eab627..cfe44ac15 100644
--- a/shared/models/actors/actor-image.model.ts
+++ b/shared/models/actors/actor-image.model.ts
@@ -1,4 +1,5 @@
1export interface ActorImage { 1export interface ActorImage {
2 width: number
2 path: string 3 path: string
3 4
4 url?: string 5 url?: string
diff --git a/shared/models/actors/actor.model.ts b/shared/models/actors/actor.model.ts
index fd0662331..bf86a917f 100644
--- a/shared/models/actors/actor.model.ts
+++ b/shared/models/actors/actor.model.ts
@@ -8,5 +8,9 @@ export interface Actor {
8 followingCount: number 8 followingCount: number
9 followersCount: number 9 followersCount: number
10 createdAt: Date | string 10 createdAt: Date | string
11 avatar?: ActorImage 11
12 avatars: ActorImage[]
13
14 // TODO: remove, deprecated in 4.2
15 avatar: ActorImage
12} 16}
diff --git a/shared/models/plugins/server/server-hook.model.ts b/shared/models/plugins/server/server-hook.model.ts
index bd2b27da5..e64c3bbbc 100644
--- a/shared/models/plugins/server/server-hook.model.ts
+++ b/shared/models/plugins/server/server-hook.model.ts
@@ -6,6 +6,11 @@ export const serverFilterHookObject = {
6 'filter:api.videos.list.params': true, 6 'filter:api.videos.list.params': true,
7 'filter:api.videos.list.result': true, 7 'filter:api.videos.list.result': true,
8 8
9 // Filter params/result used to list a video playlists videos
10 // for the REST API
11 'filter:api.video-playlist.videos.list.params': true,
12 'filter:api.video-playlist.videos.list.result': true,
13
9 // Filter params/result used to list account videos for the REST API 14 // Filter params/result used to list account videos for the REST API
10 'filter:api.accounts.videos.list.params': true, 15 'filter:api.accounts.videos.list.params': true,
11 'filter:api.accounts.videos.list.result': true, 16 'filter:api.accounts.videos.list.result': true,
diff --git a/shared/models/server/custom-config.model.ts b/shared/models/server/custom-config.model.ts
index 52d3d9588..c9e7654de 100644
--- a/shared/models/server/custom-config.model.ts
+++ b/shared/models/server/custom-config.model.ts
@@ -143,6 +143,10 @@ export interface CustomConfig {
143 } 143 }
144 } 144 }
145 145
146 videoEditor: {
147 enabled: boolean
148 }
149
146 import: { 150 import: {
147 videos: { 151 videos: {
148 concurrency: number 152 concurrency: number
diff --git a/shared/models/server/job.model.ts b/shared/models/server/job.model.ts
index 1519d1c3e..d0293f542 100644
--- a/shared/models/server/job.model.ts
+++ b/shared/models/server/job.model.ts
@@ -1,4 +1,5 @@
1import { ContextType } from '../activitypub/context' 1import { ContextType } from '../activitypub/context'
2import { VideoEditorTaskCut } from '../videos/editor'
2import { VideoResolution } from '../videos/file/video-resolution.enum' 3import { VideoResolution } from '../videos/file/video-resolution.enum'
3import { SendEmailOptions } from './emailer.model' 4import { SendEmailOptions } from './emailer.model'
4 5
@@ -20,6 +21,7 @@ export type JobType =
20 | 'video-live-ending' 21 | 'video-live-ending'
21 | 'actor-keys' 22 | 'actor-keys'
22 | 'move-to-object-storage' 23 | 'move-to-object-storage'
24 | 'video-edition'
23 25
24export interface Job { 26export interface Job {
25 id: number 27 id: number
@@ -155,3 +157,40 @@ export interface MoveObjectStoragePayload {
155 videoUUID: string 157 videoUUID: string
156 isNewVideo: boolean 158 isNewVideo: boolean
157} 159}
160
161export type VideoEditorTaskCutPayload = VideoEditorTaskCut
162
163export type VideoEditorTaskIntroPayload = {
164 name: 'add-intro'
165
166 options: {
167 file: string
168 }
169}
170
171export type VideoEditorTaskOutroPayload = {
172 name: 'add-outro'
173
174 options: {
175 file: string
176 }
177}
178
179export type VideoEditorTaskWatermarkPayload = {
180 name: 'add-watermark'
181
182 options: {
183 file: string
184 }
185}
186
187export type VideoEditionTaskPayload =
188 VideoEditorTaskCutPayload |
189 VideoEditorTaskIntroPayload |
190 VideoEditorTaskOutroPayload |
191 VideoEditorTaskWatermarkPayload
192
193export interface VideoEditionPayload {
194 videoUUID: string
195 tasks: VideoEditionTaskPayload[]
196}
diff --git a/shared/models/server/server-config.model.ts b/shared/models/server/server-config.model.ts
index 32be96b9d..0fe8b0de8 100644
--- a/shared/models/server/server-config.model.ts
+++ b/shared/models/server/server-config.model.ts
@@ -167,6 +167,10 @@ export interface ServerConfig {
167 } 167 }
168 } 168 }
169 169
170 videoEditor: {
171 enabled: boolean
172 }
173
170 import: { 174 import: {
171 videos: { 175 videos: {
172 http: { 176 http: {
diff --git a/shared/models/users/user-notification.model.ts b/shared/models/users/user-notification.model.ts
index 5820589fe..a2621fb5b 100644
--- a/shared/models/users/user-notification.model.ts
+++ b/shared/models/users/user-notification.model.ts
@@ -40,14 +40,19 @@ export interface VideoInfo {
40 name: string 40 name: string
41} 41}
42 42
43export interface AvatarInfo {
44 width: number
45 path: string
46}
47
43export interface ActorInfo { 48export interface ActorInfo {
44 id: number 49 id: number
45 displayName: string 50 displayName: string
46 name: string 51 name: string
47 host: string 52 host: string
48 avatar?: { 53
49 path: string 54 avatars: AvatarInfo[]
50 } 55 avatar: AvatarInfo
51} 56}
52 57
53export interface UserNotification { 58export interface UserNotification {
diff --git a/shared/models/videos/channel/video-channel.model.ts b/shared/models/videos/channel/video-channel.model.ts
index 5393f924d..58b60c177 100644
--- a/shared/models/videos/channel/video-channel.model.ts
+++ b/shared/models/videos/channel/video-channel.model.ts
@@ -1,5 +1,5 @@
1import { Actor } from '../../actors/actor.model'
2import { Account, ActorImage } from '../../actors' 1import { Account, ActorImage } from '../../actors'
2import { Actor } from '../../actors/actor.model'
3 3
4export type ViewsPerDate = { 4export type ViewsPerDate = {
5 date: Date 5 date: Date
@@ -19,7 +19,10 @@ export interface VideoChannel extends Actor {
19 videosCount?: number 19 videosCount?: number
20 viewsPerDay?: ViewsPerDate[] // chronologically ordered 20 viewsPerDay?: ViewsPerDate[] // chronologically ordered
21 21
22 banner?: ActorImage 22 banners: ActorImage[]
23
24 // TODO: remove, deprecated in 4.2
25 banner: ActorImage
23} 26}
24 27
25export interface VideoChannelSummary { 28export interface VideoChannelSummary {
@@ -28,5 +31,9 @@ export interface VideoChannelSummary {
28 displayName: string 31 displayName: string
29 url: string 32 url: string
30 host: string 33 host: string
31 avatar?: ActorImage 34
35 avatars: ActorImage[]
36
37 // TODO: remove, deprecated in 4.2
38 avatar: ActorImage
32} 39}
diff --git a/shared/models/videos/editor/index.ts b/shared/models/videos/editor/index.ts
new file mode 100644
index 000000000..3436f2c3f
--- /dev/null
+++ b/shared/models/videos/editor/index.ts
@@ -0,0 +1 @@
export * from './video-editor-create-edit.model'
diff --git a/shared/models/videos/editor/video-editor-create-edit.model.ts b/shared/models/videos/editor/video-editor-create-edit.model.ts
new file mode 100644
index 000000000..36b7c8d55
--- /dev/null
+++ b/shared/models/videos/editor/video-editor-create-edit.model.ts
@@ -0,0 +1,42 @@
1export interface VideoEditorCreateEdition {
2 tasks: VideoEditorTask[]
3}
4
5export type VideoEditorTask =
6 VideoEditorTaskCut |
7 VideoEditorTaskIntro |
8 VideoEditorTaskOutro |
9 VideoEditorTaskWatermark
10
11export interface VideoEditorTaskCut {
12 name: 'cut'
13
14 options: {
15 start?: number
16 end?: number
17 }
18}
19
20export interface VideoEditorTaskIntro {
21 name: 'add-intro'
22
23 options: {
24 file: Blob | string
25 }
26}
27
28export interface VideoEditorTaskOutro {
29 name: 'add-outro'
30
31 options: {
32 file: Blob | string
33 }
34}
35
36export interface VideoEditorTaskWatermark {
37 name: 'add-watermark'
38
39 options: {
40 file: Blob | string
41 }
42}
diff --git a/shared/models/videos/index.ts b/shared/models/videos/index.ts
index 67614efc9..e8eb227ab 100644
--- a/shared/models/videos/index.ts
+++ b/shared/models/videos/index.ts
@@ -3,6 +3,7 @@ export * from './caption'
3export * from './change-ownership' 3export * from './change-ownership'
4export * from './channel' 4export * from './channel'
5export * from './comment' 5export * from './comment'
6export * from './editor'
6export * from './live' 7export * from './live'
7export * from './file' 8export * from './file'
8export * from './import' 9export * from './import'
diff --git a/shared/models/videos/transcoding/video-transcoding-fps.model.ts b/shared/models/videos/transcoding/video-transcoding-fps.model.ts
index 25fc1c2da..9a330ac94 100644
--- a/shared/models/videos/transcoding/video-transcoding-fps.model.ts
+++ b/shared/models/videos/transcoding/video-transcoding-fps.model.ts
@@ -2,6 +2,7 @@ export type VideoTranscodingFPS = {
2 MIN: number 2 MIN: number
3 STANDARD: number[] 3 STANDARD: number[]
4 HD_STANDARD: number[] 4 HD_STANDARD: number[]
5 AUDIO_MERGE: number
5 AVERAGE: number 6 AVERAGE: number
6 MAX: number 7 MAX: number
7 KEEP_ORIGIN_FPS_RESOLUTION_MIN: number 8 KEEP_ORIGIN_FPS_RESOLUTION_MIN: number
diff --git a/shared/models/videos/transcoding/video-transcoding.model.ts b/shared/models/videos/transcoding/video-transcoding.model.ts
index 3a7fb6472..91eacf8dc 100644
--- a/shared/models/videos/transcoding/video-transcoding.model.ts
+++ b/shared/models/videos/transcoding/video-transcoding.model.ts
@@ -7,8 +7,11 @@ export type EncoderOptionsBuilderParams = {
7 7
8 resolution: VideoResolution 8 resolution: VideoResolution
9 9
10 // Could be null for "merge audio" transcoding 10 // If PeerTube applies a filter, transcoding profile must not copy input stream
11 fps?: number 11 canCopyAudio: boolean
12 canCopyVideo: boolean
13
14 fps: number
12 15
13 // Could be undefined if we could not get input bitrate (some RTMP streams for example) 16 // Could be undefined if we could not get input bitrate (some RTMP streams for example)
14 inputBitrate: number 17 inputBitrate: number
diff --git a/shared/models/videos/video-state.enum.ts b/shared/models/videos/video-state.enum.ts
index 09268d2ff..e45e4adc2 100644
--- a/shared/models/videos/video-state.enum.ts
+++ b/shared/models/videos/video-state.enum.ts
@@ -6,5 +6,6 @@ export const enum VideoState {
6 LIVE_ENDED = 5, 6 LIVE_ENDED = 5,
7 TO_MOVE_TO_EXTERNAL_STORAGE = 6, 7 TO_MOVE_TO_EXTERNAL_STORAGE = 6,
8 TRANSCODING_FAILED = 7, 8 TRANSCODING_FAILED = 7,
9 TO_MOVE_TO_EXTERNAL_STORAGE_FAILED = 8 9 TO_MOVE_TO_EXTERNAL_STORAGE_FAILED = 8,
10 TO_EDIT = 9
10} 11}