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,39 +1,37 @@
import { YTNode } from '../helpers.js';
import Parser, { RawNode } from '../index.js';
import { type ObservedArray, YTNode } from '../helpers.js';
import Parser, { type RawNode } from '../index.js';
class SectionList extends YTNode {
export default class SectionList extends YTNode {
static type = 'SectionList';
contents: ObservedArray<YTNode>;
target_id?: string;
contents;
continuation?: string;
header?;
sub_menu?;
header?: YTNode;
sub_menu?: YTNode;
constructor(data: RawNode) {
super();
if (data.targetId) {
this.contents = Parser.parseArray(data.contents);
if (Reflect.has(data, 'targetId')) {
this.target_id = data.targetId;
}
this.contents = Parser.parseArray(data.contents);
if (data.continuations) {
if (data.continuations[0].nextContinuationData) {
if (Reflect.has(data, 'continuations')) {
if (Reflect.has(data.continuations[0], 'nextContinuationData')) {
this.continuation = data.continuations[0].nextContinuationData.continuation;
} else if (data.continuations[0].reloadContinuationData) {
} else if (Reflect.has(data.continuations[0], 'reloadContinuationData')) {
this.continuation = data.continuations[0].reloadContinuationData.continuation;
}
}
if (data.header) {
if (Reflect.has(data, 'header')) {
this.header = Parser.parseItem(data.header);
}
if (data.subMenu) {
if (Reflect.has(data, 'subMenu')) {
this.sub_menu = Parser.parseItem(data.subMenu);
}
}
}
export default SectionList;
}