refactor: improve Search parser (#247)

* refactor: improve Search parser

* chore: lint
This commit is contained in:
LuanRT
2022-11-29 03:50:17 -03:00
committed by GitHub
parent 6caa679df6
commit 516eeeff45
11 changed files with 53 additions and 75 deletions

View File

@@ -1,5 +1,7 @@
import Parser from '../index';
import { YTNode } from '../helpers';
import SearchRefinementCard from './SearchRefinementCard';
import Button from './Button';
class HorizontalCardList extends YTNode {
static type = 'HorizontalCardList';
@@ -11,10 +13,10 @@ class HorizontalCardList extends YTNode {
constructor(data: any) {
super();
this.cards = Parser.parse(data.cards);
this.header = Parser.parse(data.header);
this.previous_button = Parser.parse(data.previousButton);
this.next_button = Parser.parse(data.nextButton);
this.cards = Parser.parseArray<SearchRefinementCard>(data.cards, SearchRefinementCard);
this.header = Parser.parseItem(data.header);
this.previous_button = Parser.parseItem<Button>(data.previousButton, Button);
this.next_button = Parser.parseItem<Button>(data.nextButton, Button);
}
}

View File

@@ -1,7 +1,7 @@
import Text from './misc/Text';
import { YTNode } from '../helpers';
class RichListHeader extends YTNode {
export default class RichListHeader extends YTNode {
static type = 'RichListHeader';
title: Text;
@@ -16,6 +16,4 @@ class RichListHeader extends YTNode {
this.title_style = data?.titleStyle?.style;
this.icon_type = data?.icon?.iconType;
}
}
export default RichListHeader;
}

View File

@@ -20,14 +20,14 @@ class Shelf extends YTNode {
this.endpoint = new NavigationEndpoint(data.endpoint);
}
this.content = Parser.parse(data.content) || null;
this.content = Parser.parseItem(data.content) || null;
if (data.icon?.iconType) {
this.icon_type = data.icon?.iconType;
}
if (data.menu) {
this.menu = Parser.parse(data.menu);
this.menu = Parser.parseItem(data.menu);
}
}
}

View File

@@ -1,20 +1,23 @@
import Parser from '../index';
import Text from './misc/Text';
import { YTNode } from '../helpers';
class UniversalWatchCard extends YTNode {
export default class UniversalWatchCard extends YTNode {
static type = 'UniversalWatchCard';
header;
call_to_action;
sections;
collapsed_label?: Text;
constructor(data: any) {
super();
// TODO: use parseItem / parseArray for these
this.header = Parser.parse(data.header);
this.call_to_action = Parser.parse(data.callToAction);
this.sections = Parser.parse(data.sections);
}
}
this.header = Parser.parseItem(data.header);
this.call_to_action = Parser.parseItem(data.callToAction);
this.sections = Parser.parseArray(data.sections);
export default UniversalWatchCard;
if (data.collapsedLabel) {
this.collapsed_label = new Text(data.collapsedLabel);
}
}
}

View File

@@ -3,7 +3,7 @@ import Text from './misc/Text';
import NavigationEndpoint from './NavigationEndpoint';
import { YTNode } from '../helpers';
class VerticalWatchCardList extends YTNode {
export default class VerticalWatchCardList extends YTNode {
static type = 'VerticalWatchCardList';
items;
@@ -13,11 +13,9 @@ class VerticalWatchCardList extends YTNode {
constructor(data: any) {
super();
this.items = Parser.parse(data.items);
this.items = Parser.parseArray(data.items);
this.contents = this.items; // XXX: alias for consistency
this.view_all_text = new Text(data.viewAllText);
this.view_all_endpoint = new NavigationEndpoint(data.viewAllEndpoint);
}
}
export default VerticalWatchCardList;
}

View File

@@ -1,13 +1,14 @@
import Parser from '../index';
import Parser from '..';
import Text from './misc/Text';
import Author from './misc/Author';
import Menu from './menus/Menu';
import Thumbnail from './misc/Thumbnail';
import NavigationEndpoint from './NavigationEndpoint';
import { timeToSeconds } from '../../utils/Utils';
import { YTNode } from '../helpers';
class Video extends YTNode {
export default class Video extends YTNode {
static type = 'Video';
id: string;
@@ -55,7 +56,7 @@ class Video extends YTNode {
this.thumbnails = Thumbnail.fromResponse(data.thumbnail);
this.thumbnail_overlays = Parser.parseArray(data.thumbnailOverlays);
this.rich_thumbnail = data.richThumbnail ? Parser.parse(data.richThumbnail) : null;
this.rich_thumbnail = data.richThumbnail ? Parser.parseItem(data.richThumbnail) : null;
this.author = new Author(data.ownerText, data.ownerBadges, data.channelThumbnailSupportedRenderers?.channelThumbnailWithLinkRenderer?.thumbnail);
this.endpoint = new NavigationEndpoint(data.navigationEndpoint);
this.published = new Text(data.publishedTimeText);
@@ -102,6 +103,4 @@ class Video extends YTNode {
get best_thumbnail(): Thumbnail | undefined{
return this.thumbnails[0];
}
}
export default Video;
}

View File

@@ -2,7 +2,7 @@ import Parser from '../index';
import NavigationEndpoint from './NavigationEndpoint';
import { YTNode } from '../helpers';
class WatchCardHeroVideo extends YTNode {
export default class WatchCardHeroVideo extends YTNode {
static type = 'WatchCardHeroVideo';
endpoint: NavigationEndpoint;
@@ -13,10 +13,8 @@ class WatchCardHeroVideo extends YTNode {
constructor(data: any) {
super();
this.endpoint = new NavigationEndpoint(data.navigationEndpoint);
this.call_to_action_button = Parser.parse(data.callToActionButton);
this.hero_image = Parser.parse(data.heroImage);
this.label = data.lengthText.accessibility.accessibilityData.label;
this.call_to_action_button = Parser.parseItem(data.callToActionButton);
this.hero_image = Parser.parseItem(data.heroImage);
this.label = data.lengthText?.accessibility.accessibilityData.label || '';
}
}
export default WatchCardHeroVideo;
}

View File

@@ -3,7 +3,7 @@ import NavigationEndpoint from './NavigationEndpoint';
import Text from './misc/Text';
import { YTNode } from '../helpers';
class WatchCardRichHeader extends YTNode {
export default class WatchCardRichHeader extends YTNode {
static type = 'WatchCardRichHeader';
title: Text;
@@ -21,6 +21,4 @@ class WatchCardRichHeader extends YTNode {
this.author.name = this.title.toString();
this.style = data.style;
}
}
export default WatchCardRichHeader;
}

View File

@@ -1,15 +1,13 @@
import Parser from '../index';
import { YTNode } from '../helpers';
class WatchCardSectionSequence extends YTNode {
export default class WatchCardSectionSequence extends YTNode {
static type = 'WatchCardSectionSequence';
lists;
constructor(data: any) {
super();
this.lists = Parser.parse(data.lists);
this.lists = Parser.parseArray(data.lists);
}
}
export default WatchCardSectionSequence;
}