diff options
-rw-r--r-- | __tests__/lib/string.test.ts | 12 | ||||
-rw-r--r-- | 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', @@ -444,6 +446,11 @@ describe('parseEmbedPlayerFromUrl', () => { { type: 'youtube_video', source: 'youtube', + playerUri: 'https://bsky.app/iframe/youtube.html?videoId=videoId&start=1', + }, + { + type: 'youtube_video', + source: 'youtube', playerUri: 'https://bsky.app/iframe/youtube.html?videoId=videoId&start=0', }, { @@ -454,6 +461,11 @@ describe('parseEmbedPlayerFromUrl', () => { { type: 'youtube_video', source: 'youtube', + playerUri: 'https://bsky.app/iframe/youtube.html?videoId=videoId&start=1', + }, + { + type: 'youtube_video', + source: 'youtube', playerUri: 'https://bsky.app/iframe/youtube.html?videoId=videoId&start=0', }, { 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 { |