Skip to content

Commit

Permalink
feat(parser): Add VideoAttributesSectionView node (#732)
Browse files Browse the repository at this point in the history
  • Loading branch information
absidue authored Aug 12, 2024
1 parent 7afc3da commit 4b60b97
Show file tree
Hide file tree
Showing 3 changed files with 28 additions and 2 deletions.
5 changes: 3 additions & 2 deletions src/parser/classes/StructuredDescriptionContent.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,22 +8,23 @@ import VideoDescriptionMusicSection from './VideoDescriptionMusicSection.js';
import VideoDescriptionTranscriptSection from './VideoDescriptionTranscriptSection.js';
import VideoDescriptionCourseSection from './VideoDescriptionCourseSection.js';
import ReelShelf from './ReelShelf.js';
import VideoAttributesSectionView from './VideoAttributesSectionView.js';

export default class StructuredDescriptionContent extends YTNode {
static type = 'StructuredDescriptionContent';

items: ObservedArray<
VideoDescriptionHeader | ExpandableVideoDescriptionBody | VideoDescriptionMusicSection |
VideoDescriptionInfocardsSection | VideoDescriptionTranscriptSection | VideoDescriptionTranscriptSection |
VideoDescriptionCourseSection | HorizontalCardList | ReelShelf
VideoDescriptionCourseSection | HorizontalCardList | ReelShelf | VideoAttributesSectionView
>;

constructor(data: RawNode) {
super();
this.items = Parser.parseArray(data.items, [
VideoDescriptionHeader, ExpandableVideoDescriptionBody, VideoDescriptionMusicSection,
VideoDescriptionInfocardsSection, VideoDescriptionCourseSection, VideoDescriptionTranscriptSection,
VideoDescriptionTranscriptSection, HorizontalCardList, ReelShelf
VideoDescriptionTranscriptSection, HorizontalCardList, ReelShelf, VideoAttributesSectionView
]);
}
}
24 changes: 24 additions & 0 deletions src/parser/classes/VideoAttributesSectionView.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
import { Parser, type RawNode } from '../index.js';
import { YTNode, type ObservedArray } from '../helpers.js';

import ButtonView from './ButtonView.js';
import VideoAttributeView from './VideoAttributeView.js';

export default class VideoAttributesSectionView extends YTNode {
static type = 'VideoAttributesSectionView';

header_title: string;
header_subtitle: string;
video_attributes: ObservedArray<VideoAttributeView>;
previous_button: ButtonView | null;
next_button: ButtonView | null;

constructor(data: RawNode) {
super();
this.header_title = data.headerTitle;
this.header_subtitle = data.headerSubtitle;
this.video_attributes = Parser.parseArray(data.videoAttributeViewModels, VideoAttributeView);
this.previous_button = Parser.parseItem(data.previousButton, ButtonView);
this.next_button = Parser.parseItem(data.nextButton, ButtonView);
}
}
1 change: 1 addition & 0 deletions src/parser/nodes.ts
Original file line number Diff line number Diff line change
Expand Up @@ -415,6 +415,7 @@ export { default as UpsellDialog } from './classes/UpsellDialog.js';
export { default as VerticalList } from './classes/VerticalList.js';
export { default as VerticalWatchCardList } from './classes/VerticalWatchCardList.js';
export { default as Video } from './classes/Video.js';
export { default as VideoAttributesSectionView } from './classes/VideoAttributesSectionView.js';
export { default as VideoAttributeView } from './classes/VideoAttributeView.js';
export { default as VideoCard } from './classes/VideoCard.js';
export { default as VideoDescriptionCourseSection } from './classes/VideoDescriptionCourseSection.js';
Expand Down

0 comments on commit 4b60b97

Please sign in to comment.