UNPKG

@duell10111/youtubei.js

Version:

A JavaScript client for YouTube's private API, known as InnerTube.

79 lines 4.24 kB
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