From f8fb6cb9b3aabdc3cfb08675d63e48bdd5e43f61 Mon Sep 17 00:00:00 2001 From: Lars Kappert Date: Tue, 5 Nov 2024 13:43:20 +0100 Subject: Fix start value in youtube embed by removing "s" from url param (#6113) --- __tests__/lib/string.test.ts | 12 ++++++++++++ src/lib/strings/embed-player.ts | 7 +++++-- 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/__tests__/lib/string.test.ts b/__tests__/lib/string.test.ts index f226de992..e212ef5c9 100644 --- a/__tests__/lib/string.test.ts +++ b/__tests__/lib/string.test.ts @@ -335,8 +335,10 @@ describe('shortenLinks', () => { describe('parseEmbedPlayerFromUrl', () => { const inputs = [ 'https://youtu.be/videoId', + 'https://youtu.be/videoId?t=1s', 'https://www.youtube.com/watch?v=videoId', 'https://www.youtube.com/watch?v=videoId&feature=share', + 'https://www.youtube.com/watch?v=videoId&t=1s', 'https://youtube.com/watch?v=videoId', 'https://youtube.com/watch?v=videoId&feature=share', 'https://youtube.com/shorts/videoId', @@ -441,6 +443,11 @@ describe('parseEmbedPlayerFromUrl', () => { source: 'youtube', 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=1', + }, { type: 'youtube_video', source: 'youtube', @@ -451,6 +458,11 @@ describe('parseEmbedPlayerFromUrl', () => { source: 'youtube', 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=1', + }, { type: 'youtube_video', source: 'youtube', diff --git a/src/lib/strings/embed-player.ts b/src/lib/strings/embed-player.ts index d0d8277c8..9ee5128c8 100644 --- a/src/lib/strings/embed-player.ts +++ b/src/lib/strings/embed-player.ts @@ -88,7 +88,9 @@ export function parseEmbedPlayerFromUrl( // youtube if (urlp.hostname === 'youtu.be') { const videoId = urlp.pathname.split('/')[1] - const seek = encodeURIComponent(urlp.searchParams.get('t') ?? 0) + const t = urlp.searchParams.get('t') ?? '0' + const seek = encodeURIComponent(t.replace(/s$/, '')) + if (videoId) { return { type: 'youtube_video', @@ -111,7 +113,8 @@ export function parseEmbedPlayerFromUrl( isShorts || isLive ? shortOrLiveVideoId : (urlp.searchParams.get('v') as string) - const seek = encodeURIComponent(urlp.searchParams.get('t') ?? 0) + const t = urlp.searchParams.get('t') ?? '0' + const seek = encodeURIComponent(t.replace(/s$/, '')) if (videoId) { return { -- cgit 1.4.1