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,11 +1,10 @@
import { YTNode, observe, type ObservedArray } from '../helpers.js';
import type { RawNode } from '../index.js';
import Parser from '../index.js';
import Chapter from './Chapter.js';
import Heatmap from './Heatmap.js';
import type { RawNode } from '../index.js';
import { observe, ObservedArray, YTNode } from '../helpers.js';
class Marker extends YTNode {
export class Marker extends YTNode {
static type = 'Marker';
marker_key: string;
@@ -14,23 +13,23 @@ class Marker extends YTNode {
chapters?: Chapter[];
};
constructor (data: RawNode) {
constructor(data: RawNode) {
super();
this.marker_key = data.key;
this.value = {};
if (data.value.heatmap) {
if (Reflect.has(data.value, 'heatmap')) {
this.value.heatmap = Parser.parseItem(data.value.heatmap, Heatmap);
}
if (data.value.chapters) {
if (Reflect.has(data.value, 'chapters')) {
this.value.chapters = Parser.parseArray(data.value.chapters, Chapter);
}
}
}
class MultiMarkersPlayerBar extends YTNode {
export default class MultiMarkersPlayerBar extends YTNode {
static type = 'MultiMarkersPlayerBar';
markers_map: ObservedArray<Marker>;
@@ -39,10 +38,9 @@ class MultiMarkersPlayerBar extends YTNode {
super();
this.markers_map = observe(data.markersMap?.map((marker: {
key: string;
value: { [key: string ]: any
}}) => new Marker(marker)) || []);
value: {
[key: string]: RawNode
}
}) => new Marker(marker)) || []);
}
}
export { Marker };
export default MultiMarkersPlayerBar;
}