feat: add support for topic/auto-generated channels and fix minor parsing errors (#233)

* dev: add support for topic channels

* dev(parser): do not try to parse empty nodes

* dev: add support for auto-generated game channels
This commit is contained in:
LuanRT
2022-11-11 00:38:44 -03:00
committed by GitHub
parent 4c00f15f55
commit 3cbcd71a3a
20 changed files with 325 additions and 22 deletions

View File

@@ -28,6 +28,8 @@ import { default as C4TabbedHeader } from './classes/C4TabbedHeader';
import { default as CallToActionButton } from './classes/CallToActionButton';
import { default as Card } from './classes/Card';
import { default as CardCollection } from './classes/CardCollection';
import { default as CarouselHeader } from './classes/CarouselHeader';
import { default as CarouselItem } from './classes/CarouselItem';
import { default as Channel } from './classes/Channel';
import { default as ChannelAboutFullMetadata } from './classes/ChannelAboutFullMetadata';
import { default as ChannelFeaturedContent } from './classes/ChannelFeaturedContent';
@@ -54,11 +56,13 @@ import { default as CommentThread } from './classes/comments/CommentThread';
import { default as CompactLink } from './classes/CompactLink';
import { default as CompactMix } from './classes/CompactMix';
import { default as CompactPlaylist } from './classes/CompactPlaylist';
import { default as CompactStation } from './classes/CompactStation';
import { default as CompactVideo } from './classes/CompactVideo';
import { default as ConfirmDialog } from './classes/ConfirmDialog';
import { default as ContinuationItem } from './classes/ContinuationItem';
import { default as CopyLink } from './classes/CopyLink';
import { default as CreatePlaylistDialog } from './classes/CreatePlaylistDialog';
import { default as DefaultPromoPanel } from './classes/DefaultPromoPanel';
import { default as DidYouMean } from './classes/DidYouMean';
import { default as DownloadButton } from './classes/DownloadButton';
import { default as Dropdown } from './classes/Dropdown';
@@ -73,6 +77,8 @@ import { default as ExpandableTab } from './classes/ExpandableTab';
import { default as ExpandedShelfContents } from './classes/ExpandedShelfContents';
import { default as FeedFilterChipBar } from './classes/FeedFilterChipBar';
import { default as FeedTabbedHeader } from './classes/FeedTabbedHeader';
import { default as GameCard } from './classes/GameCard';
import { default as GameDetails } from './classes/GameDetails';
import { default as Grid } from './classes/Grid';
import { default as GridChannel } from './classes/GridChannel';
import { default as GridHeader } from './classes/GridHeader';
@@ -83,6 +89,7 @@ import { default as HistorySuggestion } from './classes/HistorySuggestion';
import { default as HorizontalCardList } from './classes/HorizontalCardList';
import { default as HorizontalList } from './classes/HorizontalList';
import { default as IconLink } from './classes/IconLink';
import { default as InteractiveTabbedHeader } from './classes/InteractiveTabbedHeader';
import { default as ItemSection } from './classes/ItemSection';
import { default as ItemSectionHeader } from './classes/ItemSectionHeader';
import { default as ItemSectionTab } from './classes/ItemSectionTab';
@@ -189,6 +196,7 @@ import { default as PlayerOverlay } from './classes/PlayerOverlay';
import { default as PlayerOverlayAutoplay } from './classes/PlayerOverlayAutoplay';
import { default as PlayerStoryboardSpec } from './classes/PlayerStoryboardSpec';
import { default as Playlist } from './classes/Playlist';
import { default as PlaylistCustomThumbnail } from './classes/PlaylistCustomThumbnail';
import { default as PlaylistHeader } from './classes/PlaylistHeader';
import { default as PlaylistInfoCardContent } from './classes/PlaylistInfoCardContent';
import { default as PlaylistMetadata } from './classes/PlaylistMetadata';
@@ -207,6 +215,7 @@ import { default as ProfileColumn } from './classes/ProfileColumn';
import { default as ProfileColumnStats } from './classes/ProfileColumnStats';
import { default as ProfileColumnStatsEntry } from './classes/ProfileColumnStatsEntry';
import { default as ProfileColumnUserInfo } from './classes/ProfileColumnUserInfo';
import { default as RecognitionShelf } from './classes/RecognitionShelf';
import { default as ReelItem } from './classes/ReelItem';
import { default as ReelShelf } from './classes/ReelShelf';
import { default as RelatedChipCloud } from './classes/RelatedChipCloud';
@@ -245,6 +254,7 @@ import { default as Tab } from './classes/Tab';
import { default as Tabbed } from './classes/Tabbed';
import { default as TabbedSearchResults } from './classes/TabbedSearchResults';
import { default as TextHeader } from './classes/TextHeader';
import { default as ThumbnailLandscapePortrait } from './classes/ThumbnailLandscapePortrait';
import { default as ThumbnailOverlayBottomPanel } from './classes/ThumbnailOverlayBottomPanel';
import { default as ThumbnailOverlayEndorsement } from './classes/ThumbnailOverlayEndorsement';
import { default as ThumbnailOverlayHoverText } from './classes/ThumbnailOverlayHoverText';
@@ -261,6 +271,7 @@ import { default as TitleAndButtonListHeader } from './classes/TitleAndButtonLis
import { default as ToggleButton } from './classes/ToggleButton';
import { default as ToggleMenuServiceItem } from './classes/ToggleMenuServiceItem';
import { default as Tooltip } from './classes/Tooltip';
import { default as TopicChannelDetails } from './classes/TopicChannelDetails';
import { default as TwoColumnBrowseResults } from './classes/TwoColumnBrowseResults';
import { default as TwoColumnSearchResults } from './classes/TwoColumnSearchResults';
import { default as TwoColumnWatchNextResults } from './classes/TwoColumnWatchNextResults';
@@ -268,6 +279,7 @@ import { default as UniversalWatchCard } from './classes/UniversalWatchCard';
import { default as VerticalList } from './classes/VerticalList';
import { default as VerticalWatchCardList } from './classes/VerticalWatchCardList';
import { default as Video } from './classes/Video';
import { default as VideoCard } from './classes/VideoCard';
import { default as VideoInfoCardContent } from './classes/VideoInfoCardContent';
import { default as VideoOwner } from './classes/VideoOwner';
import { default as VideoPrimaryInfo } from './classes/VideoPrimaryInfo';
@@ -279,7 +291,7 @@ import { default as WatchCardSectionSequence } from './classes/WatchCardSectionS
import { default as WatchNextEndScreen } from './classes/WatchNextEndScreen';
import { default as WatchNextTabbedResults } from './classes/WatchNextTabbedResults';
const map: Record<string, YTNodeConstructor> = {
export const YTNodes = {
AccountChannel,
AccountItemSection,
AccountItemSectionHeader,
@@ -306,6 +318,8 @@ const map: Record<string, YTNodeConstructor> = {
CallToActionButton,
Card,
CardCollection,
CarouselHeader,
CarouselItem,
Channel,
ChannelAboutFullMetadata,
ChannelFeaturedContent,
@@ -332,11 +346,13 @@ const map: Record<string, YTNodeConstructor> = {
CompactLink,
CompactMix,
CompactPlaylist,
CompactStation,
CompactVideo,
ConfirmDialog,
ContinuationItem,
CopyLink,
CreatePlaylistDialog,
DefaultPromoPanel,
DidYouMean,
DownloadButton,
Dropdown,
@@ -351,6 +367,8 @@ const map: Record<string, YTNodeConstructor> = {
ExpandedShelfContents,
FeedFilterChipBar,
FeedTabbedHeader,
GameCard,
GameDetails,
Grid,
GridChannel,
GridHeader,
@@ -361,6 +379,7 @@ const map: Record<string, YTNodeConstructor> = {
HorizontalCardList,
HorizontalList,
IconLink,
InteractiveTabbedHeader,
ItemSection,
ItemSectionHeader,
ItemSectionTab,
@@ -467,6 +486,7 @@ const map: Record<string, YTNodeConstructor> = {
PlayerOverlayAutoplay,
PlayerStoryboardSpec,
Playlist,
PlaylistCustomThumbnail,
PlaylistHeader,
PlaylistInfoCardContent,
PlaylistMetadata,
@@ -485,6 +505,7 @@ const map: Record<string, YTNodeConstructor> = {
ProfileColumnStats,
ProfileColumnStatsEntry,
ProfileColumnUserInfo,
RecognitionShelf,
ReelItem,
ReelShelf,
RelatedChipCloud,
@@ -523,6 +544,7 @@ const map: Record<string, YTNodeConstructor> = {
Tabbed,
TabbedSearchResults,
TextHeader,
ThumbnailLandscapePortrait,
ThumbnailOverlayBottomPanel,
ThumbnailOverlayEndorsement,
ThumbnailOverlayHoverText,
@@ -539,6 +561,7 @@ const map: Record<string, YTNodeConstructor> = {
ToggleButton,
ToggleMenuServiceItem,
Tooltip,
TopicChannelDetails,
TwoColumnBrowseResults,
TwoColumnSearchResults,
TwoColumnWatchNextResults,
@@ -546,6 +569,7 @@ const map: Record<string, YTNodeConstructor> = {
VerticalList,
VerticalWatchCardList,
Video,
VideoCard,
VideoInfoCardContent,
VideoOwner,
VideoPrimaryInfo,
@@ -558,7 +582,7 @@ const map: Record<string, YTNodeConstructor> = {
WatchNextTabbedResults
};
export const YTNodes = map;
const map: Record<string, YTNodeConstructor> = YTNodes;
/**
* @param name - Name of the node to be parsed