mirror of
https://github.com/Chocobozzz/PeerTube.git
synced 2025-10-06 03:50:26 +02:00
fixes video not played from defined parameters in embed service (#5023)
* fixes video not played from defined parameters in embed service * adds parameters to the oembed services * Styling Co-authored-by: Chocobozzz <me@florianbigard.com>
This commit is contained in:
parent
6e391224d4
commit
c8bac5396c
2 changed files with 64 additions and 14 deletions
|
@ -1,9 +1,9 @@
|
|||
import express from 'express'
|
||||
import { EMBED_SIZE, PREVIEWS_SIZE, WEBSERVER, THUMBNAILS_SIZE } from '../initializers/constants'
|
||||
import { asyncMiddleware, oembedValidator } from '../middlewares'
|
||||
import { accountNameWithHostGetValidator } from '../middlewares/validators'
|
||||
import { MChannelSummary } from '@server/types/models'
|
||||
import { escapeHTML } from '@shared/core-utils/renderer'
|
||||
import { EMBED_SIZE, PREVIEWS_SIZE, THUMBNAILS_SIZE, WEBSERVER } from '../initializers/constants'
|
||||
import { asyncMiddleware, oembedValidator } from '../middlewares'
|
||||
import { accountNameWithHostGetValidator } from '../middlewares/validators'
|
||||
|
||||
const servicesRouter = express.Router()
|
||||
|
||||
|
@ -36,7 +36,7 @@ function generatePlaylistOEmbed (req: express.Request, res: express.Response) {
|
|||
const json = buildOEmbed({
|
||||
channel: playlist.VideoChannel,
|
||||
title: playlist.name,
|
||||
embedPath: playlist.getEmbedStaticPath(),
|
||||
embedPath: playlist.getEmbedStaticPath() + buildPlayerURLQuery(req.query.url),
|
||||
previewPath: playlist.getThumbnailStaticPath(),
|
||||
previewSize: THUMBNAILS_SIZE,
|
||||
req
|
||||
|
@ -51,7 +51,7 @@ function generateVideoOEmbed (req: express.Request, res: express.Response) {
|
|||
const json = buildOEmbed({
|
||||
channel: video.VideoChannel,
|
||||
title: video.name,
|
||||
embedPath: video.getEmbedStaticPath(),
|
||||
embedPath: video.getEmbedStaticPath() + buildPlayerURLQuery(req.query.url),
|
||||
previewPath: video.getPreviewStaticPath(),
|
||||
previewSize: PREVIEWS_SIZE,
|
||||
req
|
||||
|
@ -60,6 +60,40 @@ function generateVideoOEmbed (req: express.Request, res: express.Response) {
|
|||
return res.json(json)
|
||||
}
|
||||
|
||||
function buildPlayerURLQuery (inputQueryUrl: string) {
|
||||
const allowedParameters = new Set([
|
||||
'start',
|
||||
'stop',
|
||||
'loop',
|
||||
'autoplay',
|
||||
'muted',
|
||||
'controls',
|
||||
'controlBar',
|
||||
'title',
|
||||
'api',
|
||||
'warningTitle',
|
||||
'peertubeLink',
|
||||
'p2p',
|
||||
'subtitle',
|
||||
'bigPlayBackgroundColor',
|
||||
'mode',
|
||||
'foregroundColor'
|
||||
])
|
||||
|
||||
const params = new URLSearchParams()
|
||||
|
||||
new URL(inputQueryUrl).searchParams.forEach((v, k) => {
|
||||
if (allowedParameters.has(k)) {
|
||||
params.append(k, v)
|
||||
}
|
||||
})
|
||||
|
||||
const stringQuery = params.toString()
|
||||
if (!stringQuery) return ''
|
||||
|
||||
return '?' + stringQuery
|
||||
}
|
||||
|
||||
function buildOEmbed (options: {
|
||||
req: express.Request
|
||||
title: string
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue