diff --git a/packages/content-handler/src/websites/youtube-handler.ts b/packages/content-handler/src/websites/youtube-handler.ts index 05a6a59b3..8021f467e 100644 --- a/packages/content-handler/src/websites/youtube-handler.ts +++ b/packages/content-handler/src/websites/youtube-handler.ts @@ -18,7 +18,7 @@ export const getYoutubeVideoId = (url: string) => { return videoId } -const getYoutubePlaylistId = (url: string) => { +export const getYoutubePlaylistId = (url: string) => { const u = new URL(url) return u.searchParams.get('list') } diff --git a/packages/content-handler/test/youtube-handler.test.ts b/packages/content-handler/test/youtube-handler.test.ts index 410229691..f08e114cc 100644 --- a/packages/content-handler/test/youtube-handler.test.ts +++ b/packages/content-handler/test/youtube-handler.test.ts @@ -1,6 +1,6 @@ -import { expect } from 'chai' -import 'mocha' -import { escapeTitle, getYoutubeVideoId } from '../src/websites/youtube-handler' +import { expect } from "chai"; +import "mocha"; +import { escapeTitle, getYoutubePlaylistId, getYoutubeVideoId } from "../src/websites/youtube-handler"; describe('getYoutubeVideoId', () => { it('should parse video id out of a URL', async () => { @@ -24,6 +24,36 @@ describe('getYoutubeVideoId', () => { }) }) +describe('getYoutubePlaylistId', () => { + it('should parse playlist id out of a URL', async () => { + expect('PL6D4F6A0D6B0C6A5E').to.eq( + getYoutubePlaylistId( + 'https://www.youtube.com/watch?v=BnSUk0je6oo&t=269s&list=PL6D4F6A0D6B0C6A5E' + ) + ) + expect('RDvFD2gu007dc').to.eq( + getYoutubePlaylistId( + 'https://www.youtube.com/watch?v=vFD2gu007dc&list=RDvFD2gu007dc&start_radio=1' + ) + ) + expect('PL6D4F6A0D6B0C6A5E').to.eq( + getYoutubePlaylistId( + 'https://www.youtube.com/playlist?list=PL6D4F6A0D6B0C6A5E' + ) + ) + expect('PL6D4F6A0D6B0C6A5E').to.eq( + getYoutubePlaylistId( + 'https://www.youtube.com/playlist?list=PL6D4F6A0D6B0C6A5E&feature=share' + ) + ) + expect('PL6D4F6A0D6B0C6A5E').to.eq( + getYoutubePlaylistId( + 'https://www.youtube.com/playlist?list=PL6D4F6A0D6B0C6A5E&feature=share' + ) + ) + }) +}) + describe('escapeTitle', () => { it('escapes the special characters in the title', async () => { expect(escapeTitle("The Stanley's Parable")).to.eq(