mirror of
https://github.com/LuanRT/YouTube.js.git
synced 2026-06-19 12:31:17 +00:00
refactor: Clean up & fix old code
Other changes: - Renamed "getShortsWatchItem" to "getShortsVideoInfo". - Fixed `ShortFormVideoInfo`. This never worked for me ever since it was introduced. Turned out it was just implemented incorrectly. - Moved `basic_info` extraction to `MediaInfo`. Less of a pain to maintain as we only have to modify one file. - Removed unneeded tsdoc comments. - Fixed `Innertube#getStreamingData()`. Now it actually returns a deciphered format. - Simplified some types.
This commit is contained in:
@@ -1,14 +0,0 @@
|
||||
import { YTNode } from '../helpers.js';
|
||||
import type { RawNode } from '../index.js';
|
||||
import NavigationEndpoint from './NavigationEndpoint.js';
|
||||
|
||||
export default class Command extends YTNode {
|
||||
static type = 'Command';
|
||||
|
||||
endpoint: NavigationEndpoint;
|
||||
|
||||
constructor(data: RawNode) {
|
||||
super();
|
||||
this.endpoint = new NavigationEndpoint(data);
|
||||
}
|
||||
}
|
||||
@@ -13,7 +13,7 @@ export default class CompactVideo extends YTNode {
|
||||
|
||||
id: string;
|
||||
thumbnails: Thumbnail[];
|
||||
rich_thumbnail?: SuperParsedResult<YTNode>;
|
||||
rich_thumbnail?: YTNode;
|
||||
title: Text;
|
||||
author: Author;
|
||||
view_count: Text;
|
||||
@@ -36,7 +36,7 @@ export default class CompactVideo extends YTNode {
|
||||
this.thumbnails = Thumbnail.fromResponse(data.thumbnail) || null;
|
||||
|
||||
if (Reflect.has(data, 'richThumbnail')) {
|
||||
this.rich_thumbnail = Parser.parse(data.richThumbnail);
|
||||
this.rich_thumbnail = Parser.parseItem(data.richThumbnail);
|
||||
}
|
||||
|
||||
this.title = new Text(data.title);
|
||||
|
||||
@@ -27,8 +27,8 @@ export default class NavigationEndpoint extends YTNode {
|
||||
constructor(data: RawNode) {
|
||||
super();
|
||||
|
||||
if (Reflect.has(data || {}, 'innertubeCommand'))
|
||||
data = data.innertubeCommand;
|
||||
if (data && (data.innertubeCommand || data.command))
|
||||
data = data.innertubeCommand || data.command;
|
||||
|
||||
if (Reflect.has(data || {}, 'openPopupAction'))
|
||||
this.open_popup = new OpenPopupAction(data.openPopupAction);
|
||||
@@ -92,13 +92,14 @@ export default class NavigationEndpoint extends YTNode {
|
||||
case 'browseEndpoint':
|
||||
return '/browse';
|
||||
case 'watchEndpoint':
|
||||
case 'reelWatchEndpoint':
|
||||
return '/player';
|
||||
case 'searchEndpoint':
|
||||
return '/search';
|
||||
case 'watchPlaylistEndpoint':
|
||||
return '/next';
|
||||
case 'liveChatItemContextMenuEndpoint':
|
||||
return 'live_chat/get_item_context_menu';
|
||||
return '/live_chat/get_item_context_menu';
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -6,6 +6,7 @@ import InfoPanelContainer from './InfoPanelContainer.js';
|
||||
import LikeButton from './LikeButton.js';
|
||||
import ReelPlayerHeader from './ReelPlayerHeader.js';
|
||||
import PivotButton from './PivotButton.js';
|
||||
import SubscribeButton from './SubscribeButton.js';
|
||||
|
||||
export default class ReelPlayerOverlay extends YTNode {
|
||||
static type = 'ReelPlayerOverlay';
|
||||
@@ -29,7 +30,7 @@ export default class ReelPlayerOverlay extends YTNode {
|
||||
this.menu = Parser.parseItem(data.menu, Menu);
|
||||
this.next_item_button = Parser.parseItem(data.nextItemButton, Button);
|
||||
this.prev_item_button = Parser.parseItem(data.prevItemButton, Button);
|
||||
this.subscribe_button_renderer = Parser.parseItem(data.subscribeButtonRenderer, Button);
|
||||
this.subscribe_button_renderer = Parser.parseItem(data.subscribeButtonRenderer, [ Button, SubscribeButton ]);
|
||||
this.style = data.style;
|
||||
this.view_comments_button = Parser.parseItem(data.viewCommentsButton, Button);
|
||||
this.share_button = Parser.parseItem(data.shareButton, Button);
|
||||
|
||||
@@ -17,8 +17,8 @@ export default class ThumbnailOverlayToggleButton extends YTNode {
|
||||
untoggled: string;
|
||||
};
|
||||
|
||||
toggled_endpoint: NavigationEndpoint;
|
||||
untoggled_endpoint: NavigationEndpoint;
|
||||
toggled_endpoint?: NavigationEndpoint;
|
||||
untoggled_endpoint?: NavigationEndpoint;
|
||||
|
||||
constructor(data: RawNode) {
|
||||
super();
|
||||
@@ -36,7 +36,10 @@ export default class ThumbnailOverlayToggleButton extends YTNode {
|
||||
untoggled: data.untoggledTooltip
|
||||
};
|
||||
|
||||
this.toggled_endpoint = new NavigationEndpoint(data.toggledServiceEndpoint);
|
||||
this.untoggled_endpoint = new NavigationEndpoint(data.untoggledServiceEndpoint);
|
||||
if (data.toggledServiceEndpoint)
|
||||
this.toggled_endpoint = new NavigationEndpoint(data.toggledServiceEndpoint);
|
||||
|
||||
if (data.untoggledServiceEndpoint)
|
||||
this.untoggled_endpoint = new NavigationEndpoint(data.untoggledServiceEndpoint);
|
||||
}
|
||||
}
|
||||
@@ -1,7 +1,8 @@
|
||||
import Text from '../misc/Text.js';
|
||||
import { YTNode } from '../../helpers.js';
|
||||
import type { RawNode } from '../../index.js';
|
||||
class UpdateToggleButtonTextAction extends YTNode {
|
||||
|
||||
export default class UpdateToggleButtonTextAction extends YTNode {
|
||||
static type = 'UpdateToggleButtonTextAction';
|
||||
|
||||
default_text: string;
|
||||
@@ -14,6 +15,4 @@ class UpdateToggleButtonTextAction extends YTNode {
|
||||
this.toggled_text = new Text(data.toggledText).toString();
|
||||
this.button_id = data.buttonId;
|
||||
}
|
||||
}
|
||||
|
||||
export default UpdateToggleButtonTextAction;
|
||||
}
|
||||
@@ -1,18 +1,19 @@
|
||||
import { YTNode, type SuperParsedResult } from '../../helpers.js';
|
||||
import type { ObservedArray } from '../../helpers.js';
|
||||
import { YTNode } from '../../helpers.js';
|
||||
import type { RawNode } from '../../index.js';
|
||||
import { Parser } from '../../index.js';
|
||||
|
||||
export default class MultiPageMenu extends YTNode {
|
||||
static type = 'MultiPageMenu';
|
||||
|
||||
header: SuperParsedResult<YTNode>;
|
||||
sections: SuperParsedResult<YTNode>;
|
||||
header: YTNode;
|
||||
sections: ObservedArray<YTNode>;
|
||||
style: string;
|
||||
|
||||
constructor(data: RawNode) {
|
||||
super();
|
||||
this.header = Parser.parse(data.header);
|
||||
this.sections = Parser.parse(data.sections);
|
||||
this.header = Parser.parseItem(data.header);
|
||||
this.sections = Parser.parseArray(data.sections);
|
||||
this.style = data.style;
|
||||
}
|
||||
}
|
||||
@@ -1,19 +1,19 @@
|
||||
import type { SuperParsedResult } from '../../helpers.js';
|
||||
import type { ObservedArray } from '../../helpers.js';
|
||||
import { YTNode } from '../../helpers.js';
|
||||
import type { RawNode } from '../../index.js';
|
||||
import { Parser } from '../../index.js';
|
||||
import Button from '../Button.js';
|
||||
import Text from '../misc/Text.js';
|
||||
|
||||
export default class SimpleMenuHeader extends YTNode {
|
||||
static type = 'SimpleMenuHeader';
|
||||
|
||||
title: Text;
|
||||
buttons: SuperParsedResult<YTNode>;
|
||||
buttons: ObservedArray<Button>;
|
||||
|
||||
constructor(data: RawNode) {
|
||||
super();
|
||||
this.title = new Text(data.title);
|
||||
// @TODO: Check if this is of type `Button`.
|
||||
this.buttons = Parser.parse(data.buttons);
|
||||
this.buttons = Parser.parseArray(data.buttons, Button);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user