From a1c4b732c560856792da697366298de0c03dd601 Mon Sep 17 00:00:00 2001 From: Syed Osama Ali Shah <86572800+Osamaali313@users.noreply.github.com> Date: Tue, 9 Jun 2026 23:55:40 +0300 Subject: [PATCH] fix(baoyu-fetch): parse YouTube /embed/ URLs in parseYouTubeVideoId parseYouTubeVideoId handled watch, youtu.be, /shorts/ and /live/ URLs but not the common /embed/ player form, so embed links returned null and the YouTube adapter treated them as "no document". Add an /embed/ branch mirroring the existing /shorts/ and /live/ handling, with a regression test. --- packages/baoyu-fetch/src/__tests__/youtube-utils.test.ts | 4 ++++ packages/baoyu-fetch/src/adapters/youtube/utils.ts | 5 +++++ 2 files changed, 9 insertions(+) diff --git a/packages/baoyu-fetch/src/__tests__/youtube-utils.test.ts b/packages/baoyu-fetch/src/__tests__/youtube-utils.test.ts index 763943e..faf0d81 100644 --- a/packages/baoyu-fetch/src/__tests__/youtube-utils.test.ts +++ b/packages/baoyu-fetch/src/__tests__/youtube-utils.test.ts @@ -19,6 +19,10 @@ describe("parseYouTubeVideoId", () => { test("parses shorts URLs", () => { expect(parseYouTubeVideoId(new URL("https://www.youtube.com/shorts/abc123"))).toBe("abc123"); }); + + test("parses embed URLs", () => { + expect(parseYouTubeVideoId(new URL("https://www.youtube.com/embed/abc123"))).toBe("abc123"); + }); }); describe("parseYouTubeDescriptionChapters", () => { diff --git a/packages/baoyu-fetch/src/adapters/youtube/utils.ts b/packages/baoyu-fetch/src/adapters/youtube/utils.ts index 3770df9..930c962 100644 --- a/packages/baoyu-fetch/src/adapters/youtube/utils.ts +++ b/packages/baoyu-fetch/src/adapters/youtube/utils.ts @@ -52,6 +52,11 @@ export function parseYouTubeVideoId(url: URL): string | null { return liveMatch[1]; } + const embedMatch = url.pathname.match(/^\/embed\/([^/?#]+)/); + if (embedMatch) { + return embedMatch[1]; + } + return null; }