diff --git a/src/utils/urlParser.ts b/src/utils/urlParser.ts index 37f5067c..209c7c51 100644 --- a/src/utils/urlParser.ts +++ b/src/utils/urlParser.ts @@ -11,13 +11,13 @@ export function urlTimeToSeconds(time: string): number { return 0; } - const re = /(?:(?\d{1,3})h)?(?:(?\d{1,2})m)?(?\d+)s?/; + const re = /(?:(\d{1,3})h)?(?:(\d{1,2})m)?(\d+)s?/; const match = re.exec(time); if (match) { - const hours = parseInt(match.groups.hours ?? '0', 10); - const minutes = parseInt(match.groups.minutes ?? '0', 10); - const seconds = parseInt(match.groups.seconds ?? '0', 10); + const hours = parseInt(match[1] ?? '0', 10); + const minutes = parseInt(match[2] ?? '0', 10); + const seconds = parseInt(match[3] ?? '0', 10); return hours * 3600 + minutes * 60 + seconds; } else if (/\d+/.test(time)) { diff --git a/test/urlParser.test.ts b/test/urlParser.test.ts index 32cf1568..888227dc 100644 --- a/test/urlParser.test.ts +++ b/test/urlParser.test.ts @@ -5,15 +5,15 @@ describe("getStartTimeFromUrl", () => { expect(getStartTimeFromUrl("https://www.youtube.com/watch?v=dQw4w9WgXcQ&t=123")).toBe(123); }); - it("parses with a seconds", () => { + it("parses with seconds", () => { expect(getStartTimeFromUrl("https://www.youtube.com/watch?v=dQw4w9WgXcQ&t=123s")).toBe(123); }); - it("parses with a minutes", () => { + it("parses with minutes", () => { expect(getStartTimeFromUrl("https://www.youtube.com/watch?v=dQw4w9WgXcQ&t=23m3s")).toBe(23 * 60 + 3); }); - it("parses with a hours", () => { + it("parses with hours", () => { expect(getStartTimeFromUrl("https://www.youtube.com/watch?v=dQw4w9WgXcQ&t=1h2m3s")).toBe(1 * 60 * 60 + 2 * 60 + 3); });