From dc2ed046b8424134c675f30e7452fbd6bda0d228 Mon Sep 17 00:00:00 2001 From: Luan Date: Fri, 15 Nov 2024 03:24:25 -0300 Subject: [PATCH] feat(parser): Add `PlayerOverlayVideoDetails` node --- src/parser/classes/PlayerOverlay.ts | 19 +++++++++++-------- .../classes/PlayerOverlayVideoDetails.ts | 16 ++++++++++++++++ src/parser/nodes.ts | 1 + 3 files changed, 28 insertions(+), 8 deletions(-) create mode 100644 src/parser/classes/PlayerOverlayVideoDetails.ts diff --git a/src/parser/classes/PlayerOverlay.ts b/src/parser/classes/PlayerOverlay.ts index 8aa58159..6450ac9a 100644 --- a/src/parser/classes/PlayerOverlay.ts +++ b/src/parser/classes/PlayerOverlay.ts @@ -3,20 +3,22 @@ import { Parser, type RawNode } from '../index.js'; import Button from './Button.js'; import DecoratedPlayerBar from './DecoratedPlayerBar.js'; import PlayerOverlayAutoplay from './PlayerOverlayAutoplay.js'; +import PlayerOverlayVideoDetails from './PlayerOverlayVideoDetails.js'; import WatchNextEndScreen from './WatchNextEndScreen.js'; import Menu from './menus/Menu.js'; export default class PlayerOverlay extends YTNode { static type = 'PlayerOverlay'; - end_screen: WatchNextEndScreen | null; - autoplay: PlayerOverlayAutoplay | null; - share_button: Button | null; - add_to_menu: Menu | null; - fullscreen_engagement: YTNode | null; - actions: ObservedArray; - browser_media_session: YTNode | null; - decorated_player_bar: DecoratedPlayerBar | null; + public end_screen: WatchNextEndScreen | null; + public autoplay: PlayerOverlayAutoplay | null; + public share_button: Button | null; + public add_to_menu: Menu | null; + public fullscreen_engagement: YTNode | null; + public actions: ObservedArray; + public browser_media_session: YTNode | null; + public decorated_player_bar: DecoratedPlayerBar | null; + public video_details: PlayerOverlayVideoDetails | null; constructor(data: RawNode) { super(); @@ -28,5 +30,6 @@ export default class PlayerOverlay extends YTNode { this.actions = Parser.parseArray(data.actions); this.browser_media_session = Parser.parseItem(data.browserMediaSession); this.decorated_player_bar = Parser.parseItem(data.decoratedPlayerBarRenderer, DecoratedPlayerBar); + this.video_details = Parser.parseItem(data.videoDetails, PlayerOverlayVideoDetails); } } \ No newline at end of file diff --git a/src/parser/classes/PlayerOverlayVideoDetails.ts b/src/parser/classes/PlayerOverlayVideoDetails.ts new file mode 100644 index 00000000..92d3186b --- /dev/null +++ b/src/parser/classes/PlayerOverlayVideoDetails.ts @@ -0,0 +1,16 @@ +import { Text } from '../misc.js'; +import { YTNode } from '../helpers.js'; +import { type RawNode } from '../index.js'; + +export default class PlayerOverlayVideoDetails extends YTNode { + static type = 'PlayerOverlayVideoDetails'; + + public title: Text; + public subtitle: Text; + + constructor(data: RawNode) { + super(); + this.title = new Text(data.title); + this.subtitle = new Text(data.subtitle); + } +} \ No newline at end of file diff --git a/src/parser/nodes.ts b/src/parser/nodes.ts index cc4f61f5..7214960d 100644 --- a/src/parser/nodes.ts +++ b/src/parser/nodes.ts @@ -303,6 +303,7 @@ export { default as PlayerMicroformat } from './classes/PlayerMicroformat.js'; export { default as PlayerOverflow } from './classes/PlayerOverflow.js'; export { default as PlayerOverlay } from './classes/PlayerOverlay.js'; export { default as PlayerOverlayAutoplay } from './classes/PlayerOverlayAutoplay.js'; +export { default as PlayerOverlayVideoDetails } from './classes/PlayerOverlayVideoDetails.js'; export { default as PlayerStoryboardSpec } from './classes/PlayerStoryboardSpec.js'; export { default as Playlist } from './classes/Playlist.js'; export { default as PlaylistCustomThumbnail } from './classes/PlaylistCustomThumbnail.js';