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; }