mirror of
https://github.com/LuanRT/YouTube.js.git
synced 2026-07-03 09:35:05 +00:00
feat: add full support for refinement cards
This commit is contained in:
@@ -5,7 +5,7 @@ const Text = require('./Text');
|
||||
class RichListHeader {
|
||||
constructor(data) {
|
||||
this.title = new Text(data.title);
|
||||
this.type = data.icon.iconType;
|
||||
this.icon_type = data.icon.iconType;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -8,9 +8,9 @@ class SearchRefinementCard {
|
||||
type = 'searchRefinementCardRenderer';
|
||||
|
||||
constructor(data) {
|
||||
this.thumbnail = new Thumbnail(data.thumbnail).thumbnails;
|
||||
this.thumbnails = new Thumbnail(data.thumbnail).thumbnails;
|
||||
this.endpoint = new NavigationEndpoint(data.searchEndpoint);
|
||||
this.query = new Text(data.query);
|
||||
this.query = new Text(data.query).toString();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -9,10 +9,17 @@ class Shelf {
|
||||
|
||||
constructor(data) {
|
||||
this.title = new Text(data.title);
|
||||
this.endpoint = new NavigationEndpoint(data.endpoint);
|
||||
|
||||
data.endpoint &&
|
||||
(this.endpoint = new NavigationEndpoint(data.endpoint));
|
||||
|
||||
this.content = Parser.parse(data.content) || [];
|
||||
this.icon_type = data.icon?.iconType || null;
|
||||
this.menu = Parser.parse(data.menu);
|
||||
|
||||
data.icon?.iconType &&
|
||||
(this.icon_type = data.icon?.iconType);
|
||||
|
||||
data.menu &&
|
||||
(this.menu = Parser.parse(data.menu));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -5,18 +5,9 @@ const Parser = require('..');
|
||||
class TwoColumnBrowseResults {
|
||||
type = 'twoColumnBrowseResultsRenderer';
|
||||
|
||||
#data;
|
||||
|
||||
constructor(data) {
|
||||
this.#data = data;
|
||||
}
|
||||
|
||||
get tabs() {
|
||||
return Parser.parse(this.#data.tabs);
|
||||
}
|
||||
|
||||
get secondary_contents() {
|
||||
return Parser.parse(this.#data.secondaryContents);
|
||||
this.tabs = Parser.parse(data.tabs);
|
||||
this.secondary_contents = Parser.parse(data.secondaryContents);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -5,18 +5,9 @@ const Parser = require('..');
|
||||
class TwoColumnSearchResults {
|
||||
type = 'twoColumnSearchResultsRenderer';
|
||||
|
||||
#data;
|
||||
|
||||
constructor(data) {
|
||||
this.#data = data;
|
||||
}
|
||||
|
||||
get primary_contents() {
|
||||
return Parser.parse(this.#data.primaryContents);
|
||||
}
|
||||
|
||||
get secondary_contents() {
|
||||
return Parser.parse(this.#data.secondaryContents);
|
||||
this.primary_contents = Parser.parse(data.primaryContents);
|
||||
this.secondary_contents = Parser.parse(data.secondaryContents);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -5,22 +5,10 @@ const Parser = require('..');
|
||||
class TwoColumnWatchNextResults {
|
||||
type = 'twoColumnWatchNextResults';
|
||||
|
||||
#data;
|
||||
|
||||
constructor(data) {
|
||||
this.#data = data;
|
||||
}
|
||||
|
||||
get results() {
|
||||
return Parser.parse(this.#data.results.results.contents);
|
||||
}
|
||||
|
||||
get secondary_results() {
|
||||
return Parser.parse(this.#data.secondaryResults?.secondaryResults.results);
|
||||
}
|
||||
|
||||
get conversation_bar() {
|
||||
return Parser.parse(this.#data?.conversationBar);
|
||||
this.results = Parser.parse(data.results?.results.contents);
|
||||
this.secondary_results = Parser.parse(data.secondaryResults?.secondaryResults.results);
|
||||
this.conversation_bar = Parser.parse(data?.conversationBar);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -82,7 +82,7 @@ class Parser {
|
||||
return formats?.map((format) => new Format(format)) || [];
|
||||
}
|
||||
|
||||
static parse(data, ctx) {
|
||||
static parse(data) {
|
||||
if (!data)
|
||||
return null;
|
||||
|
||||
@@ -97,7 +97,7 @@ class Parser {
|
||||
|
||||
try {
|
||||
const TargetClass = require('./classes/' + classname);
|
||||
results.push(new TargetClass(item[keys[0]], ctx));
|
||||
results.push(new TargetClass(item[keys[0]]));
|
||||
} catch (err) {
|
||||
this.formatError({ classname, classdata: item[keys[0]], err });
|
||||
return null;
|
||||
@@ -109,11 +109,11 @@ class Parser {
|
||||
const keys = Object.keys(data);
|
||||
const classname = this.sanitizeClassName(keys[0]);
|
||||
|
||||
if (this.shouldIgnore(classname))return;
|
||||
if (this.shouldIgnore(classname)) return;
|
||||
|
||||
try {
|
||||
const TargetClass = require('./classes/' + classname);
|
||||
return new TargetClass(data[keys[0]], ctx);
|
||||
return new TargetClass(data[keys[0]]);
|
||||
} catch (err) {
|
||||
this.formatError({ classname, classdata: data[keys[0]], err });
|
||||
return null;
|
||||
|
||||
Reference in New Issue
Block a user