mirror of
https://github.com/LuanRT/YouTube.js.git
synced 2026-06-27 00:29:16 +00:00
fix(Parser): Add SortFilterHeader (#563)
* Fix for SortFilterHeader * fix(Settings): Use `YTNode#is` to identify headers with a title --------- Co-authored-by: LuanRT <luan.lrt4@gmail.com>
This commit is contained in:
@@ -3,18 +3,19 @@ import { Parser, type RawNode } from '../index.js';
|
||||
import ItemSectionHeader from './ItemSectionHeader.js';
|
||||
import ItemSectionTabbedHeader from './ItemSectionTabbedHeader.js';
|
||||
import CommentsHeader from './comments/CommentsHeader.js';
|
||||
import SortFilterHeader from './SortFilterHeader.js';
|
||||
|
||||
export default class ItemSection extends YTNode {
|
||||
static type = 'ItemSection';
|
||||
|
||||
header: CommentsHeader | ItemSectionHeader | ItemSectionTabbedHeader | null;
|
||||
header: CommentsHeader | ItemSectionHeader | ItemSectionTabbedHeader | SortFilterHeader | null;
|
||||
contents: ObservedArray<YTNode>;
|
||||
target_id?: string;
|
||||
continuation?: string;
|
||||
|
||||
constructor(data: RawNode) {
|
||||
super();
|
||||
this.header = Parser.parseItem(data.header, [ CommentsHeader, ItemSectionHeader, ItemSectionTabbedHeader ]);
|
||||
this.header = Parser.parseItem(data.header, [ CommentsHeader, ItemSectionHeader, ItemSectionTabbedHeader, SortFilterHeader ]);
|
||||
this.contents = Parser.parseArray(data.contents);
|
||||
|
||||
if (data.targetId || data.sectionIdentifier) {
|
||||
|
||||
13
src/parser/classes/SortFilterHeader.ts
Normal file
13
src/parser/classes/SortFilterHeader.ts
Normal file
@@ -0,0 +1,13 @@
|
||||
import { YTNode } from '../helpers.js';
|
||||
import { Parser, YTNodes, type RawNode } from '../index.js';
|
||||
|
||||
export default class SortFilterHeader extends YTNode {
|
||||
static type = 'SortFilterHeader';
|
||||
|
||||
filter_menu: YTNodes.SortFilterSubMenu | null;
|
||||
|
||||
constructor(data: RawNode) {
|
||||
super();
|
||||
this.filter_menu = Parser.parseItem(data.filterMenu, YTNodes.SortFilterSubMenu);
|
||||
}
|
||||
}
|
||||
@@ -351,6 +351,7 @@ export { default as SingleColumnMusicWatchNextResults } from './classes/SingleCo
|
||||
export { default as SingleHeroImage } from './classes/SingleHeroImage.js';
|
||||
export { default as SlimOwner } from './classes/SlimOwner.js';
|
||||
export { default as SlimVideoMetadata } from './classes/SlimVideoMetadata.js';
|
||||
export { default as SortFilterHeader } from './classes/SortFilterHeader.js';
|
||||
export { default as SortFilterSubMenu } from './classes/SortFilterSubMenu.js';
|
||||
export { default as StructuredDescriptionContent } from './classes/StructuredDescriptionContent.js';
|
||||
export { default as StructuredDescriptionPlaylistLockup } from './classes/StructuredDescriptionPlaylistLockup.js';
|
||||
|
||||
@@ -8,9 +8,11 @@ import SectionList from '../classes/SectionList.js';
|
||||
import SettingsOptions from '../classes/SettingsOptions.js';
|
||||
import SettingsSidebar from '../classes/SettingsSidebar.js';
|
||||
import SettingsSwitch from '../classes/SettingsSwitch.js';
|
||||
import CommentsHeader from '../classes/comments/CommentsHeader.js';
|
||||
import ItemSectionHeader from '../classes/ItemSectionHeader.js';
|
||||
import ItemSectionTabbedHeader from '../classes/ItemSectionTabbedHeader.js';
|
||||
import Tab from '../classes/Tab.js';
|
||||
import TwoColumnBrowseResults from '../classes/TwoColumnBrowseResults.js';
|
||||
|
||||
import type Actions from '../../core/Actions.js';
|
||||
import type { ApiResponse } from '../../core/Actions.js';
|
||||
import type { IBrowseResponse } from '../types/ParsedResponse.js';
|
||||
@@ -42,7 +44,7 @@ class Settings {
|
||||
this.introduction = contents?.shift()?.contents?.firstOfType(PageIntroduction);
|
||||
|
||||
this.sections = contents?.map((el: ItemSection) => ({
|
||||
title: el.header?.title.toString() || null,
|
||||
title: el.header?.is(CommentsHeader, ItemSectionHeader, ItemSectionTabbedHeader) ? el.header.title.toString() : null,
|
||||
contents: el.contents
|
||||
}));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user