@duell10111/youtubei.js
Version:
A JavaScript client for YouTube's private API, known as InnerTube.
79 lines • 4.24 kB
JavaScript
var _MyYoutubeFeed_page, _MyYoutubeFeed_actions, _MyYoutubeFeed_continuation;
import { __classPrivateFieldGet, __classPrivateFieldSet } from "tslib";
import { GridContinuation, Parser } from '../index.js';
import { observe } from '../helpers.js';
import { InnertubeError } from '../../utils/Utils.js';
import Tab from '../classes/Tab.js';
import TvSecondaryNavSection from '../classes/TvSecondaryNavSection.js';
import Grid from '../classes/Grid.js';
import TvSurfaceContent from '../classes/TvSurfaceContent.js';
class MyYoutubeFeed {
constructor(response, actions) {
_MyYoutubeFeed_page.set(this, void 0);
_MyYoutubeFeed_actions.set(this, void 0);
_MyYoutubeFeed_continuation.set(this, void 0);
__classPrivateFieldSet(this, _MyYoutubeFeed_actions, actions, "f");
__classPrivateFieldSet(this, _MyYoutubeFeed_page, Parser.parseResponse(response.data), "f");
const navSection = __classPrivateFieldGet(this, _MyYoutubeFeed_page, "f").contents_memo?.getType(TvSecondaryNavSection).first();
if (navSection) {
this.tabs = navSection.tabs ?? undefined;
}
const selectedTab = __classPrivateFieldGet(this, _MyYoutubeFeed_page, "f").contents_memo?.getType(Tab).find((t) => t.selected);
if (selectedTab) {
this.title = selectedTab.title;
const content = selectedTab.content?.as(TvSurfaceContent)?.content;
if (content?.is(Grid)) {
this.contents = content.contents;
__classPrivateFieldSet(this, _MyYoutubeFeed_continuation, content.continuation ?? undefined, "f");
}
else {
throw new InnertubeError(`No supported content type for MyYoutubeFeed provided. Type ${content?.type}`);
}
}
else if (__classPrivateFieldGet(this, _MyYoutubeFeed_page, "f").contents_memo?.getType(TvSurfaceContent).first()) {
const content = __classPrivateFieldGet(this, _MyYoutubeFeed_page, "f").contents_memo?.getType(TvSurfaceContent).first().content;
if (content?.is(Grid)) {
this.contents = content.contents;
__classPrivateFieldSet(this, _MyYoutubeFeed_continuation, content.continuation ?? undefined, "f");
}
else {
throw new InnertubeError(`No supported content type for MyYoutubeFeed provided. Type ${content?.type}`);
}
}
// Continuations
if (__classPrivateFieldGet(this, _MyYoutubeFeed_page, "f").continuation_contents?.is(GridContinuation)) {
this.contents = __classPrivateFieldGet(this, _MyYoutubeFeed_page, "f").continuation_contents.contents ?? undefined;
__classPrivateFieldSet(this, _MyYoutubeFeed_continuation, __classPrivateFieldGet(this, _MyYoutubeFeed_page, "f").continuation_contents.continuation, "f");
}
}
/**
* Retrieves current select tab feed continuation.
*/
async getContinuation() {
if (!__classPrivateFieldGet(this, _MyYoutubeFeed_continuation, "f"))
throw new InnertubeError('Continuation not found.');
const response = await __classPrivateFieldGet(this, _MyYoutubeFeed_actions, "f").execute('/browse', {
client: 'TV',
continuation: __classPrivateFieldGet(this, _MyYoutubeFeed_continuation, "f")
});
return new MyYoutubeFeed(response, __classPrivateFieldGet(this, _MyYoutubeFeed_actions, "f"));
}
async selectTab(tab) {
const response = await tab.endpoint.call(__classPrivateFieldGet(this, _MyYoutubeFeed_actions, "f"), {
client: 'TV'
});
return new MyYoutubeFeed(response, __classPrivateFieldGet(this, _MyYoutubeFeed_actions, "f"));
}
get page() {
return __classPrivateFieldGet(this, _MyYoutubeFeed_page, "f");
}
get items() {
return this.contents || observe([]);
}
get has_continuation() {
return !!__classPrivateFieldGet(this, _MyYoutubeFeed_continuation, "f");
}
}
_MyYoutubeFeed_page = new WeakMap(), _MyYoutubeFeed_actions = new WeakMap(), _MyYoutubeFeed_continuation = new WeakMap();
export default MyYoutubeFeed;
//# sourceMappingURL=MyYoutubeFeed.js.map