Add `/live/` to supported YouTube embed URLs (#4932)
parent
630ebf523d
commit
26d3777ecc
|
@ -340,12 +340,14 @@ describe('parseEmbedPlayerFromUrl', () => {
|
||||||
'https://youtube.com/watch?v=videoId',
|
'https://youtube.com/watch?v=videoId',
|
||||||
'https://youtube.com/watch?v=videoId&feature=share',
|
'https://youtube.com/watch?v=videoId&feature=share',
|
||||||
'https://youtube.com/shorts/videoId',
|
'https://youtube.com/shorts/videoId',
|
||||||
|
'https://youtube.com/live/videoId',
|
||||||
'https://m.youtube.com/watch?v=videoId',
|
'https://m.youtube.com/watch?v=videoId',
|
||||||
'https://music.youtube.com/watch?v=videoId',
|
'https://music.youtube.com/watch?v=videoId',
|
||||||
|
|
||||||
'https://youtube.com/shorts/',
|
'https://youtube.com/shorts/',
|
||||||
'https://youtube.com/',
|
'https://youtube.com/',
|
||||||
'https://youtube.com/random',
|
'https://youtube.com/random',
|
||||||
|
'https://youtube.com/live/',
|
||||||
|
|
||||||
'https://twitch.tv/channelName',
|
'https://twitch.tv/channelName',
|
||||||
'https://www.twitch.tv/channelName',
|
'https://www.twitch.tv/channelName',
|
||||||
|
@ -475,10 +477,16 @@ describe('parseEmbedPlayerFromUrl', () => {
|
||||||
source: 'youtube',
|
source: 'youtube',
|
||||||
playerUri: 'https://bsky.app/iframe/youtube.html?videoId=videoId&start=0',
|
playerUri: 'https://bsky.app/iframe/youtube.html?videoId=videoId&start=0',
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
type: 'youtube_video',
|
||||||
|
source: 'youtube',
|
||||||
|
playerUri: 'https://bsky.app/iframe/youtube.html?videoId=videoId&start=0',
|
||||||
|
},
|
||||||
|
|
||||||
undefined,
|
undefined,
|
||||||
undefined,
|
undefined,
|
||||||
undefined,
|
undefined,
|
||||||
|
undefined,
|
||||||
|
|
||||||
{
|
{
|
||||||
type: 'twitch_video',
|
type: 'twitch_video',
|
||||||
|
|
|
@ -103,16 +103,21 @@ export function parseEmbedPlayerFromUrl(
|
||||||
urlp.hostname === 'm.youtube.com' ||
|
urlp.hostname === 'm.youtube.com' ||
|
||||||
urlp.hostname === 'music.youtube.com'
|
urlp.hostname === 'music.youtube.com'
|
||||||
) {
|
) {
|
||||||
const [_, page, shortVideoId] = urlp.pathname.split('/')
|
const [_, page, shortOrLiveVideoId] = urlp.pathname.split('/')
|
||||||
|
|
||||||
|
const isShorts = page === 'shorts'
|
||||||
|
const isLive = page === 'live'
|
||||||
const videoId =
|
const videoId =
|
||||||
page === 'shorts' ? shortVideoId : (urlp.searchParams.get('v') as string)
|
isShorts || isLive
|
||||||
|
? shortOrLiveVideoId
|
||||||
|
: (urlp.searchParams.get('v') as string)
|
||||||
const seek = encodeURIComponent(urlp.searchParams.get('t') ?? 0)
|
const seek = encodeURIComponent(urlp.searchParams.get('t') ?? 0)
|
||||||
|
|
||||||
if (videoId) {
|
if (videoId) {
|
||||||
return {
|
return {
|
||||||
type: page === 'shorts' ? 'youtube_short' : 'youtube_video',
|
type: isShorts ? 'youtube_short' : 'youtube_video',
|
||||||
source: page === 'shorts' ? 'youtubeShorts' : 'youtube',
|
source: isShorts ? 'youtubeShorts' : 'youtube',
|
||||||
hideDetails: page === 'shorts' ? true : undefined,
|
hideDetails: isShorts ? true : undefined,
|
||||||
playerUri: `${IFRAME_HOST}/iframe/youtube.html?videoId=${videoId}&start=${seek}`,
|
playerUri: `${IFRAME_HOST}/iframe/youtube.html?videoId=${videoId}&start=${seek}`,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue