diff options
author | Chocobozzz <me@florianbigard.com> | 2022-10-12 16:09:02 +0200 |
---|---|---|
committer | Chocobozzz <chocobozzz@cpy.re> | 2022-10-24 14:48:24 +0200 |
commit | 3545e72c686ff1725bbdfd8d16d693e2f4aa75a3 (patch) | |
tree | e7f1d12ef5dae1e1142c3a8d0b681c1dbbb0de10 /client/src/assets/player/shared/webtorrent | |
parent | 38a3ccc7f8ad0ea94362b58c732af7c387ab46be (diff) | |
download | PeerTube-3545e72c686ff1725bbdfd8d16d693e2f4aa75a3.tar.gz PeerTube-3545e72c686ff1725bbdfd8d16d693e2f4aa75a3.tar.zst PeerTube-3545e72c686ff1725bbdfd8d16d693e2f4aa75a3.zip |
Put private videos under a specific subdirectory
Diffstat (limited to 'client/src/assets/player/shared/webtorrent')
-rw-r--r-- | client/src/assets/player/shared/webtorrent/webtorrent-plugin.ts | 22 |
1 files changed, 19 insertions, 3 deletions
diff --git a/client/src/assets/player/shared/webtorrent/webtorrent-plugin.ts b/client/src/assets/player/shared/webtorrent/webtorrent-plugin.ts index fa3f48a9a..658b7c867 100644 --- a/client/src/assets/player/shared/webtorrent/webtorrent-plugin.ts +++ b/client/src/assets/player/shared/webtorrent/webtorrent-plugin.ts | |||
@@ -2,7 +2,7 @@ import videojs from 'video.js' | |||
2 | import * as WebTorrent from 'webtorrent' | 2 | import * as WebTorrent from 'webtorrent' |
3 | import { logger } from '@root-helpers/logger' | 3 | import { logger } from '@root-helpers/logger' |
4 | import { isIOS } from '@root-helpers/web-browser' | 4 | import { isIOS } from '@root-helpers/web-browser' |
5 | import { timeToInt } from '@shared/core-utils' | 5 | import { addQueryParams, timeToInt } from '@shared/core-utils' |
6 | import { VideoFile } from '@shared/models' | 6 | import { VideoFile } from '@shared/models' |
7 | import { getAverageBandwidthInStore, getStoredMute, getStoredVolume, saveAverageBandwidth } from '../../peertube-player-local-storage' | 7 | import { getAverageBandwidthInStore, getStoredMute, getStoredVolume, saveAverageBandwidth } from '../../peertube-player-local-storage' |
8 | import { PeerTubeResolution, PlayerNetworkInfo, WebtorrentPluginOptions } from '../../types' | 8 | import { PeerTubeResolution, PlayerNetworkInfo, WebtorrentPluginOptions } from '../../types' |
@@ -38,6 +38,8 @@ class WebTorrentPlugin extends Plugin { | |||
38 | BANDWIDTH_AVERAGE_NUMBER_OF_VALUES: 5 // Last 5 seconds to build average bandwidth | 38 | BANDWIDTH_AVERAGE_NUMBER_OF_VALUES: 5 // Last 5 seconds to build average bandwidth |
39 | } | 39 | } |
40 | 40 | ||
41 | private readonly buildWebSeedUrls: (file: VideoFile) => string[] | ||
42 | |||
41 | private readonly webtorrent = new WebTorrent({ | 43 | private readonly webtorrent = new WebTorrent({ |
42 | tracker: { | 44 | tracker: { |
43 | rtcConfig: getRtcConfig() | 45 | rtcConfig: getRtcConfig() |
@@ -57,6 +59,9 @@ class WebTorrentPlugin extends Plugin { | |||
57 | private isAutoResolutionObservation = false | 59 | private isAutoResolutionObservation = false |
58 | private playerRefusedP2P = false | 60 | private playerRefusedP2P = false |
59 | 61 | ||
62 | private requiresAuth: boolean | ||
63 | private videoFileToken: () => string | ||
64 | |||
60 | private torrentInfoInterval: any | 65 | private torrentInfoInterval: any |
61 | private autoQualityInterval: any | 66 | private autoQualityInterval: any |
62 | private addTorrentDelay: any | 67 | private addTorrentDelay: any |
@@ -81,6 +86,11 @@ class WebTorrentPlugin extends Plugin { | |||
81 | this.savePlayerSrcFunction = this.player.src | 86 | this.savePlayerSrcFunction = this.player.src |
82 | this.playerElement = options.playerElement | 87 | this.playerElement = options.playerElement |
83 | 88 | ||
89 | this.requiresAuth = options.requiresAuth | ||
90 | this.videoFileToken = options.videoFileToken | ||
91 | |||
92 | this.buildWebSeedUrls = options.buildWebSeedUrls | ||
93 | |||
84 | this.player.ready(() => { | 94 | this.player.ready(() => { |
85 | const playerOptions = this.player.options_ | 95 | const playerOptions = this.player.options_ |
86 | 96 | ||
@@ -268,7 +278,8 @@ class WebTorrentPlugin extends Plugin { | |||
268 | return new CacheChunkStore(new PeertubeChunkStore(chunkLength, storeOpts), { | 278 | return new CacheChunkStore(new PeertubeChunkStore(chunkLength, storeOpts), { |
269 | max: 100 | 279 | max: 100 |
270 | }) | 280 | }) |
271 | } | 281 | }, |
282 | urlList: this.buildWebSeedUrls(this.currentVideoFile) | ||
272 | } | 283 | } |
273 | 284 | ||
274 | this.torrent = this.webtorrent.add(magnetOrTorrentUrl, torrentOptions, torrent => { | 285 | this.torrent = this.webtorrent.add(magnetOrTorrentUrl, torrentOptions, torrent => { |
@@ -533,7 +544,12 @@ class WebTorrentPlugin extends Plugin { | |||
533 | // Enable error display now this is our last fallback | 544 | // Enable error display now this is our last fallback |
534 | this.player.one('error', () => this.player.peertube().displayFatalError()) | 545 | this.player.one('error', () => this.player.peertube().displayFatalError()) |
535 | 546 | ||
536 | const httpUrl = this.currentVideoFile.fileUrl | 547 | let httpUrl = this.currentVideoFile.fileUrl |
548 | |||
549 | if (this.requiresAuth && this.videoFileToken) { | ||
550 | httpUrl = addQueryParams(httpUrl, { videoFileToken: this.videoFileToken() }) | ||
551 | } | ||
552 | |||
537 | this.player.src = this.savePlayerSrcFunction | 553 | this.player.src = this.savePlayerSrcFunction |
538 | this.player.src(httpUrl) | 554 | this.player.src(httpUrl) |
539 | 555 | ||