feat(parser): Add VideoSummaryContentView and VideoSummaryParagraphView (#1153)

* feat(parser): Add `VideoSummaryContentView` and `VideoSummaryParagraphView`

* fix(ExpandableMetadata): Update `expanded_content` type
This commit is contained in:
Luan
2026-03-16 11:22:00 -03:00
committed by GitHub
parent 543b94c3e4
commit da1fac2d29
4 changed files with 47 additions and 2 deletions

View File

@@ -5,6 +5,7 @@ import HorizontalCardList from './HorizontalCardList.js';
import HorizontalList from './HorizontalList.js';
import Text from './misc/Text.js';
import Thumbnail from './misc/Thumbnail.js';
import VideoSummaryContentView from './VideoSummaryContentView.js';
export default class ExpandableMetadata extends YTNode {
static type = 'ExpandableMetadata';
@@ -16,7 +17,7 @@ export default class ExpandableMetadata extends YTNode {
expanded_title: Text;
};
expanded_content: HorizontalCardList | HorizontalList | null;
expanded_content: VideoSummaryContentView | HorizontalCardList | HorizontalList | null;
expand_button: Button | null;
collapse_button: Button | null;
@@ -32,7 +33,7 @@ export default class ExpandableMetadata extends YTNode {
};
}
this.expanded_content = Parser.parseItem(data.expandedContent, [ HorizontalCardList, HorizontalList ]);
this.expanded_content = Parser.parseItem(data.expandedContent, [ VideoSummaryContentView, HorizontalCardList, HorizontalList ]);
this.expand_button = Parser.parseItem(data.expandButton, Button);
this.collapse_button = Parser.parseItem(data.collapseButton, Button);
}

View File

@@ -0,0 +1,28 @@
import type { ObservedArray } from '../helpers.js';
import { YTNode } from '../helpers.js';
import { Parser, type RawNode } from '../index.js';
import DislikeButtonView from './DislikeButtonView.js';
import LikeButtonView from './LikeButtonView.js';
import VideoSummaryParagraphView from './VideoSummaryParagraphView.js';
export default class VideoSummaryContentView extends YTNode {
static type = 'VideoSummaryContentView';
public dislike_button_view?: DislikeButtonView | null;
public like_button_view?: LikeButtonView | null;
public paragraphs: ObservedArray<VideoSummaryParagraphView>;
constructor(data: RawNode) {
super();
if ('dislikeButtonViewModel' in data) {
this.dislike_button_view = Parser.parseItem(data.dislikeButtonViewModel, DislikeButtonView);
}
if ('likeButtonViewModel' in data) {
this.like_button_view = Parser.parseItem(data.likeButtonViewModel, LikeButtonView);
}
this.paragraphs = Parser.parseArray(data.paragraphs, VideoSummaryParagraphView);
}
}

View File

@@ -0,0 +1,14 @@
import { YTNode } from '../helpers.js';
import { type RawNode } from '../index.js';
import { Text } from '../misc.js';
export default class VideoSummaryParagraphView extends YTNode {
static type = 'VideoSummaryParagraphView';
public text: Text;
constructor(data: RawNode) {
super();
this.text = Text.fromAttributed(data.text);
}
}

View File

@@ -528,6 +528,8 @@ export { default as VideoMetadataCarouselView } from './classes/VideoMetadataCar
export { default as VideoOwner } from './classes/VideoOwner.js';
export { default as VideoPrimaryInfo } from './classes/VideoPrimaryInfo.js';
export { default as VideoSecondaryInfo } from './classes/VideoSecondaryInfo.js';
export { default as VideoSummaryContentView } from './classes/VideoSummaryContentView.js';
export { default as VideoSummaryParagraphView } from './classes/VideoSummaryParagraphView.js';
export { default as VideoViewCount } from './classes/VideoViewCount.js';
export { default as ViewCountFactoid } from './classes/ViewCountFactoid.js';
export { default as WatchCardCompactVideo } from './classes/WatchCardCompactVideo.js';