1
0
Fork 0
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:
Durgaraj Karki 2022-06-21 18:23:15 +05:45 committed by GitHub
parent 6e391224d4
commit c8bac5396c
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 64 additions and 14 deletions

View file

@ -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