From 95033e723ef912706e4d176de6b2760f017184e1 Mon Sep 17 00:00:00 2001 From: Patrick Kan <55383971+patrickkfkan@users.noreply.github.com> Date: Mon, 6 Mar 2023 09:44:09 +0800 Subject: [PATCH] feat(parser): add `banner` to `PlaylistHeader` (#337) --- src/parser/classes/HeroPlaylistThumbnail.ts | 19 +++++++++++++++++++ src/parser/classes/PlaylistHeader.ts | 2 ++ src/parser/map.ts | 3 +++ 3 files changed, 24 insertions(+) create mode 100644 src/parser/classes/HeroPlaylistThumbnail.ts diff --git a/src/parser/classes/HeroPlaylistThumbnail.ts b/src/parser/classes/HeroPlaylistThumbnail.ts new file mode 100644 index 000000000..1d83b2af0 --- /dev/null +++ b/src/parser/classes/HeroPlaylistThumbnail.ts @@ -0,0 +1,19 @@ +import { YTNode } from '../helpers.js'; +import NavigationEndpoint from './NavigationEndpoint.js'; +import Thumbnail from './misc/Thumbnail.js'; + +class HeroPlaylistThumbnail extends YTNode { + static type = 'HeroPlaylistThumbnail'; + + thumbnails: Thumbnail[]; + on_tap_endpoint: NavigationEndpoint; + + constructor(data: any) { + super(); + + this.thumbnails = Thumbnail.fromResponse(data.thumbnail); + this.on_tap_endpoint = new NavigationEndpoint(data.onTap); + } +} + +export default HeroPlaylistThumbnail; \ No newline at end of file diff --git a/src/parser/classes/PlaylistHeader.ts b/src/parser/classes/PlaylistHeader.ts index a670538d4..18c5a4c2a 100644 --- a/src/parser/classes/PlaylistHeader.ts +++ b/src/parser/classes/PlaylistHeader.ts @@ -21,6 +21,7 @@ class PlaylistHeader extends YTNode { save_button; shuffle_play_button; menu; + banner; constructor(data: any) { super(); @@ -39,6 +40,7 @@ class PlaylistHeader extends YTNode { this.save_button = Parser.parse(data.saveButton); this.shuffle_play_button = Parser.parse(data.shufflePlayButton); this.menu = Parser.parse(data.moreActionsMenu); + this.banner = Parser.parseItem(data.playlistHeaderBanner); } } diff --git a/src/parser/map.ts b/src/parser/map.ts index a9fc75d03..d20ab7351 100644 --- a/src/parser/map.ts +++ b/src/parser/map.ts @@ -214,6 +214,8 @@ import { default as Heatmap } from './classes/Heatmap.js'; export { Heatmap }; import { default as HeatMarker } from './classes/HeatMarker.js'; export { HeatMarker }; +import { default as HeroPlaylistThumbnail } from './classes/HeroPlaylistThumbnail.js'; +export { HeroPlaylistThumbnail }; import { default as HighlightsCarousel } from './classes/HighlightsCarousel.js'; export { HighlightsCarousel }; import { default as HistorySuggestion } from './classes/HistorySuggestion.js'; @@ -778,6 +780,7 @@ const map: Record = { HashtagHeader, Heatmap, HeatMarker, + HeroPlaylistThumbnail, HighlightsCarousel, HistorySuggestion, HorizontalCardList,