diff options
Diffstat (limited to 'server')
-rw-r--r-- | server/controllers/api/videos/index.ts | 2 | ||||
-rw-r--r-- | server/controllers/lazy-static.ts | 1 | ||||
-rw-r--r-- | server/helpers/webtorrent.ts | 9 | ||||
-rw-r--r-- | server/lib/activitypub/videos.ts | 2 | ||||
-rw-r--r-- | server/lib/job-queue/handlers/video-file-import.ts | 2 | ||||
-rw-r--r-- | server/lib/job-queue/handlers/video-import.ts | 2 | ||||
-rw-r--r-- | server/lib/video-transcoding.ts | 4 | ||||
-rw-r--r-- | server/models/video/thumbnail.ts | 4 | ||||
-rw-r--r-- | server/models/video/video-caption.ts | 4 | ||||
-rw-r--r-- | server/models/video/video-file.ts | 4 | ||||
-rw-r--r-- | server/models/video/video-format-utils.ts | 6 |
11 files changed, 21 insertions, 19 deletions
diff --git a/server/controllers/api/videos/index.ts b/server/controllers/api/videos/index.ts index dcd6194ae..e89315930 100644 --- a/server/controllers/api/videos/index.ts +++ b/server/controllers/api/videos/index.ts | |||
@@ -222,7 +222,7 @@ async function addVideo (req: express.Request, res: express.Response) { | |||
222 | }) | 222 | }) |
223 | 223 | ||
224 | // Create the torrent file | 224 | // Create the torrent file |
225 | await createTorrentAndSetInfoHash(video, video, videoFile) | 225 | await createTorrentAndSetInfoHash(video, videoFile) |
226 | 226 | ||
227 | const { videoCreated } = await sequelizeTypescript.transaction(async t => { | 227 | const { videoCreated } = await sequelizeTypescript.transaction(async t => { |
228 | const sequelizeOptions = { transaction: t } | 228 | const sequelizeOptions = { transaction: t } |
diff --git a/server/controllers/lazy-static.ts b/server/controllers/lazy-static.ts index c2f5c7b56..4e553479b 100644 --- a/server/controllers/lazy-static.ts +++ b/server/controllers/lazy-static.ts | |||
@@ -94,5 +94,6 @@ async function getTorrent (req: express.Request, res: express.Response) { | |||
94 | const result = await VideosTorrentCache.Instance.getFilePath(req.params.filename) | 94 | const result = await VideosTorrentCache.Instance.getFilePath(req.params.filename) |
95 | if (!result) return res.sendStatus(HttpStatusCode.NOT_FOUND_404) | 95 | if (!result) return res.sendStatus(HttpStatusCode.NOT_FOUND_404) |
96 | 96 | ||
97 | // Torrents still use the old naming convention (video uuid + .torrent) | ||
97 | return res.sendFile(result.path, { maxAge: STATIC_MAX_AGE.SERVER }) | 98 | return res.sendFile(result.path, { maxAge: STATIC_MAX_AGE.SERVER }) |
98 | } | 99 | } |
diff --git a/server/helpers/webtorrent.ts b/server/helpers/webtorrent.ts index 4e08c27c6..d8220ba9c 100644 --- a/server/helpers/webtorrent.ts +++ b/server/helpers/webtorrent.ts | |||
@@ -7,13 +7,14 @@ import * as WebTorrent from 'webtorrent' | |||
7 | import { isArray } from '@server/helpers/custom-validators/misc' | 7 | import { isArray } from '@server/helpers/custom-validators/misc' |
8 | import { WEBSERVER } from '@server/initializers/constants' | 8 | import { WEBSERVER } from '@server/initializers/constants' |
9 | import { generateTorrentFileName, getVideoFilePath } from '@server/lib/video-paths' | 9 | import { generateTorrentFileName, getVideoFilePath } from '@server/lib/video-paths' |
10 | import { MVideo, MVideoWithHost } from '@server/types/models/video/video' | 10 | import { MVideo } from '@server/types/models/video/video' |
11 | import { MVideoFile, MVideoFileRedundanciesOpt } from '@server/types/models/video/video-file' | 11 | import { MVideoFile, MVideoFileRedundanciesOpt } from '@server/types/models/video/video-file' |
12 | import { MStreamingPlaylistVideo } from '@server/types/models/video/video-streaming-playlist' | 12 | import { MStreamingPlaylistVideo } from '@server/types/models/video/video-streaming-playlist' |
13 | import { CONFIG } from '../initializers/config' | 13 | import { CONFIG } from '../initializers/config' |
14 | import { promisify2 } from './core-utils' | 14 | import { promisify2 } from './core-utils' |
15 | import { logger } from './logger' | 15 | import { logger } from './logger' |
16 | import { generateVideoImportTmpPath } from './utils' | 16 | import { generateVideoImportTmpPath } from './utils' |
17 | import { extractVideo } from './video' | ||
17 | 18 | ||
18 | const createTorrentPromise = promisify2<string, any, any>(createTorrent) | 19 | const createTorrentPromise = promisify2<string, any, any>(createTorrent) |
19 | 20 | ||
@@ -77,12 +78,12 @@ async function downloadWebTorrentVideo (target: { magnetUri: string, torrentName | |||
77 | }) | 78 | }) |
78 | } | 79 | } |
79 | 80 | ||
80 | // FIXME: refactor/merge videoOrPlaylist and video arguments | ||
81 | async function createTorrentAndSetInfoHash ( | 81 | async function createTorrentAndSetInfoHash ( |
82 | videoOrPlaylist: MVideo | MStreamingPlaylistVideo, | 82 | videoOrPlaylist: MVideo | MStreamingPlaylistVideo, |
83 | video: MVideoWithHost, | ||
84 | videoFile: MVideoFile | 83 | videoFile: MVideoFile |
85 | ) { | 84 | ) { |
85 | const video = extractVideo(videoOrPlaylist) | ||
86 | |||
86 | const options = { | 87 | const options = { |
87 | // Keep the extname, it's used by the client to stream the file inside a web browser | 88 | // Keep the extname, it's used by the client to stream the file inside a web browser |
88 | name: `${video.name} ${videoFile.resolution}p${videoFile.extname}`, | 89 | name: `${video.name} ${videoFile.resolution}p${videoFile.extname}`, |
@@ -108,7 +109,7 @@ async function createTorrentAndSetInfoHash ( | |||
108 | } | 109 | } |
109 | 110 | ||
110 | function generateMagnetUri ( | 111 | function generateMagnetUri ( |
111 | video: MVideoWithHost, | 112 | video: MVideo, |
112 | videoFile: MVideoFileRedundanciesOpt, | 113 | videoFile: MVideoFileRedundanciesOpt, |
113 | trackerUrls: string[] | 114 | trackerUrls: string[] |
114 | ) { | 115 | ) { |
diff --git a/server/lib/activitypub/videos.ts b/server/lib/activitypub/videos.ts index 66330a964..c38edad56 100644 --- a/server/lib/activitypub/videos.ts +++ b/server/lib/activitypub/videos.ts | |||
@@ -912,7 +912,7 @@ function getTrackerUrls (object: VideoObject, video: MVideoWithHost) { | |||
912 | 912 | ||
913 | const trackers = object.url.filter(u => isAPVideoTrackerUrlObject(u)) | 913 | const trackers = object.url.filter(u => isAPVideoTrackerUrlObject(u)) |
914 | .map((u: ActivityTrackerUrlObject) => { | 914 | .map((u: ActivityTrackerUrlObject) => { |
915 | if (u.rel.includes('websocket')) wsFound = true | 915 | if (isArray(u.rel) && u.rel.includes('websocket')) wsFound = true |
916 | 916 | ||
917 | return u.href | 917 | return u.href |
918 | }) | 918 | }) |
diff --git a/server/lib/job-queue/handlers/video-file-import.ts b/server/lib/job-queue/handlers/video-file-import.ts index 839916306..71f2cafcd 100644 --- a/server/lib/job-queue/handlers/video-file-import.ts +++ b/server/lib/job-queue/handlers/video-file-import.ts | |||
@@ -82,7 +82,7 @@ async function updateVideoFile (video: MVideoFullLight, inputFilePath: string) { | |||
82 | await copy(inputFilePath, outputPath) | 82 | await copy(inputFilePath, outputPath) |
83 | 83 | ||
84 | video.VideoFiles.push(newVideoFile) | 84 | video.VideoFiles.push(newVideoFile) |
85 | await createTorrentAndSetInfoHash(video, video, newVideoFile) | 85 | await createTorrentAndSetInfoHash(video, newVideoFile) |
86 | 86 | ||
87 | await newVideoFile.save() | 87 | await newVideoFile.save() |
88 | } | 88 | } |
diff --git a/server/lib/job-queue/handlers/video-import.ts b/server/lib/job-queue/handlers/video-import.ts index 8fa024105..ed2c5eac0 100644 --- a/server/lib/job-queue/handlers/video-import.ts +++ b/server/lib/job-queue/handlers/video-import.ts | |||
@@ -185,7 +185,7 @@ async function processFile (downloader: () => Promise<string>, videoImport: MVid | |||
185 | } | 185 | } |
186 | 186 | ||
187 | // Create torrent | 187 | // Create torrent |
188 | await createTorrentAndSetInfoHash(videoImportWithFiles.Video, videoImportWithFiles.Video, videoFile) | 188 | await createTorrentAndSetInfoHash(videoImportWithFiles.Video, videoFile) |
189 | 189 | ||
190 | const videoFileSave = videoFile.toJSON() | 190 | const videoFileSave = videoFile.toJSON() |
191 | 191 | ||
diff --git a/server/lib/video-transcoding.ts b/server/lib/video-transcoding.ts index e3cd18e25..c949dca2e 100644 --- a/server/lib/video-transcoding.ts +++ b/server/lib/video-transcoding.ts | |||
@@ -254,7 +254,7 @@ async function onWebTorrentVideoFileTranscoding ( | |||
254 | videoFile.fps = fps | 254 | videoFile.fps = fps |
255 | videoFile.metadata = metadata | 255 | videoFile.metadata = metadata |
256 | 256 | ||
257 | await createTorrentAndSetInfoHash(video, video, videoFile) | 257 | await createTorrentAndSetInfoHash(video, videoFile) |
258 | 258 | ||
259 | await VideoFileModel.customUpsert(videoFile, 'video', undefined) | 259 | await VideoFileModel.customUpsert(videoFile, 'video', undefined) |
260 | video.VideoFiles = await video.$get('VideoFiles') | 260 | video.VideoFiles = await video.$get('VideoFiles') |
@@ -350,7 +350,7 @@ async function generateHlsPlaylistCommon (options: { | |||
350 | newVideoFile.fps = await getVideoFileFPS(videoFilePath) | 350 | newVideoFile.fps = await getVideoFileFPS(videoFilePath) |
351 | newVideoFile.metadata = await getMetadataFromFile(videoFilePath) | 351 | newVideoFile.metadata = await getMetadataFromFile(videoFilePath) |
352 | 352 | ||
353 | await createTorrentAndSetInfoHash(videoStreamingPlaylist, video, newVideoFile) | 353 | await createTorrentAndSetInfoHash(videoStreamingPlaylist, newVideoFile) |
354 | 354 | ||
355 | await VideoFileModel.customUpsert(newVideoFile, 'streaming-playlist', undefined) | 355 | await VideoFileModel.customUpsert(newVideoFile, 'streaming-playlist', undefined) |
356 | videoStreamingPlaylist.VideoFiles = await videoStreamingPlaylist.$get('VideoFiles') | 356 | videoStreamingPlaylist.VideoFiles = await videoStreamingPlaylist.$get('VideoFiles') |
diff --git a/server/models/video/thumbnail.ts b/server/models/video/thumbnail.ts index 319e1175a..f1187c8d6 100644 --- a/server/models/video/thumbnail.ts +++ b/server/models/video/thumbnail.ts | |||
@@ -16,7 +16,7 @@ import { | |||
16 | UpdatedAt | 16 | UpdatedAt |
17 | } from 'sequelize-typescript' | 17 | } from 'sequelize-typescript' |
18 | import { afterCommitIfTransaction } from '@server/helpers/database-utils' | 18 | import { afterCommitIfTransaction } from '@server/helpers/database-utils' |
19 | import { MThumbnail, MThumbnailVideo, MVideoWithHost } from '@server/types/models' | 19 | import { MThumbnail, MThumbnailVideo, MVideo } from '@server/types/models' |
20 | import { ThumbnailType } from '../../../shared/models/videos/thumbnail.type' | 20 | import { ThumbnailType } from '../../../shared/models/videos/thumbnail.type' |
21 | import { logger } from '../../helpers/logger' | 21 | import { logger } from '../../helpers/logger' |
22 | import { CONFIG } from '../../initializers/config' | 22 | import { CONFIG } from '../../initializers/config' |
@@ -163,7 +163,7 @@ export class ThumbnailModel extends Model { | |||
163 | return join(directory, filename) | 163 | return join(directory, filename) |
164 | } | 164 | } |
165 | 165 | ||
166 | getFileUrl (video: MVideoWithHost) { | 166 | getFileUrl (video: MVideo) { |
167 | const staticPath = ThumbnailModel.types[this.type].staticPath + this.filename | 167 | const staticPath = ThumbnailModel.types[this.type].staticPath + this.filename |
168 | 168 | ||
169 | if (video.isOwned()) return WEBSERVER.URL + staticPath | 169 | if (video.isOwned()) return WEBSERVER.URL + staticPath |
diff --git a/server/models/video/video-caption.ts b/server/models/video/video-caption.ts index 0bbe9b752..bfdec73e9 100644 --- a/server/models/video/video-caption.ts +++ b/server/models/video/video-caption.ts | |||
@@ -16,7 +16,7 @@ import { | |||
16 | UpdatedAt | 16 | UpdatedAt |
17 | } from 'sequelize-typescript' | 17 | } from 'sequelize-typescript' |
18 | import { v4 as uuidv4 } from 'uuid' | 18 | import { v4 as uuidv4 } from 'uuid' |
19 | import { MVideoCaption, MVideoCaptionFormattable, MVideoCaptionVideo, MVideoWithHost } from '@server/types/models' | 19 | import { MVideo, MVideoCaption, MVideoCaptionFormattable, MVideoCaptionVideo } from '@server/types/models' |
20 | import { VideoCaption } from '../../../shared/models/videos/caption/video-caption.model' | 20 | import { VideoCaption } from '../../../shared/models/videos/caption/video-caption.model' |
21 | import { isVideoCaptionLanguageValid } from '../../helpers/custom-validators/video-captions' | 21 | import { isVideoCaptionLanguageValid } from '../../helpers/custom-validators/video-captions' |
22 | import { logger } from '../../helpers/logger' | 22 | import { logger } from '../../helpers/logger' |
@@ -203,7 +203,7 @@ export class VideoCaptionModel extends Model { | |||
203 | return remove(CONFIG.STORAGE.CAPTIONS_DIR + this.filename) | 203 | return remove(CONFIG.STORAGE.CAPTIONS_DIR + this.filename) |
204 | } | 204 | } |
205 | 205 | ||
206 | getFileUrl (video: MVideoWithHost) { | 206 | getFileUrl (video: MVideo) { |
207 | if (!this.Video) this.Video = video as VideoModel | 207 | if (!this.Video) this.Video = video as VideoModel |
208 | 208 | ||
209 | if (video.isOwned()) return WEBSERVER.URL + this.getCaptionStaticPath() | 209 | if (video.isOwned()) return WEBSERVER.URL + this.getCaptionStaticPath() |
diff --git a/server/models/video/video-file.ts b/server/models/video/video-file.ts index 5a3706259..4df2c20bc 100644 --- a/server/models/video/video-file.ts +++ b/server/models/video/video-file.ts | |||
@@ -423,7 +423,7 @@ export class VideoFileModel extends Model { | |||
423 | return !!this.videoStreamingPlaylistId | 423 | return !!this.videoStreamingPlaylistId |
424 | } | 424 | } |
425 | 425 | ||
426 | getFileUrl (video: MVideoWithHost) { | 426 | getFileUrl (video: MVideo) { |
427 | if (!this.Video) this.Video = video as VideoModel | 427 | if (!this.Video) this.Video = video as VideoModel |
428 | 428 | ||
429 | if (video.isOwned()) return WEBSERVER.URL + this.getFileStaticPath(video) | 429 | if (video.isOwned()) return WEBSERVER.URL + this.getFileStaticPath(video) |
@@ -449,7 +449,7 @@ export class VideoFileModel extends Model { | |||
449 | return buildRemoteVideoBaseUrl(video, path) | 449 | return buildRemoteVideoBaseUrl(video, path) |
450 | } | 450 | } |
451 | 451 | ||
452 | getRemoteTorrentUrl (video: MVideoWithHost) { | 452 | getRemoteTorrentUrl (video: MVideo) { |
453 | if (video.isOwned()) throw new Error(`Video ${video.url} is not a remote video`) | 453 | if (video.isOwned()) throw new Error(`Video ${video.url} is not a remote video`) |
454 | 454 | ||
455 | return this.torrentUrl | 455 | return this.torrentUrl |
diff --git a/server/models/video/video-format-utils.ts b/server/models/video/video-format-utils.ts index 455597d22..a6a1a4f0d 100644 --- a/server/models/video/video-format-utils.ts +++ b/server/models/video/video-format-utils.ts | |||
@@ -14,11 +14,11 @@ import { | |||
14 | } from '../../lib/activitypub/url' | 14 | } from '../../lib/activitypub/url' |
15 | import { | 15 | import { |
16 | MStreamingPlaylistRedundanciesOpt, | 16 | MStreamingPlaylistRedundanciesOpt, |
17 | MVideo, | ||
17 | MVideoAP, | 18 | MVideoAP, |
18 | MVideoFile, | 19 | MVideoFile, |
19 | MVideoFormattable, | 20 | MVideoFormattable, |
20 | MVideoFormattableDetails, | 21 | MVideoFormattableDetails |
21 | MVideoWithHost | ||
22 | } from '../../types/models' | 22 | } from '../../types/models' |
23 | import { MVideoFileRedundanciesOpt } from '../../types/models/video/video-file' | 23 | import { MVideoFileRedundanciesOpt } from '../../types/models/video/video-file' |
24 | import { VideoModel } from './video' | 24 | import { VideoModel } from './video' |
@@ -225,7 +225,7 @@ function videoFilesModelToFormattedJSON ( | |||
225 | 225 | ||
226 | function addVideoFilesInAPAcc ( | 226 | function addVideoFilesInAPAcc ( |
227 | acc: ActivityUrlObject[] | ActivityTagObject[], | 227 | acc: ActivityUrlObject[] | ActivityTagObject[], |
228 | video: MVideoWithHost, | 228 | video: MVideo, |
229 | files: MVideoFile[] | 229 | files: MVideoFile[] |
230 | ) { | 230 | ) { |
231 | const trackerUrls = video.getTrackerUrls() | 231 | const trackerUrls = video.getTrackerUrls() |