refactor: clean up parser and tests (#387)

* tests: improve coverage

* refactor: clean up nodes

* chore: lint

* feat(parser): ignore `BrandVideoShelf`

Seems to be used for ads.

* feat(parser): ignore `BrandVideoSingleton` too
This commit is contained in:
LuanRT
2023-04-23 06:37:33 -03:00
committed by GitHub
parent f66f0bd656
commit 257bd475a0
358 changed files with 2823 additions and 3126 deletions

View File

@@ -1,40 +1,44 @@
import Text from '../misc/Text.js';
import Thumbnail from '../misc/Thumbnail.js';
import { YTNode } from '../../helpers.js';
import type { RawNode } from '../../index.js';
import { Parser, RawNode } from '../../index.js';
import CommentsEntryPointTeaser from './CommentsEntryPointTeaser.js';
class CommentsEntryPointHeader extends YTNode {
export default class CommentsEntryPointHeader extends YTNode {
static type = 'CommentsEntryPointHeader';
header?: Text;
comment_count?: Text;
teaser_avatar?: Thumbnail[];
teaser_content?: Text;
content_renderer?: CommentsEntryPointTeaser | null;
simplebox_placeholder?: Text;
constructor(data: RawNode) {
super();
if (data.header) {
if (Reflect.has(data, 'headerText')) {
this.header = new Text(data.headerText);
}
if (data.commentCount) {
if (Reflect.has(data, 'commentCount')) {
this.comment_count = new Text(data.commentCount);
}
if (data.teaserAvatar || data.simpleboxAvatar) {
if (Reflect.has(data, 'teaserAvatar') || Reflect.has(data, 'simpleboxAvatar')) {
this.teaser_avatar = Thumbnail.fromResponse(data.teaserAvatar || data.simpleboxAvatar);
}
if (data.teaserContent) {
if (Reflect.has(data, 'teaserContent')) {
this.teaser_content = new Text(data.teaserContent);
}
if (data.simpleboxPlaceholder) {
if (Reflect.has(data, 'contentRenderer')) {
this.content_renderer = Parser.parseItem(data.contentRenderer, CommentsEntryPointTeaser);
}
if (Reflect.has(data, 'simpleboxPlaceholder')) {
this.simplebox_placeholder = new Text(data.simpleboxPlaceholder);
}
}
}
export default CommentsEntryPointHeader;
}