Compare commits

...

436 Commits

Author SHA1 Message Date
github-actions[bot]
401b4c3858 chore(main): release 13.1.0 (#880)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-02-21 19:15:11 -03:00
Muhammad Mujtaba Naveed
5aecd0ace9 fix(innertube): Allowing getStreamingData to use client (#895) 2025-02-21 19:12:19 -03:00
absidue
432571769e revert: "fix(toDash): Fix default audio stream for dubbed movie trailers (#858)" (#896)
This reverts commit 00546909c0.
2025-02-21 19:10:04 -03:00
Dave Nicolson
2b4219959c fix(Playlist): is_editable (#894)
* Fix is_editable

* Add can_reorder
2025-02-21 19:07:56 -03:00
Dave Nicolson
b731db86c5 fix(DialogView): Type mismatch (#897) 2025-02-21 19:04:21 -03:00
Dave Nicolson
e2ee822b9d Fix getPlaylist playlist ID (#898) 2025-02-21 19:02:29 -03:00
Luan
3243339b37 chore(tests): Remove unneeded continuation test 2025-02-21 18:59:58 -03:00
Luan
c9328c59f9 chore: fix test 2025-02-21 18:56:22 -03:00
Luan
a3fafe2f79 fix(music#getPlaylist): Handle ContinuationItem nodes
Closes #904
2025-02-21 18:52:34 -03:00
Luan
ca7c3164e1 chore(AnimatedThumbnailOverlayView): Refactor thumbnail handling to use Thumbnail class 2025-02-21 18:15:29 -03:00
Luan
02dfcae612 fix(dependencies): Update jintr to version 3.2.1 2025-02-21 18:13:10 -03:00
Izak Filmalter
0cb92d9620 feat(parser): Add AnimatedThumbnailOverlayView (#903)
* Add AnimatedThumbnailOverlayView parser.

* Update nodes.ts
2025-02-17 11:41:17 -03:00
Nansess
5394edc9bd chore(constants): update WEB_CREATOR version (#893)
* update WEB_CREATOR version

* Update Constants.ts
2025-02-15 11:07:51 -03:00
absidue
7d5c972c98 fix(Innertube): Properly encoded params in getPost() (#882) 2025-02-13 17:31:12 -03:00
EdamAmex
b5c9581bec docs(installation): add install command for deno (#885)
* docs(installation): add install command for deno

* Update README.md
2025-02-13 17:30:11 -03:00
Loyalsoldier
774b3a7524 fix(FormatUtils): itag matching (#886) 2025-02-13 17:29:36 -03:00
ChunkyProgrammer
b3a4862151 feat(Channel): Add getCourses method (#883) 2025-02-11 06:10:50 -03:00
absidue
75d39e7afb chore(parser): Simplify d0d48bf525 (#888) 2025-02-08 06:00:03 -03:00
absidue
c776b9f349 chore(Utils): Replace private static shim property with a variable (#887) 2025-02-08 05:58:01 -03:00
absidue
0e869020db refactor: Remove internal uses of the .first() and .matchCondition() helpers (#889) 2025-02-08 05:55:39 -03:00
Luan
d0d48bf525 feat(CommentView): Parse prepareAccountCommand 2025-02-05 15:02:48 -03:00
Luan
3f960effa2 fix(Parser): Add UpdateEngagementPanelContentCommand
This command is sometimes used to open the Transcript panel.
2025-02-05 06:55:13 -03:00
Loyalsoldier
1c1577e85f feat(FormatUtils): choose more specific format by itag or codec (#884) 2025-01-28 15:43:09 -03:00
Luan
424c65356c fix(LockupView): Add overlay nodes used by VIDEO views 2025-01-25 11:59:17 -03:00
Luan
3ffdee9554 fix(LockupMetadataView): Parse menuButton 2025-01-25 11:41:01 -03:00
Luan
083aec1c80 fix(LockupView): Fix content_image parsing 2025-01-25 11:33:38 -03:00
Luan
6d57353a80 feat(CompactLink): Parse subtitle, iconType, and iconType 2025-01-24 11:22:29 -03:00
Luan
32125c7045 feat(CommentView): Parse some extra tooltips 2025-01-21 07:51:55 -03:00
github-actions[bot]
0802cb8abd chore(main): release 13.0.0 (#843)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-01-20 16:51:49 -03:00
Luan
ad8baac76f chore: update docs 2025-01-20 16:49:04 -03:00
Luan
e54e499ff5 refactor!: Remove web.bundle.min
Everybody uses minifiers these days anyway..
2025-01-20 16:05:07 -03:00
jonz94
a035b71696 fix(LiveChatTextMessage): Make some fields optional (#877)
- Mark `menu_endpoint` property as optional
- Mark `context_menu_accessibility_label` property as optional
2025-01-20 15:46:34 -03:00
Konstantin
49be72dd04 chore: Enable sourceMaps to show error traces related to typescript files (#873)
* chore: enable sourceMaps again to show error traces related to typescript files and allow local debugging for development

* chore: create source maps for all bundles

---------

Co-authored-by: Luan <luan.lrt4@gmail.com>
2025-01-20 15:46:03 -03:00
absidue
7a7139e32d refactor(Constants): Use as const instead of Object.freeze() (#879) 2025-01-20 15:09:56 -03:00
absidue
06887e99fb perf(constants): Move the client name IDs into their own CLIENT_NAME_IDS object (#875) 2025-01-17 07:19:53 -03:00
Luan
4d36655b2d feat(Session): Allow using a fixed user agent for InnerTube requests (#876)
Certain attestation challenges are bound to the user agent (e.g, WebPo), so we can't just use a random one for every request.
2025-01-17 06:06:36 -03:00
Luan
83de198351 chore(examples): Update deps & patch shaka 2025-01-16 18:08:04 -03:00
Luan
50e4b4ee0b chore(examples): Don't proxy BotGuard requests 2025-01-16 17:55:33 -03:00
Luan
57eba83cb6 chore(examples): Update browser example 2025-01-15 14:23:46 -03:00
absidue
1a3d663cc5 perf: Optimise DASH manifest generation (#870) 2025-01-13 07:43:25 -03:00
Luan
33c27ddcb5 feat(Innertube): Add getAttestationChallenge (#869)
* feat(Innertube): Add `getAttestationChallenge`

YouTube has recently started using this InnerTube endpoint to fetch challenges for WebPo generation.

* chore: lint
2025-01-11 19:42:18 -03:00
Luan
50539bca9c chore(ShortsLockupView): Use a shorter import 2025-01-11 17:47:24 -03:00
Konstantin
2913d5f43d feat(Music): Add continuation support for "Up next" tab in TrackInfo (#770)
* chore: tests for playlist panel

* chore: add possibility to continue music playlist panel

* chore: allow further playlist continuation

* revert: further revert Music.ts changes

* chore: rename test description

* chore: add check and remove TODO

* fix: fix issue with new code

* chore: remove documentation

* fix: fix test by using some video from homepage
2025-01-11 17:44:29 -03:00
ChunkyProgrammer
360b29ee60 feat(Innertube): Add ability to get individual community posts and community post comments (#861)
* feat(Innertube): Add method to get a community post

* feat(Innertube): add a method to get Community Post comments

* Follow naming conventions of the project instead of using C# conventions

---------

Co-authored-by: absidue <48293849+absidue@users.noreply.github.com>
2025-01-11 17:30:19 -03:00
jonz94
732a30c09f fix(Text#fromAttributed): Fix StyleRun assuming that the startIndex and length always exist (#862)
In AttributedText, styleRuns may not always include the `startIndex` or `length` properties
- If `startIndex` is missing, we assume the style applies from the beginning of the text
- If `length` is missing, we assume the style applies to the entire text
2025-01-11 17:27:16 -03:00
jonz94
0a3104bafc feat(ContentMetadataView): Parse enableTruncation (#863) 2025-01-11 17:25:13 -03:00
jonz94
9025122484 feat(parser): Update LiveChatTextMessage (#864)
Update `LiveChatTextMessage` to extend `YTNode` rather than
`LiveChatMessageBase` to better align with the latest data
provided by Innertube.

- Add `timestamp_usec` property
- Add `timestamp_text` property
- Add `context_menu_accessibility_label` property
- Add `before_content_buttons` property
2025-01-11 17:23:22 -03:00
absidue
66cbee268d chore(parser): Simplify VideoInfo#getTrailerInfo (#867) 2025-01-11 17:22:40 -03:00
Luan
f3c777b316 fix(Text#toHTML): Return empty string if the text is undefined 2024-12-31 19:08:55 -03:00
Luan
f76a8e5d75 refactor(Parser): Update view models to use RendererContext.ts
May or may not be a breaking change for some.
2024-12-31 06:41:17 -03:00
jonz94
3c28c0d2c2 feat(parser): Update LiveChatPaidSticker (#849)
* Add `sticker_accessibility_label` property
* Add `sticker_display_width` property
* Add `sticker_display_height` property
* Add `context_menu_accessibility_label` property
* Add `timestamp_usec` property
* Add `is_v2_style` property
2024-12-31 06:24:12 -03:00
Konstantin
48460e4184 feat(Playlists): Implement addToLibrary and removeFromLibrary (#844)
* chore: add possibility to add playlists to user library

* chore: fix playlist dislike endpoint

* chore: adapt to new structure

* refactor: renamed method names
2024-12-31 06:23:28 -03:00
jonz94
6536801ec2 fix(ButtonCardView): Correct typo (#855) 2024-12-31 06:18:56 -03:00
jonz94
b4a947a9eb feat(parser): Update LiveChatViewerEngagementMessage (#856)
Update `LiveChatViewerEngagementMessage` to extend `YTNode` rather than
`LiveChatMessageBase` to better align with the latest data provided by
Innertube.
2024-12-31 06:14:49 -03:00
absidue
00546909c0 fix(toDash): Fix default audio stream for dubbed movie trailers (#858) 2024-12-31 06:12:21 -03:00
jonz94
5f899fcdb3 feat(parser): Update Button (#857)
* Add `style` property
* Add `size` property
* Add `target_id` property
* Parse `data.accessibilityData.accessibilityData.label` if `data.accessibility.label` is unavailable
2024-12-31 06:11:31 -03:00
Luan
c6310228fe feat(Parser): Add AvatarStackView 2024-12-31 06:05:49 -03:00
Luan
3a11b99429 feat(Parser): Implement utility class to parse rendererContext
This field is found in most of the newer view model nodes. It can contain accessibility labels, text, commands or nothing but logging info.
2024-12-31 06:04:53 -03:00
Luan
a602a317aa feat(PageHeaderView): Parse heroImage 2024-12-31 05:23:35 -03:00
Luan
c2dd803eea fix(DescriptionPreviewView): Parsing errors when certain fields are missing 2024-12-31 05:16:36 -03:00
Luan
88af6d89a5 feat(ToggleButtonView): Add is_toggled 2024-12-30 15:04:18 -03:00
jonz94
826a9541a4 fix(sendMessage): Handle RunAttestationCommand in response actions (#859)
* fix(sendMessage): Handle `RunAttestationCommand` in response actions

Handle the case when `RunAttestationCommand` is included in the
`sendMessage()` response actions.

* style: trim trailing whitespace
2024-12-27 02:41:30 -03:00
Luan
913dcc74ea fix(TextRun): Add img element only if an URL is available 2024-12-25 00:19:26 -03:00
Luan
b7c0421490 chore(Innertube#getSearchSuggestions): Use fetch_function instead of fetch
It is not an InnerTube request.
2024-12-23 22:29:08 -03:00
Luan
75b8964180 feat(SubscribeButton): Add unsubscribe_text 2024-12-23 21:33:42 -03:00
jonz94
5f83a7416d feat(parser): Update LiveChatTickerPaidStickerItem (#848)
The `LiveChatTickerPaidStickerItem` class has been updated to extend
`YTNode` instead of `LiveChatTickerPaidMessageItem` to better align with
the latest data provided by InnerTube
2024-12-22 16:09:34 -03:00
jonz94
ef37aa0a5a feat(LiveChatPaidMessage): Parse headerOverlayImage and lowerBumper (#851)
* feat(LiveChatPaidMessage): Parse `headerOverlayImage` and `lowerBumper`

When a viewer donates for the 1st, 3rd, 5th, 10th, or 20th time,
there will be a special type of `LiveChatPaidMessage` that includes an
animated image in the header, followed by a bumper text message.

* chore: npm run build:parser-map
2024-12-22 16:08:37 -03:00
Luan
06df214bc9 refactor: Include po tokens in all watch requests
+ Fix empty `serviceIntegrityDimensions` being sent when no potoken is provided.
2024-12-22 15:58:48 -03:00
absidue
5050f4866b chore(parser): Hoist API_PATH constants in endpoint nodes (#852) 2024-12-21 00:14:18 -03:00
Luan
78e79519e6 refactor(MultiPageMenuNotificationSection): Parse items as an array 2024-12-18 12:25:19 -03:00
Luan
c3d4b2d60a chore(parser): Fix continuation types 2024-12-18 12:18:40 -03:00
Luan
45b734288e feat(parser): Parse OpenPopupAction in onResponseReceivedEndpoints arrays 2024-12-18 12:06:36 -03:00
Luan
e571ee2426 feat(RichGrid): Parse targetId 2024-12-17 17:34:16 -03:00
Luan
5e8e42c9ed chore(getSearchSuggestions): Pass in SUGG_EXP_ID 2024-12-17 15:33:33 -03:00
Luan
c61db19f2e feat(getSearchSuggestions): Add optional pq param for better suggestions 2024-12-17 15:23:49 -03:00
jonz94
342fdd1db3 feat(parser): Add ReplaceLiveChatAction (#847) 2024-12-15 01:09:18 -03:00
jonz94
73362c68fb feat(parser): Update LiveChatPaidMessage (#846)
* Add `author_name_text_color` property
* Add `context_menu_accessibility_label` property
* Add `timestamp_usec` property
* Mark `timestamp_text` property as optional
* Add `timestamp_color` property
* Add `text_input_background_color` property
* Add `creator_heart_button` property
* Add `is_v2_style` property
* Add `reply_button` property
2024-12-15 01:09:02 -03:00
jonz94
29e8d3015a feat(parser): Update LiveChatTickerPaidMessageItem (#845)
* Change `duration_sec` property type from `string` to `number`
* Change `full_duration_sec` property type from `string` to `number`
* Handle the scenario where the author's name is represented as `authUsername`
* Mark `amount` property as optional
* Add `start_background_color` property
* Add `amount_text_color` property
* Add `end_background_color` property
* Add `animation_origin` property
* Add `open_engagement_panel_command` property
2024-12-15 01:04:05 -03:00
Luan
523700b728 fix(getSearchSuggestions): Allow empty queries
Can be used to retrieve search suggestion history when logged in.
2024-12-14 16:20:41 -03:00
Luan
0b73702bdd chore(HowThisWasMadeSectionView): Make some fields optional
Just in case.
2024-12-14 12:41:24 -03:00
Luan
e95402731e chore: lint 2024-12-14 12:35:55 -03:00
Luan
5da8a66551 feat(Parser): Add HowThisWasMadeSectionView node 2024-12-14 12:32:29 -03:00
ChunkyProgrammer
c0043d0194 feat(Parser): Parse YpcTrailer in VideoInfo (#842) 2024-12-13 19:50:31 -03:00
github-actions[bot]
3ec1609974 chore(main): release 12.2.0 (#833)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-12-12 10:32:02 -03:00
Luan
25fd979363 chore(deps): Update jintr 2024-12-12 10:30:45 -03:00
jonz94
0c319aacde feat(parser): Update LiveChatMembershipItem (#836) 2024-12-12 09:39:25 -03:00
jonz94
69d42b291c feat(parser): Update LiveChatBanner (#840)
* Mark `viewerIsCreator` property as optional
* Mark `background_type` property as optional
* Add `banner_type` property
* Add `banner_properties_is_ephemeral` property
* Add `banner_properties_auto_collapse_delay_seconds` property
2024-12-12 09:38:44 -03:00
jonz94
9a9bb76a92 feat: add VideoMetadataCarouselView (#839) 2024-12-12 09:34:07 -03:00
jonz94
0b2b0da957 feat(parser): Add ClientSideToggleMenuItem (#835)
* feat(parser): Add `ClientSideToggleMenuItem`

* feat: parse the command

* feat: handle different type of `ClientSideToggleMenuItem`
2024-12-12 09:31:59 -03:00
jonz94
eeaae6209f feat(parser): Add ButtonCardView (#834) 2024-12-12 09:31:14 -03:00
absidue
13e796123b fix(Player): Fix signature algorithm extraction again (#837) 2024-12-12 09:30:50 -03:00
Luan
5f233ae34e feat(parser): Add ActiveAccountHeader
Found on the 'You' (a.k.a, 'Library') page.
2024-12-10 18:32:31 -03:00
Luan
c1de097ce1 chore(Parser): Don't ignore BackgroundPromo
It turns out this is not an ad at all.
2024-12-10 16:30:23 -03:00
Luan
67f13fffac feat(Actions): Allow auth check to be skipped 2024-12-10 16:12:06 -03:00
Luan
c8173c88e0 feat(parser): Add PlaylistThumbnailOverlay 2024-12-10 13:50:20 -03:00
github-actions[bot]
8e97bbc058 chore(main): release 12.1.0 (#830)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-12-10 10:10:40 -03:00
Luan
283172f220 fix(Player): Bump cache version
This should fix bad (n)sig caches.
2024-12-10 10:08:05 -03:00
absidue
ce4996cea7 fix(Player): Fix signature algorithm extraction (#832) 2024-12-10 09:28:08 -03:00
Luan
ad2ae51b97 feat(parser): Add mobile guide nodes 2024-12-08 17:11:57 -03:00
Luan
4bf125b6a5 feat: Add MWEB client 2024-12-08 17:11:57 -03:00
github-actions[bot]
eaf6d1ab4e chore(main): release 12.0.0 (#790)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-12-05 20:49:54 -03:00
dependabot[bot]
8b2907169b chore(deps): bump path-to-regexp and express (#829)
Bumps [path-to-regexp](https://github.com/pillarjs/path-to-regexp) to 0.1.12 and updates ancestor dependency [express](https://github.com/expressjs/express). These dependencies need to be updated together.


Updates `path-to-regexp` from 0.1.10 to 0.1.12
- [Release notes](https://github.com/pillarjs/path-to-regexp/releases)
- [Changelog](https://github.com/pillarjs/path-to-regexp/blob/master/History.md)
- [Commits](https://github.com/pillarjs/path-to-regexp/compare/v0.1.10...v0.1.12)

Updates `express` from 4.21.1 to 4.21.2
- [Release notes](https://github.com/expressjs/express/releases)
- [Changelog](https://github.com/expressjs/express/blob/4.21.2/History.md)
- [Commits](https://github.com/expressjs/express/compare/4.21.1...4.21.2)

---
updated-dependencies:
- dependency-name: path-to-regexp
  dependency-type: indirect
- dependency-name: express
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-12-05 20:48:18 -03:00
Luan
478205b9d4 chore: update deps 2024-12-05 20:43:04 -03:00
Luan
acfb0c58be fix(Player): Add more ways to find the nsig algo 2024-12-05 19:31:43 -03:00
Luan
6771325bb3 chore(oauth/examples): Remove unneeded scopes
For those getting errors even after removing this:
If you had previously signed in using the same OAuth credentials, you'll have to go to "account" > "security" > "See all connections" (third party apps) and then remove the previously granted access.
2024-12-04 14:37:30 -03:00
Luan
d10fe6834a feat(VideoViewCount): Add extra_short_view_count field 2024-12-04 14:32:15 -03:00
Luan
ec85b0f942 feat(parser): Add ShowEngagementPanelEndpoint 2024-11-28 18:14:25 -03:00
Patrick Kan
a7bb981731 refactor: Cookie-based session fixes and minor additions (#821)
* (fix) `on_behalf_of_user` arg not applied

* (feat) `AccountManager#getInfo()`: Add option to fetch full accounts list
2024-11-28 17:44:30 -03:00
Luan
386257c7b3 chore: catch up 2024-11-27 07:33:23 -03:00
Luan
af3a91645d feat(EngagementPanelTitleHeader): Add contextual_info and menu
Both con contain info about the comments section.
2024-11-27 07:30:10 -03:00
absidue
bbaefb12b3 chore(Utils): Bump WEB version constant to latest version (#818) 2024-11-26 01:49:13 -03:00
absidue
8e50ebd925 feat(parser): Add animated_image to PageHeaderView (#819) 2024-11-26 01:48:52 -03:00
Luan
92acd6ca4d chore: fix HideEngagementPanelEndpoint type
Oops.
2024-11-26 01:23:33 -03:00
Luan
2824900852 feat(parser): Add ChangeEngagementPanelVisibilityEndpoint
Similar to `ChangeEngagementPanelVisibilityAction`
2024-11-26 01:17:14 -03:00
Luan
c2b2d7ad52 feat(parser): Add ChangeEngagementPanelVisibilityAction 2024-11-25 05:33:49 -03:00
Luan
790f8172fc fix(VideoSecondaryInfo): Parse show_more_text and show_less_text correctly 2024-11-25 05:16:08 -03:00
Luan
ed8d43a799 chore: lint 2024-11-25 03:26:04 -03:00
Luan
fcd65b4dba chore(docs): Update API ref [skip ci] 2024-11-25 03:25:27 -03:00
Luan
4729016fb9 feat(parser): Add RunAttestationCommand
Can be used to get attestation responses from BotGuard, assuming you have a VM (retrieved using the `/att/get` endpoint, with engagement type set to `ENGAGEMENT_TYPE_UNBOUND`) loaded up.
2024-11-25 03:23:23 -03:00
Luan
951256c641 chore(docs): Update API ref (x2) [skip ci] 2024-11-22 06:24:56 -03:00
Luan
cf09f7bab1 chore: clean up some classes 2024-11-22 06:21:41 -03:00
Luan
d8dca8cc09 refactor(parser): Remove unused analytics nodes
These were once useful when it was still possible to use the Android client with OAuth.
2024-11-22 05:17:57 -03:00
Luan
91fa215235 chore(parser): lint 2024-11-22 05:11:17 -03:00
Luan
2f087d47a0 refactor(parser)!: Remove old comment node 2024-11-22 04:58:37 -03:00
Luan
2c7f0ca155 refactor(kids/Channel): Use new endpoint parsers for continuation requests 2024-11-22 04:45:39 -03:00
Luan
4e9d64404e chore(docs): Update API ref 2024-11-22 04:25:16 -03:00
absidue
fc5571629e feat(Log)!: Convert Log class to module (#814) 2024-11-21 21:04:38 -03:00
absidue
9cf0d3f3b3 chore(parser)!: Remove getters that have been deprecated for a long time (#815) 2024-11-21 20:13:37 -03:00
Luan
7397aa3f64 refactor(parser)!: Implement endpoint/command parsers (#812) 2024-11-21 18:24:16 -03:00
jonz94
7156a585c0 feat(parser): add LiveChatModeChangeMessage node (#811)
* feat(parser): add `LiveChatModeChangeMessage` node

* chore: npm run build:parser-map

* refactor: keep `timestamp_text` as Text

Co-authored-by: absidue <48293849+absidue@users.noreply.github.com>

* refactor: keep `timestamp_text` as Text

---------

Co-authored-by: absidue <48293849+absidue@users.noreply.github.com>
2024-11-19 17:06:29 -03:00
YBD Project
cfb48fab89 feat: Add getCourses (#798)
* feat: add getCourses function to retrieve courses

* chore: Change getCourses function to return Feed instead of TabbedFeed
2024-11-19 04:56:57 -03:00
Dave Nicolson
71d9ebc5fd refactor(PlaylistManager): Optimize playlist video removal (#801)
* Handle undefined playlist attributes

* Optimize playlist video removal
2024-11-19 04:52:18 -03:00
absidue
0914299215 feat(parser): Add optional image property to LockupMetadataView (#806) 2024-11-19 04:50:28 -03:00
ChunkyProgrammer
038efff17f feat(Parser): add support for parsing subtitle for RichShelf (#805) 2024-11-19 04:43:03 -03:00
absidue
4b178e4bfb fix(parser): The AvatarView.image_processor property is optional (#807) 2024-11-18 15:54:03 -03:00
absidue
680da9f501 fix(parser): Update list of possible content_type in LockupView (#808) 2024-11-18 15:51:00 -03:00
jonz94
7fb00fa378 feat(parser): Add LiveChatBannerChatSummary node, update TextRun node (#809)
* feat(parser): add `LiveChatBannerChatSummary` node

* feat(TextRun): add `deemphasize` property

* chore: npm run build:parser-map
2024-11-18 15:49:50 -03:00
Luan
53d1c759b6 fix(PlaylistAddToOption): Use correct type for contains_selected_videos 2024-11-18 04:15:54 -03:00
Luan
bdebb9f741 feat(NavigationEndpoint): Add name property
Sometimes you can make assumptions based on the endpoint's object name.
2024-11-17 01:19:08 -03:00
Luan
2940f7b908 feat(parser): Add AddToPlaylist node 2024-11-17 00:14:37 -03:00
Luan
c68810d502 Merge branch 'main' of https://github.com/LuanRT/YouTube.js 2024-11-15 03:49:43 -03:00
Luan
dc2ed046b8 feat(parser): Add PlayerOverlayVideoDetails node 2024-11-15 03:24:25 -03:00
Luan
ad448f8106 feat(parser): Add VideoViewCount node 2024-11-15 03:16:03 -03:00
Luan
80dbd6fe71 chore(Menu): Update flexible_items type 2024-11-15 03:07:27 -03:00
Luan
bc9a0ed6c1 feat(parser): Add MenuFlexibleItem 2024-11-15 03:06:47 -03:00
jonz94
ad302b8b17 feat(parser): Add LiveChatBannerRedirect node (#799) 2024-11-14 23:55:23 -03:00
Luan
126a66f317 fix(SubscribeButton): Parse endpoints using NavigationEndpoint 2024-11-13 00:09:33 -03:00
Luan
daa5a2982b fix(ReelPlayerOverlay): Update subscribe_button_renderer type to include SubscribeButton 2024-11-12 23:49:58 -03:00
Luan
8bf9eb7044 feat(SubscribeButton): Parse more endpoints 2024-11-12 23:43:32 -03:00
Luan
8ab760ea2e fix(SignalAction): Rename action to signal 2024-11-11 16:32:47 -03:00
Luan
feeb21b3eb feat(parser): Add SignalAction node 2024-11-11 16:20:51 -03:00
Luan
d36ddb804a feat(parser): Add NotificationAction node 2024-11-11 16:20:36 -03:00
Luan
b0965c7ac9 chore: lint 2024-11-10 04:23:51 -03:00
Luan
d3f6af0775 fix(UnifiedSharePanel): Check if thirdPartyNetworkSection exists
Oops.
2024-11-10 04:18:58 -03:00
Luan
556c3d68eb chore: lint 2024-11-10 04:10:33 -03:00
Luan
4a1397f1bc feat(parser): Add UnifiedSharePanel 2024-11-10 04:08:23 -03:00
Luan
fdb754043b feat(parser): Add UpdateSubscribeButtonAction 2024-11-09 20:18:14 -03:00
Luan
0a99342ccb fix(VideoAttributeView): Parse secondarySubtitle only if exists 2024-11-09 16:36:40 -03:00
Luan
e4ca991d30 Merge branch 'main' of https://github.com/LuanRT/YouTube.js 2024-11-09 16:22:41 -03:00
Luan
360580ea6e fix(ExpandableVideoDescriptionBody): Parse attributed description 2024-11-09 16:20:55 -03:00
jonz94
20f7971299 feat(parser): Add LiveChatSponsorshipsGiftRedemptionAnnouncement node (#795) 2024-11-09 12:22:46 -03:00
Luan
b83a32f6a6 Merge branch 'main' of https://github.com/LuanRT/YouTube.js 2024-11-08 15:32:41 -03:00
Luan
0bb28a95fc chore(examples): Fix custom OAuth creds example 2024-11-08 15:32:06 -03:00
jonz94
4e9c2a585b feat(parser): Add LiveChatSponsorshipsGiftPurchaseAnnouncement and LiveChatSponsorshipsHeader nodes (#793)
* feat(parser): Add `LiveChatSponsorshipsGiftPurchaseAnnouncement` and `LiveChatSponsorshipsHeader` nodes

* refactor: flatten nested field

* refactor: attempt to replace `author_*` fields with a single `Author` class

* fix: add back `author_*` fields in `LiveChatSponsorshipsHeader`

* fix: use `parseArray` to parse author_badges data

* refactor: revert `Author` logic

---------

Co-authored-by: absidue <48293849+absidue@users.noreply.github.com>
2024-11-02 08:08:41 -03:00
ChunkyProgrammer
34ae38cbf4 feat(Parser): Add support for parsing subtitle for Shelf (#792) 2024-10-30 16:48:29 -03:00
ChunkyProgrammer
a4394dbb82 Fix(VideoCard): fix parsing author, view count and published date (#791) 2024-10-30 16:47:43 -03:00
Luan
2e782cff90 Merge branch 'main' of https://github.com/LuanRT/YouTube.js 2024-10-29 12:05:33 -03:00
Luan
50be8a8f54 refactor(Studio): Use WEB for /upload/createvideo requests 2024-10-29 12:05:25 -03:00
asomethings
677e1f0807 feat(account): Add missing property channel_handle (#789) 2024-10-29 08:04:07 -03:00
github-actions[bot]
4ec4be64ee chore(main): release 11.0.1 (#788)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-10-28 16:09:20 -03:00
absidue
182bf42d3c fix(VideoInfo): Fix like count being undefined (#787) 2024-10-28 16:08:11 -03:00
Luan
dba0be7bc8 chore: update docs 2024-10-28 16:07:35 -03:00
github-actions[bot]
31d1caf06a chore(main): release 11.0.0 (#758)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-10-28 14:03:08 -03:00
Dave Nicolson
22dd71d7da feat(history): Add ability to remove videos from watch history (#706)
* Use Button class

* Add ability to remove videos from watch history

* Update src/parser/youtube/History.ts

* Fix linting

---------

Co-authored-by: Roger <sonemonu@gmail.com>
2024-10-28 14:01:09 -03:00
dependabot[bot]
15d3865398 chore(deps-dev): bump rollup in /examples/browser/web (#769)
Bumps [rollup](https://github.com/rollup/rollup) from 2.79.1 to 2.79.2.
- [Release notes](https://github.com/rollup/rollup/releases)
- [Changelog](https://github.com/rollup/rollup/blob/master/CHANGELOG.md)
- [Commits](https://github.com/rollup/rollup/compare/v2.79.1...v2.79.2)

---
updated-dependencies:
- dependency-name: rollup
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-10-28 13:46:08 -03:00
Luan
305a398158 fix: Include jinter in the cjs build 2024-10-28 13:06:31 -03:00
Luan
85d623c463 Merge branch 'main' of https://github.com/LuanRT/YouTube.js 2024-10-28 12:54:22 -03:00
Luan
d9ec23c73c fix(package): Use jsr:@luanrt/jintr on Deno 2024-10-28 12:54:09 -03:00
Luan
d84273163f chore: clean up 2024-10-28 12:51:53 -03:00
Luan
01057f6dfa refactor: Remove global dispatcher config 2024-10-27 10:27:38 -03:00
absidue
a4ef2249ff feat: Support auto-dubbed audio tracks (#786) 2024-10-26 17:54:12 -03:00
Luan
0081e11ebc refactor!: Deprecate account#getAnalytics, account#getTimeWatched and account#getAnalytics
Due to recent changes by YouTube, these actions can no longer be executed using web based OAuth tokens nor cookies.
2024-10-26 17:45:09 -03:00
Luan
d9ac99d332 fix(InteractionManager): Use WEB for all actions 2024-10-26 17:42:02 -03:00
Luan
bb3f114aa3 fix(LiveChat#sendMessage): Switch to WEB client
Android no longer works properly with TV OAuth tokens.
2024-10-26 17:40:35 -03:00
Luan
b45609aa0f feat: Add TVHTML5 InnerTube client
+ Update `ANDROID` version.
2024-10-26 17:39:09 -03:00
absidue
91d3081496 chore(protos): Avoid generating unused protobuf code (#774) 2024-10-07 07:59:17 -03:00
Émilien (perso)
02513b76ed fix: fix deno usage of protobuf and jintr (#776)
* fix: fix deno usage of protobuf and jintr

* fix Import assertions are deprecated
2024-10-07 07:58:04 -03:00
absidue
43cef9e67e fix(parser): Fix ShortsLockupView assuming that the primary text always exists (#775) 2024-10-07 07:57:22 -03:00
absidue
5ff30e12de fix(toDash): Fix dash.js 4.x compatibility (#765) 2024-09-25 10:29:26 -03:00
Luan
289996ae7a chore(readme): simplify description 2024-09-23 17:50:59 -03:00
Luan
d6cc8016aa chore(readme): reword 2024-09-23 17:50:04 -03:00
absidue
910c9791e7 feat(ProtoUtils): Add support for creating NextParams (#762) 2024-09-23 17:33:21 -03:00
Luan
74659fd03f chore: add proper documentation (#763)
* chore: generate API ref using `typedoc`

* chore: declutter readme and add links to ytjs.dev

* chore: clean up
2024-09-23 17:32:50 -03:00
Émilien (perso)
dd7f5cf778 feat: Add WEB_CREATOR client (#757)
* feat: Add WEB_CREATOR client

* update to latest version WEB_CREATOR https://github.com/iv-org/invidious/pull/4928#issuecomment-2362302280
2024-09-20 08:59:45 -03:00
github-actions[bot]
00dd409d58 chore(main): release 10.5.0 (#749)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-09-19 10:14:46 -03:00
Luan
eb21af33db chore: update README [skip ci] 2024-09-19 10:12:51 -03:00
Luan
f209315216 chore: update GitHub Actions to use latest versions 2024-09-19 10:04:11 -03:00
Émilien (perso)
eaf218f5da feat: Add WEB_EMBEDDED client (#756) 2024-09-19 09:56:23 -03:00
Konstantin
5db449cc6d feat: extend music getInfo to allow MusicResponsiveListItem and Nav Endpoints (#751)
* feat: extend music getInfo to allow MusicResponsiveListItem nav endpoints

* chore: remove debug statements from test

* chore: adapt test

* feat: add nav endpoints to music getInfo

---------

Co-authored-by: Luan <luan.lrt4@gmail.com>
2024-09-19 09:19:48 -03:00
dependabot[bot]
2e61b99428 chore(deps-dev): bump vite in /examples/browser/web (#755)
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 3.2.10 to 3.2.11.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v3.2.11/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v3.2.11/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-19 09:13:02 -03:00
Luan
7a39326821 fix(Session): Set default values for hl and gl in context builder 2024-09-17 22:06:03 -03:00
Luan
425027ce89 chore(examples/web): Use UMP (#754) 2024-09-16 12:38:59 -03:00
Luan
0a5d3aa76d refactor: Remove old UMP parser (#753) 2024-09-16 08:44:55 -03:00
Luan
94bc596048 refactor: Migrate to ts-proto (#752)
* refactor: Add extracted protos

* refactor: Remove old stuff and update affected code

* chore(package): Update `build:proto` script

* chore(ClientInfo): Rename `androidSdkVersion` to `android_sdk_version`

* chore: remove refs to old proto file

* refactor(sabr_request): Rename `Gw` to `media_type`

* chore(sabr_request): Fix typo in field num

* feat(parser): Parse `video_playback_ustreamer_config` and `server_abr_streaming_url`

* refactor: update protos

* chore(package): streamline clean and build scripts

* chore: update package.json

* chore: update npmignore

* chore(protos): Remove unneeded definitions

See https://github.com/LuanRT/googlevideo for video playback proto definitions.

* chore(package): add `rimraf` dependency
2024-09-16 06:54:29 -03:00
absidue
e1e76ee616 feat(parser): Add ShortsLockupView and BadgeView nodes (#746) 2024-09-13 00:19:46 -03:00
Dave Nicolson
bf6cc00699 fix(ItemSection): FeedFilterChipBar parse error (#741) 2024-09-11 02:28:33 -03:00
absidue
094a96fb5d fix(parser): The icon_name property does not always exist in ThumbnailBadgeView (#745) 2024-09-11 02:26:58 -03:00
github-actions[bot]
4fca6c354e chore(main): release 10.4.0 (#721)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-08-26 23:41:20 -03:00
Luan
93906e0539 chore(docs): Mention BgUtils for generating PoTokens
https://github.com/LuanRT/BgUtils
2024-08-26 23:37:35 -03:00
dependabot[bot]
aaebcca90b chore(deps-dev): bump vite from 3.2.8 to 3.2.10 in /examples/browser/web (#739)
Bumps [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite) from 3.2.8 to 3.2.10.
- [Release notes](https://github.com/vitejs/vite/releases)
- [Changelog](https://github.com/vitejs/vite/blob/v3.2.10/packages/vite/CHANGELOG.md)
- [Commits](https://github.com/vitejs/vite/commits/v3.2.10/packages/vite)

---
updated-dependencies:
- dependency-name: vite
  dependency-type: direct:development
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-26 21:52:34 -03:00
Luan
36121878b1 chore(examples): Fix proxy 2024-08-26 20:32:30 -03:00
Luan
d89909a19a fix(examples): Use BgUtils to generate pot [skip ci]
+ Improve readme.
2024-08-26 18:42:14 -03:00
Luan
367a6f7ec5 chore(package): Revert last commit
This reverts commit 05a663710d.
2024-08-23 14:44:00 -03:00
Luan
05a663710d chore(package): Use prepack instead of prepare 2024-08-23 14:22:54 -03:00
Luan
cc0fc7145a chore(package): Fix typo in exports 2024-08-23 13:17:50 -03:00
Luan
bdff3eae1c chore: lint [skip ci] 2024-08-23 02:07:41 -03:00
Luan
5a66d0ba93 chore: clean up some types [skip ci] 2024-08-23 02:04:28 -03:00
Luan
370cb0b29e chore(eslint): Update ignores 2024-08-23 01:12:17 -03:00
Luan
fcd00b0fb0 fix(FormatOptions): client missing some values 2024-08-23 01:05:37 -03:00
Luan
2dae5634f3 chore(docs): Minor rewording 2024-08-23 00:51:52 -03:00
Luan
2c43a5705f chore: update tests 2024-08-22 22:40:42 -03:00
Luan
83801ebc37 chore: fix linter config 2024-08-22 22:36:55 -03:00
Luan
c14a687e65 chore: bump eslint to v9 2024-08-22 15:43:59 -03:00
Dave Nicolson
f9ccba4af5 fix(ThumbnailOverlayResumePlayback): Update percent_duration_watched type (#737) 2024-08-19 20:18:06 -03:00
absidue
4b60b97132 feat(parser): Add VideoAttributesSectionView node (#732) 2024-08-12 14:49:20 -03:00
absidue
7afc3da80e fix(Session): Fix remote visitor data not gettting used (#731) 2024-08-12 00:21:02 -03:00
슈리튬
bb6e647b8c fix(Session): PoToken not being set correctly (#729) 2024-08-11 04:10:23 -03:00
Luan
f1973c11d9 fix(Session): Visitor data not being used properly 2024-08-10 11:12:13 -03:00
Luan
4942992630 refactor: Throw an error if an invalid client is specified 2024-08-08 10:11:38 -03:00
Luan
0e91a08ae2 fix(PlayerEndpoint): Don't set undefined fields 2024-08-08 09:01:14 -03:00
Luan
261f2ac12b feat(Utils): Add UMP parser
Currently not used anywhere in the project, but I figured I'd add it in case anyone wants to make their playback requests look more genuine by using UMP/SABR.
2024-08-08 07:57:14 -03:00
Luan
041aebc358 chore: Rephrase PoToken description 2024-08-08 07:42:20 -03:00
Émilien (perso)
c9f0ddd573 feat(Player): Add support for Proof of Identity tokens (#708)
* Fix different usages of potoken.

* Fix linting.

* Add mention about invidious youtube-trusted-session-generator.

---------

Co-authored-by: Luan <luan.lrt4@gmail.com>
2024-08-08 07:28:42 -03:00
Luan
25d268beba chore: update livechat example 2024-08-06 18:48:34 -03:00
absidue
2c0bb237e1 fix(Search): Fix it occasionally returning only a small number of results (#720) 2024-08-03 09:40:02 -03:00
github-actions[bot]
4f5635ad07 chore(main): release 10.3.0 (#704)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-08-01 06:21:32 -03:00
Luan
3b3cf1b2aa refactor(Player): Generate and parse player script's AST (#713)
Notes:
- The Syntax Tree is generated by Jinter (which is built on top of `Acorn`).
- While doing this may be slightly slower than using a regular exp, it is much more reliable (plus we already cache the player functions anyway).
2024-08-01 06:09:27 -03:00
Dave Nicolson
d85fbc56cf feat(PlaylistManager): Add ability to remove videos by set ID (#715) 2024-08-01 06:07:47 -03:00
Luan
e55d4af100 chore: lint 2024-08-01 06:03:51 -03:00
Armel Chesnais
04369be620 fix(Player): Address changes introduced by player id 20dfca59 (#712)
Fixes the nSig extract for YT player id `20dfca59 `
Handles:

String.prototype.split.call(a,("",""))

and

Array.prototype.join.call(b,
("",""))};

Note the newline

Co-authored-by: Luan <luan.lrt4@gmail.com>
2024-07-31 06:38:32 -03:00
Luan
a89a5ac2dd refactor(Player.ts): Handle nsig failure gracefully
Preping for future changes.
2024-07-31 06:18:18 -03:00
Luan
5529a6aca0 chore(Player): Don't throw an error if nsig extraction fails
This is called when an InnerTube instance is created, so throwing here breaks the entire library.
2024-07-30 19:05:29 -03:00
Luan
94a6765c97 chore: update tests 2024-07-30 18:50:03 -03:00
Luan
9b9fb82131 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.
2024-07-30 18:49:24 -03:00
absidue
3153375bca fix(HTTPClient): Adjust more context fields for the iOS client (#705) 2024-07-26 11:15:12 -03:00
Dave Nicolson
a9bf225a62 feat(parser): Add EomSettingsDisclaimer node (#703) 2024-07-25 22:12:57 -03:00
github-actions[bot]
1e29019a07 chore(main): release 10.2.0 (#688)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-07-25 10:52:50 -03:00
Luan
6765f4e0d7 fix(Player): Bump cache version (#702)
We should always do this after updating the sig/nsig code, it's so that the old cache gets ignored : ).
2024-07-25 10:48:24 -03:00
absidue
3048f70f60 fix(Player): Fix extracting the n-token decipher algorithm again (#701) 2024-07-25 10:07:00 -03:00
Brahim Hadriche
090539b28f feat(parser): add classdata to unhandled parse errors (#691) 2024-07-24 15:55:20 -03:00
Brahim Hadriche
6d0bc89be1 fix(parser): ignore MiniGameCardView node (#692) 2024-07-24 15:54:37 -03:00
GurumNyang
a5f62093a1 feature(proto): Add comment_id to commentSectionParams (#693) 2024-07-24 15:54:14 -03:00
absidue
a352ddeb9d feat(Format): Add is_secondary for detecting secondary audio tracks (#697) 2024-07-24 15:53:27 -03:00
Brahim Hadriche
0f8f92a28a fix(parser): ThumbnailView background color (#686) 2024-07-11 14:31:27 -03:00
github-actions[bot]
7d03469e64 chore(main): release 10.1.0 (#669)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-07-10 03:44:43 -03:00
Luan
62ac2f6f32 fix(proto): Update Context message
Closes #681
2024-07-10 03:41:16 -03:00
absidue
142a7d0428 fix(Player): Fix extracting the n-token decipher algorithm (#682)
* fix(Player): Fix extracting the n-token decipher algorithm

* fix: bump Jinter to v2

---------

Co-authored-by: Luan <luan.lrt4@gmail.com>
2024-07-10 02:21:39 -03:00
Luan
efa7205723 Merge branch 'main' of https://github.com/LuanRT/YouTube.js 2024-07-01 08:53:45 -03:00
Luan
84f90aaf29 fix(Session): Round UTC offset minutes 2024-07-01 08:53:08 -03:00
absidue
858cdd197c feat(toDash): Add the "dub" role to translated captions (#677) 2024-06-30 23:05:08 -03:00
Luan
5a8fd3ad37 feat(Session): Add configInfo to InnerTube context
Minor addition. It's needed for certain UMP requests.
2024-06-30 22:51:02 -03:00
슈리튬
a19511de24 fix(FormatUtils): Throw an error if download requests fails 2024-06-28 16:45:39 -03:00
absidue
bd9f6ac64c feat(toDash): Add option to include WebVTT or TTML captions (#673) 2024-06-25 01:22:11 -03:00
absidue
e5aab9a9b3 fix(toDash): Fix image representations not being spec compliant (#672) 2024-06-24 15:48:38 -03:00
Luan
d6fa134c3d chore(Playlist): Add MusicResponsiveHeader to header types
Oops! I forgot this one also existed : ).
2024-06-21 21:12:54 -03:00
Luan
fe953072a2 chore: fix tests 2024-06-21 20:57:38 -03:00
Luan
055fa33403 chore: lint 2024-06-21 19:32:50 -03:00
Luan
14c3a06d40 fix(YTMusic): Add support for new header layouts
This is due to a minor page redesign by YouTube Music. See https://9to5google.com/2024/06/20/youtube-music-web-album-playlist-redesign/.
2024-06-21 19:31:40 -03:00
Luan
67376afae6 chore(Format): Clean up and add some extra fields 2024-06-16 16:22:33 -03:00
Luan
4cbaa7983f fix(InfoPanelContent): Update InfoPanelContent node to also support paragraphs
This would fail when `attributedParagraphs` was missing, so we still need `paragraphs` there.
2024-06-16 15:39:47 -03:00
github-actions[bot]
9802483233 chore(main): release 10.0.0 (#658)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-06-09 20:43:14 -03:00
Aidar Nugmanoff
2980a608b6 feat(Platform): Add support for react-native platform (#593) 2024-06-09 18:15:57 -03:00
Luan
b6cecb10f5 chore(docs): update readme 2024-06-09 18:02:46 -03:00
Luan
040a091639 fix(FlexibleActionsView): Update actions array type to include ToggleButtonView 2024-06-08 16:33:34 -03:00
Luan
3939405cc6 chore(Player): Rephrase nsig failure message 2024-06-07 14:26:27 -03:00
Luan
978ab1ed29 chore(docs): fix typo [skip ci] 2024-06-07 14:18:23 -03:00
Luan
5cdb9e1e2f fix(InfoPanelContainer): Use new attributed text prop
+ And update other related nodes.
2024-06-07 14:15:44 -03:00
Luan
15f3b5fdba fix(ButtonView): Rename type property to button_type
It was overriding the static property "type".
2024-06-05 16:00:16 -03:00
Luan
384b80ee41 fix(Cache): Use TextEncoder to encode compressed data 2024-06-05 12:30:12 -03:00
Luan
b588554ce1 chore: update docs [skip ci] 2024-06-03 19:16:41 -03:00
Luan
583fd9f8d7 fix(MusicResponsiveHeader): Add Text import
Looks like I forgot to add it.
2024-06-03 19:08:33 -03:00
Luan
7953296580 feat(Session): Add enable_session_cache option (#664)
See https://github.com/LuanRT/YouTube.js/pull/663#issuecomment-2146161637
2024-06-03 19:04:30 -03:00
Luan
cf29664d37 perf(general): Add session cache and LZW compression (#663)
* feat(utils): Implement LZW compression module

* feat(Session): Implement cache for sessions
This should improve performance quite a bit for those who are not using the `generate_session_locally` option (like me :P).

* refactor(Player): Add LZW compression
This considerably reduces the size of the cache.
2024-06-03 18:21:48 -03:00
Luan
4015a5e560 chore(JsRuntime): Change log levels in evaluate function 2024-06-03 17:42:18 -03:00
Luan
184df79b3a refactor(HTTPClient): Use getCookie fn to get SAPISID token 2024-06-03 17:41:09 -03:00
Luan
000f3f0915 refactor(Artist.ts): Change sections type to ObservedArray<MusicCarouselShelf | MusicShelf> 2024-06-03 17:39:42 -03:00
Luan
8372b3d22f Merge branch 'main' of https://github.com/LuanRT/YouTube.js 2024-06-03 17:33:04 -03:00
Luan
b9d50daa57 chore: clean up
Updated deps, fixed some ts issues, renamed "scripts" to "dev-scripts", and added a script to delete build output.
2024-06-03 17:29:11 -03:00
absidue
031ffb696e feat(toDash): Add support for stable volume/DRC (#662) 2024-05-28 02:43:10 -03:00
Luan
8e942ada3b chore(docs): fix some markdown issues 2024-05-24 04:33:03 -03:00
LuanRT
aa3f34c428 chore: Fix browser example 2024-05-23 21:00:47 -03:00
LuanRT
c82bb70180 chore(HTTPClient): Remove env check when setting Android headers
These requests are supposed to be proxied, so there's no need to worry about browsers not liking it.
2024-05-23 20:58:37 -03:00
LuanRT
766045049d refactor(Innertube#getPlaylists)!: Return a Feed instance instead of items 2024-05-21 20:50:41 -03:00
Luan
b6ce5f903f refactor(OAuth2)!: Rewrite auth module (#661)
This is a rewrite of the OAuth2 module to address some bugs and inconsistencies. And since it changes the structure of the credentials, I'm marking this as a breaking change.

Note that you will have to update your existing credentials, that is if you wish to continue using them. Otherwise, simply delete them and sign in again.
2024-05-21 18:47:31 -03:00
absidue
6bb2086875 feat(Format): Add is_drc (#656) 2024-05-06 11:55:58 -03:00
Brahim Hadriche
810665407e Item section target_id fix (#655) 2024-04-29 14:22:28 -03:00
github-actions[bot]
1b00e2c6ce chore(main): release 9.4.0 (#644)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-04-29 09:14:43 -03:00
LuanRT
ea82beaa10 feat(Parser): Add MusicResponsiveHeader node 2024-04-29 08:24:13 -03:00
absidue
0ba8c54257 feat(Format): Add spatial_audio_type (#647) 2024-04-29 08:10:08 -03:00
Brahim Hadriche
7315fca1b4 Add getPlaylists function (#650) 2024-04-29 08:09:35 -03:00
Brahim Hadriche
0602dd2c3d Lint fix (#651) 2024-04-29 08:07:24 -03:00
LuanRT
13321888e8 chore(PlayerEndpoint): Remove outdated code 2024-04-29 08:05:59 -03:00
absidue
d48b9d0946 chore(HTTPClient): Add X-Youtube-Client-Name and remove X-Origin headers (#645) 2024-04-25 18:04:10 -03:00
LuanRT
592ddac30f chore: Fix tests
Oops :)
2024-04-19 16:37:38 -03:00
LuanRT
1ec2ea85e2 refactor(Music#getRelated): Return page contents directy 2024-04-19 16:22:21 -03:00
absidue
064436cef3 feat(Format): Add projection_type and stereo_layout (#643)
5930ebda46
2024-04-19 16:08:12 -03:00
ChunkyProgrammer
4022d7aa89 Remove test code (#636) 2024-04-11 23:29:46 -03:00
github-actions[bot]
cd69ce73c1 chore(main): release 9.3.0 (#635)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-04-11 18:19:12 -03:00
LuanRT
1c08bfe113 feat(CommentView): Implement comment interaction methods 2024-04-11 18:04:45 -03:00
LuanRT
a624963384 docs(Comments): Update API ref 2024-04-11 18:03:04 -03:00
LuanRT
66e34f9388 fix(CommentThread): Replies not being parsed correctly 2024-04-11 16:05:59 -03:00
github-actions[bot]
0c2cdc1599 chore(main): release 9.2.1 (#632)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-04-09 17:42:18 -03:00
absidue
010704929f fix(toDash): Add missing transfer characteristics for h264 streams (#631) 2024-04-09 17:41:08 -03:00
dependabot[bot]
d4a938771b chore(deps): bump undici from 5.28.3 to 5.28.4 (#627)
Bumps [undici](https://github.com/nodejs/undici) from 5.28.3 to 5.28.4.
- [Release notes](https://github.com/nodejs/undici/releases)
- [Commits](https://github.com/nodejs/undici/compare/v5.28.3...v5.28.4)

---
updated-dependencies:
- dependency-name: undici
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-04-04 15:02:28 -03:00
github-actions[bot]
5ecfb08772 chore(main): release 9.2.0 (#611)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-03-31 11:39:15 -03:00
Ayoub
2029aec90d feat: add support of cloudflare workers (#596) 2024-03-31 11:37:06 -03:00
Luan
d589365ea2 fix(PlayerEndpoint): Workaround for "The following content is not available on this app" (Android) (#624)
* chore: Update Android client version and UA

* refactor: Update shorts parameter protobuf

* chore: Update auto generated files

* chore: Add test

* chore: Update comments test id (unrelated)

* chore: Update comments test again (unrelated)
2024-03-31 11:35:12 -03:00
LuanRT
45f33d8c04 refactor(MusicResponsiveListItem): Improve podcast and video/song parsing 2024-03-25 11:55:06 -03:00
LuanRT
92117eaaa0 chore(tests): use test instead of describe 2024-03-25 08:26:29 -03:00
LuanRT
39725374e3 chore(tests): remove beforeAll for the home feed test 2024-03-25 08:23:59 -03:00
LuanRT
213d78b1ab chore: remove home feed continuation test
Home feed now requires a visitor id with reputation or an account.

Removing this for now until I find a way around it for the tests at least.
2024-03-25 08:19:14 -03:00
LuanRT
28f53a698d chore: remove API key parameter
No longer needed.
2024-03-25 08:07:49 -03:00
Adam Learns
776a156f65 Fix broken README links (#618)
There were apostrophes in the links.
2024-03-25 07:25:17 -03:00
absidue
4a9bd32fd7 chore(LockupView): Remove debug logging (#617) 2024-03-25 07:24:24 -03:00
WhiteMind
3170659880 fix(Cache): handle the value read from the db correctly according to its type (#620) 2024-03-25 07:23:56 -03:00
absidue
e6f1f078a8 feat(Text): Support formatting and emojis in fromAttributed (#615) 2024-03-25 07:22:24 -03:00
absidue
900f557202 feat(parser): Support CommentView nodes (#614) 2024-03-25 07:20:29 -03:00
absidue
7ca2a0c3e4 feat(parser): Support LockupView and it's child nodes (#609) 2024-02-29 13:29:53 -03:00
LuanRT
f95283b236 chore: add any-of-issue-labels option to stale workflow 2024-02-22 23:04:46 -03:00
LuanRT
f6a7bcc44a Merge branch 'main' of https://github.com/LuanRT/YouTube.js 2024-02-22 22:47:36 -03:00
LuanRT
c444843799 chore: update workflows 2024-02-22 22:47:17 -03:00
github-actions[bot]
5fe91d6642 chore(main): release 9.1.0 (#600)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-02-22 22:29:37 -03:00
absidue
bff65f8889 feat(Format): Support caption tracks in adaptive formats (#598) 2024-02-22 22:28:16 -03:00
dependabot[bot]
dac5eb712d chore(deps): bump undici from 5.27.0 to 5.28.3 (#599)
Bumps [undici](https://github.com/nodejs/undici) from 5.27.0 to 5.28.3.
- [Release notes](https://github.com/nodejs/undici/releases)
- [Commits](https://github.com/nodejs/undici/compare/v5.27.0...v5.28.3)

---
updated-dependencies:
- dependency-name: undici
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-02-22 22:27:47 -03:00
LuanRT
2068dfb73e fix(Session): Don't try to extract api version from service worker
It doesn't make sense to do this anyway because if it ever changed, we'd probably have to refactor the entire library.

Closes #602, #603, #604
2024-02-22 22:25:30 -03:00
LuanRT
3e84775fd3 Merge branch 'main' of https://github.com/LuanRT/YouTube.js 2024-02-18 23:37:13 -03:00
LuanRT
89fa3b27a8 fix(Playlist): items getter failing if a playlist contains Shorts 2024-02-18 23:36:01 -03:00
github-actions[bot]
ab7201f0cc chore(main): release 9.0.2 (#591)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-01-31 19:50:59 -03:00
absidue
b21eb9f33d fix(VideoInfo): Fix error because of typo in getWatchNextContinuation (#590) 2024-01-31 19:34:46 -03:00
LuanRT
0751793380 Merge branch 'main' of https://github.com/LuanRT/YouTube.js 2024-01-29 22:19:35 -03:00
LuanRT
5c91c2af4a chore: merge main 2024-01-29 22:14:22 -03:00
LuanRT
47cad4c6e1 chore: lint build scripts [skip ci] 2024-01-29 22:11:20 -03:00
github-actions[bot]
4fb9dff0f2 chore(main): release 9.0.1 (#588)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-01-25 21:32:45 -03:00
LuanRT
81dd5d3288 fix(build): Circular imports causing issues with webpack 2024-01-25 21:30:14 -03:00
LuanRT
c7f42220db chore: revert unneeded import type changes & lint
Yes. Again.
2024-01-25 21:17:59 -03:00
LuanRT
5204b29e81 chore: Lint 2024-01-25 20:47:19 -03:00
LuanRT
cbaa838cee chore: Revert some unneeded import changes 2024-01-25 20:43:19 -03:00
github-actions[bot]
379e63d2f6 chore(main): release 9.0.0 (#572)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-01-25 19:04:29 -03:00
Luan
e86a0daf45 refactor(general): Clean up and add a logger (#587)
* feat(utils): Add logger

* chore: Clean up some classes and add more logging

* chore: Fix conflicts
2024-01-25 19:01:28 -03:00
absidue
7fbc37f9d1 fix(PlayerCaptionTracklist): Fix captions_tracks[].kind type (#586) 2024-01-20 01:44:54 -03:00
absidue
2e710dc9f7 feat(Channel): Support getting about with PageHeader (#581) 2024-01-18 14:58:58 -03:00
absidue
fed3512461 fix(DecoratedAvatarView): Fix parsing and optional properties (#584) 2024-01-18 14:55:10 -03:00
absidue
6dd03e1658 feat(toDash)!: Add support for generating manifests for Post Live DVR videos (#580)
BREAKING CHANGES: The `duration` property in `StreamingInfo` has been
replaced by the asynchronous `getDuration()` function, as getting the duration
of Post Live DVR videos requires making a fetch request.
2024-01-18 14:51:42 -03:00
absidue
2073aa910a feat(parser): Add ImageBannerView (#583) 2024-01-18 14:41:08 -03:00
absidue
f7b7bbd47a chore(Constants): Update web client version (#582) 2024-01-18 14:40:15 -03:00
Luan
04d55d04c7 refactor(Playlist): Ignore ContinuationItem nodes from SectionList#contents (#579)
* feat(PlaylistVideo): Add `style`

* refactor(Playlist): Ignore `ContinuationItem` nodes in `SectionList#contents`

This should fix some issues regarding the library fetching the wrong continuation or empty continuations (NOTE: This means the solution in 987f506 no longer applies as empty continuations were all in `SectionList#contents`).
2024-01-18 14:39:25 -03:00
absidue
6082b4a52e feat(Channel): Support PageHeader being used on user channels (#577) 2024-01-12 21:52:02 -03:00
absidue
3980f97b8f fix(proto): Fix visitor data base64url decoding (#576) 2024-01-12 14:42:50 -03:00
absidue
59f4cfb4db fix(toDash): Add missing transfer characteristics for h264 streams (#573) 2024-01-10 20:17:21 -03:00
absidue
254f77944f feat(VideoDetails): Add is_live_dvr_enabled, is_low_latency_live_stream and live_chunk_readahead (#569) 2024-01-10 11:49:14 -03:00
absidue
586bb5f139 feat(Format): Add max_dvr_duration_sec and target_duration_dec (#570) 2024-01-10 11:40:08 -03:00
absidue
562e6a20f0 feat(VideoInfo): Add live stream end_timestamp (#571) 2024-01-10 11:39:47 -03:00
github-actions[bot]
b7cacc34f3 chore(main): release 8.2.0 (#567)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-01-08 20:46:30 -03:00
Brahim Hadriche
8f07e49512 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>
2024-01-08 20:37:06 -03:00
Luan
abd8a82cd0 chore(docs): Update auth documentation and examples (#568)
* chore(docs): Update auth documentation and examples

* chore(docs): Minor rewording

* chore(docs): Fix library version in the OAuth2 example
2024-01-08 20:16:16 -03:00
Luan
7ffd0fc25e feat(OAuth): Allow passing custom client identity (#566) 2024-01-08 20:03:01 -03:00
github-actions[bot]
b50408fc1c chore(main): release 8.1.0 (#548)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2023-12-26 23:24:27 -03:00
Brahim Hadriche
9618f38fe1 fear(parser): Add DecoratedAvatarView (#544)
* Add DecoratedAvatarView

* Export the class

* Update PageHeaderView

* Adjust thumbnails

* Add avatar view

* Apply suggestions from code review

---------

Co-authored-by: absidue <48293849+absidue@users.noreply.github.com>
2023-12-26 23:21:37 -03:00
LuanRT
e7efec2cf4 Merge branch 'main' of https://github.com/LuanRT/YouTube.js 2023-12-26 23:17:19 -03:00
LuanRT
82d5d1e3e1 chore: Fix import formatting in multiple files 2023-12-26 23:16:45 -03:00
LuanRT
9c503f4fa8 fix(VideoInfo): Restore like, dislike & removeRating methods 2023-12-26 23:15:31 -03:00
RenautMestdagh
4dd977e375 Update interaction-manager.md (#562) 2023-12-26 21:36:55 -03:00
Daniel Wykerd
e4f2a00c84 feat(generator): add support for arrays (#556)
* feat(generator): add support for arrays

* fix(parser): add overload for non array validTypes

Add Parser#parse overload to support non array validTypes.

Fixes issue in generator generating invalid Parser#parse calls
introduced in #551.
2023-12-21 19:02:44 -03:00
absidue
fcd3044982 feat(parser): Support new like and dislike nodes (#557) 2023-12-21 19:02:19 -03:00
Brahim Hadriche
14578ac96a feat(YouTube): Add FEchannels feed (#560) 2023-12-21 19:00:31 -03:00
absidue
5c83e999df fix(Format): Extract correct audio language from captions (#553) 2023-12-07 08:46:05 -03:00
LuanRT
4e67240ff9 chore(FeedNudge): Add Text import 2023-12-04 15:51:09 -03:00
absidue
f938c34ee8 feat(generator): Add support for generating view models (#550) 2023-12-04 15:46:09 -03:00
absidue
bd487f8bef fix(generator): Output Parser.parseItem() calls with one valid type, without the array (#551) 2023-12-04 15:45:38 -03:00
absidue
48a5d4e7c3 feat(Thumbnail): Support sources in Thumbnail.fromResponse (#552) 2023-12-04 13:50:08 -03:00
absidue
37ae55a7c3 chore(protobuf): Commit generated files missing from #512 (#549)
Co-authored-by: Konstantin <duell10111@t-online.de>
2023-12-02 11:35:05 -03:00
LuanRT
923232de07 chore(PlayerConfig): Add default value to some fields 2023-12-01 17:56:25 -03:00
LuanRT
a1c3ef8fbb Merge branch 'main' of https://github.com/LuanRT/YouTube.js 2023-12-01 17:15:07 -03:00
LuanRT
5c9c231cc2 feat(MediaInfo): Parse player config 2023-12-01 17:14:36 -03:00
github-actions[bot]
572e16c541 chore(main): release 8.0.0 (#530)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2023-12-01 00:54:29 -03:00
LuanRT
ed2cbf8a13 chore: lint 2023-12-01 00:50:26 -03:00
LuanRT
4261915fd4 fix(Library)!: Add support for the new layout and remove profile & stats info 2023-12-01 00:49:22 -03:00
LuanRT
f74ed5a1cf fix(StructuredDescriptionContent): Add ReelShelf to list of possible nodes 2023-11-30 23:36:32 -03:00
LuanRT
5ae15be63d fix(VideoAttributeView): Fix image and overflow_menu_on_tap props 2023-11-30 23:34:31 -03:00
Konstantin
a32aa8c633 feat: Add Shorts endpoint (#512)
* chore: first try for shorts endpoints

* chore: add shorts to index

* fix: fix code style

* chore: fix suggestions

* fix: fix code style with spaces on curly brackets

* chore: add curly rule to eslint

* chore: run request in parallel

* chore: remove console.logs and add other expect tests

* chore: apply eslint suggestions

* Update ReelPlayerOverlay.ts

* Update VideoInfo.ts

* chore: remove console.log from tests

---------

Co-authored-by: absidue <48293849+absidue@users.noreply.github.com>
Co-authored-by: LuanRT <luan.lrt4@gmail.com>
2023-11-30 22:58:11 -03:00
absidue
4806fc6c11 feat(toDash): Add contentType to audio and video adaption sets (#539) 2023-11-30 22:33:13 -03:00
absidue
95ed60207a perf: Use named Parser import, to allow bundlers to create direct function references (#535)
Co-authored-by: Luan <luan.lrt4@gmail.com>
2023-11-30 22:31:59 -03:00
absidue
b50e2001aa chore: Clean up so unneeded private properties (#540) 2023-11-30 22:21:14 -03:00
absidue
b60930a0c1 feat(parser): Add ChannelOwnerEmptyState (#541) 2023-11-30 22:12:11 -03:00
absidue
c66eb1fecf feat(Channel): Support new about popup (#537)
* feat(Channel): Support new about popup

* chore: Minor cleanup

* fix(concatMemos): Merge duplicate nodes instead of overwriting

* fix(Feed): `has_continuation` and `getContinuation()` avoid header continuations

* chore(Channel): Remove unused import

---------

Co-authored-by: LuanRT <luan.lrt4@gmail.com>
2023-11-30 22:06:25 -03:00
absidue
6a5a579e39 fix(Channel)!: Remove getChannels() and has_channels, as YouTube removed the tab (#542)
BREAKING CHANGE: YouTube removed the "Channels" tab on channels, so this
pull request removes the `getChannels()` method and `has_channels`
getter from the `YT.Channel` class, as they are no longer useful. The
featured channels are now shown on the channel home tab. To get them
you can use the `channels` getter on the home tab of the channel.
Please note that some channel owners might not have added that section
to their home page yet, so you won't be able to get the featured
channels for those channels. The home tab is the default tab that is
returned when you call `InnerTube#getChannel()`, you can also access
that tab by calling `getHome()` on a `YT.Channel` object.
2023-11-30 22:03:36 -03:00
JellyBrick
ff4ab1680e feat: add VideoAttributeView (#531)
* feat: add `VideoAttributeView`

* fix: remove `logging_directives`

See https://github.com/LuanRT/YouTube.js/pull/531#discussion_r1375315550

* fix: Update src/parser/classes/VideoAttributeView.ts

---------

Co-authored-by: absidue <48293849+absidue@users.noreply.github.com>
Co-authored-by: Luan <luan.lrt4@gmail.com>
2023-11-30 21:38:51 -03:00
JellyBrick
9007b65237 feat(Parser): Add ClipSection (#532)
* feat: add `ClipSection`

* fix: Update src/parser/classes/ClipCreation.ts

---------

Co-authored-by: absidue <48293849+absidue@users.noreply.github.com>
2023-11-30 21:29:18 -03:00
JellyBrick
e02139532b feat: add FeedNudge (#533)
* feat: add `FeedNudge`

see https://github.com/LuanRT/YouTube.js/actions/runs/6679090140/job/18150827068?pr=532

* fix: lint

* fix: update parser-map
2023-10-29 09:51:25 -03:00
JellyBrick
db7f6209b2 feat: Use overrides instead of --legacy-peer-deps (#529) 2023-10-28 16:32:39 -03:00
github-actions[bot]
312c636ec4 chore(main): release 7.0.0 (#528)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2023-10-28 15:21:53 -03:00
Azarattum
4c0de199e8 fix(build): Inline package.json import to avoid runtime erros (#509)
* chore(main): Inline package.json import

* chore: add `--legacy-peer-deps` flag to ci

* chore: update lock file

---------

Co-authored-by: LuanRT <luan.lrt4@gmail.com>
2023-10-28 15:19:37 -03:00
Ryan Sandbach
9ab528ec82 feat(Kids): Add blockChannel command to easily block channels (#503)
* Add blockChannel command to support easily blocking content for supervised accounts.

* Moved blockChannel functionality to the Kids client and updated API docs.

* Fix whitepsace issues.

* Resolve remaining linting errors.

* Avoid changing interaction manager. Remove comment for ToggleButton change.

* chore: clean up

---------

Co-authored-by: LuanRT <luan.lrt4@gmail.com>
2023-10-28 14:28:17 -03:00
LuanRT
24ffb01aef Merge branch 'main' of https://github.com/LuanRT/YouTube.js 2023-10-28 13:31:10 -03:00
LuanRT
eaac38c919 chore: lint 2023-10-28 13:30:58 -03:00
absidue
e627887fe0 chore(MediaInfo): Throw helpful errors when calling toDash or download for live and Post-Live DVR videos (#526)
* Address pull request feedback

---------

Co-authored-by: LuanRT <luan.lrt4@gmail.com>
2023-10-28 13:29:37 -03:00
LuanRT
beaa28f4c6 feat(music#getSearchSuggestions)!: Return array of SearchSuggestionsSection instead of a single node 2023-10-28 13:27:58 -03:00
LuanRT
a45273fec4 feat(parser): Add PlayerOverflow and PlayerControlsOverlay 2023-10-28 13:17:26 -03:00
absidue
bc97e07ac6 feat(UpdateViewerShipAction): Add original_view_count and unlabeled_view_count_value (#527) 2023-10-21 12:39:03 -03:00
LuanRT
f35b4c2c8c Merge branch 'main' of https://github.com/LuanRT/YouTube.js 2023-10-18 23:32:01 -03:00
LuanRT
c934325648 chore: update readme [skip ci] 2023-10-18 23:31:03 -03:00
dependabot[bot]
cd27acd25b chore(deps-dev): bump @babel/traverse from 7.22.10 to 7.23.2 (#524)
Bumps [@babel/traverse](https://github.com/babel/babel/tree/HEAD/packages/babel-traverse) from 7.22.10 to 7.23.2.
- [Release notes](https://github.com/babel/babel/releases)
- [Changelog](https://github.com/babel/babel/blob/main/CHANGELOG.md)
- [Commits](https://github.com/babel/babel/commits/v7.23.2/packages/babel-traverse)

---
updated-dependencies:
- dependency-name: "@babel/traverse"
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-16 22:55:44 -03:00
dependabot[bot]
83b42d2585 chore(deps): bump undici from 5.23.0 to 5.26.2 (#523)
Bumps [undici](https://github.com/nodejs/undici) from 5.23.0 to 5.26.2.
- [Release notes](https://github.com/nodejs/undici/releases)
- [Commits](https://github.com/nodejs/undici/compare/v5.23.0...v5.26.2)

---
updated-dependencies:
- dependency-name: undici
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2023-10-16 17:36:00 -03:00
github-actions[bot]
e54c0c4bf1 chore(main): release 6.4.1 (#507)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2023-10-02 00:04:10 -03:00
LuanRT
8e372d5c67 fix(Feed): Do not throw when multiple continuations are present 2023-10-01 23:39:54 -03:00
LuanRT
987f50604a fix(Playlist): Throw a more helpful error when parsing empty responses 2023-10-01 23:31:05 -03:00
Luan
69702085c6 refactor: Move transcript logic to MediaInfo (#511)
* refactor: Move transcript logic to `MediaInfo`

+ Add support for retrieving different languages.

* docs: Update and add examples
2023-09-17 22:17:14 -03:00
absidue
d2959b3a55 perf: Cache deciphered n-params by info response (#505) 2023-09-17 18:52:32 -03:00
absidue
68df321858 perf(generator): Remove duplicate checks in isMiscType (#506) 2023-09-15 15:25:08 -03:00
Ryan Sandbach
f4bc8508d0 chore(docs): Minor update (#502)
* Updated documentation example to matche syntax of existing parsers.

* Changed from require since package is setup as module.
2023-09-12 03:49:36 -03:00
LuanRT
e216124bb0 chore: update docs 2023-09-10 02:14:14 -03:00
github-actions[bot]
6d98abbd53 chore(main): release 6.4.0 (#499)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2023-09-10 02:08:24 -03:00
LuanRT
fba3fc9714 fix(BackstagePost): vote_button type mismatch 2023-09-10 02:06:01 -03:00
Luan
f94ea6cf91 feat: Add support for retrieving transcripts (#500)
* feat: Add support for retrieving transcripts

* chore: lint

* chore: update docs

* chore: Do not include nodes in errors thrown

* chore: Improve error messages

* fix(ExpandableMetadata): `expanded_content` type mismatch

* chore: lint
2023-09-10 01:50:30 -03:00
Jeremy Banks
86fb33ed03 feat(PlaylistManager): add .setName() and .setDescription() functions for editing playlists (#498) 2023-09-01 17:40:25 -03:00
github-actions[bot]
bff4210349 chore(main): release 6.3.0 (#495)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2023-08-31 20:41:06 -03:00
absidue
91de6e5c0e feat(ChannelMetadata): Add music_artist_name (#497) 2023-08-31 20:29:58 -03:00
absidue
c26972c42a fix(CompactMovie): Add missing import and remove unnecessary console.log (#496) 2023-08-31 20:28:25 -03:00
Jeremy Banks
8bc2aaa358 feat(Session): Add on_behalf_of_user session option. (#494)
This specifies which channel to use if multiple are associated with the logged-in account.
2023-08-31 08:20:37 -03:00
github-actions[bot]
2e5f076fd7 chore(main): release 6.2.0 (#491)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2023-08-29 14:25:32 -03:00
absidue
0412fa05ff fix(Format): Fix is_original always being true (#492) 2023-08-29 14:23:08 -03:00
Luan
10c15bfb9f feat(Session): Add fallback for session data retrieval (#490)
* feat(Session): Add fallback for session data retrieval

Should have added this when we first implemented session data retrieval to be honest. It makes a request to YouTube's service worker and the data there can change or the request can just fail.

* chore: lint
2023-08-28 07:18:27 -03:00
github-actions[bot]
4862c35cee chore(main): release 6.1.0 (#489)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2023-08-27 16:43:10 -03:00
absidue
2eed1726d5 feat(parser): Add CompactMovie (#487) 2023-08-27 16:29:50 -03:00
absidue
8b69587787 feat(parser): Add AlertWithButton (#486) 2023-08-27 16:29:23 -03:00
absidue
ed7be2a675 feat(parser): Add ChannelHeaderLinksView (#484) 2023-08-27 16:28:49 -03:00
1514 changed files with 191219 additions and 15193 deletions

View File

@@ -1,9 +0,0 @@
.git
.github
test/
cache/
src/proto/youtube.ts
coverage/
node_modules/
dist/
src/proto/generated/

View File

@@ -1,91 +0,0 @@
plugins:
[ '@typescript-eslint', 'eslint-plugin-tsdoc' ]
env:
commonjs: true
es2021: true
node: true
extends: [ eslint:recommended, 'plugin:@typescript-eslint/recommended' ]
parser: '@typescript-eslint/parser'
parserOptions:
ecmaVersion: latest
project:
- tsconfig.json
overrides:
-
files:
- '**/*.js'
rules:
'tsdoc/syntax': 'off'
rules:
max-len:
- error
-
code: 200
ignoreComments: true
ignoreTrailingComments: true
ignoreStrings: true
ignoreTemplateLiterals: true
ignoreRegExpLiterals: true
quotes: [error, single]
'@typescript-eslint/ban-types': 'off'
'tsdoc/syntax': 'warn'
'@typescript-eslint/no-explicit-any': 'off'
'@typescript-eslint/consistent-type-imports': 'error'
'@typescript-eslint/consistent-type-exports': 'error'
no-template-curly-in-string: error
no-unreachable-loop: error
no-unused-private-class-members: 'off'
no-prototype-builtins: 'off'
no-async-promise-executor: 'off'
no-case-declarations: 'off'
no-return-assign: 'off'
no-floating-decimal: error
no-implied-eval: error
arrow-spacing: error
no-invalid-this: error
no-lone-blocks: 'off'
no-new-func: error
no-new-wrappers: error
no-new: error
no-void: error
no-octal-escape: error
no-self-compare: error
no-sequences: error
no-throw-literal: error
no-unmodified-loop-condition: error
no-useless-call: error
no-useless-concat: error
no-useless-escape: error
no-useless-return: error
no-else-return: error
no-lonely-if: error
no-undef-init: error
no-unneeded-ternary: error
no-var: error
no-multi-spaces: error
no-multiple-empty-lines: ["error", { "max": 2, "maxEOF": 0 }]
no-tabs: error
no-trailing-spaces: error
brace-style: error
new-parens: error
space-infix-ops: error
template-curly-spacing: error
wrap-regex: error
capitalized-comments: error
prefer-template: error
keyword-spacing: ["error", { "before": true } ]
array-bracket-spacing: ["error", "always"]
arrow-parens: ["error", "always"]
comma-dangle: ["error", "never"]
comma-spacing: ["error", { "before": false, "after": true }]
computed-property-spacing: ["error", "never"]
func-call-spacing: ["error", "never"]
indent: ["error", 2, { "SwitchCase": 1 }]
key-spacing: ["error", { "beforeColon": false }]
semi: ["error", "always"]
operator-assignment: ["error", "always"]

View File

@@ -10,9 +10,9 @@ jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v2
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 16
node-version: "20"
- run: npm ci
- run: npm run lint

View File

@@ -12,16 +12,15 @@ jobs:
pull-requests: write
runs-on: ubuntu-latest
steps:
- uses: google-github-actions/release-please-action@v3
- uses: googleapis/release-please-action@v4
id: release
with:
release-type: node
package-name: youtubei.js
token: ${{ secrets.GITHUB_TOKEN }}
- uses: actions/checkout@v2
- uses: actions/setup-node@v1
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: "16.x"
node-version: "20"
- name: Build for Deno
run: |
npm ci
@@ -48,9 +47,9 @@ jobs:
- name: Remove Deno folder
run: rm -rf build
if: ${{ steps.release.outputs.release_created }}
- uses: actions/setup-node@v3
- uses: actions/setup-node@v4
with:
node-version: "16.x"
node-version: "20"
registry-url: "https://registry.npmjs.org"
if: ${{ steps.release.outputs.release_created }}
- name: Publish package to npmjs

View File

@@ -8,10 +8,11 @@ jobs:
stale:
runs-on: ubuntu-latest
steps:
- uses: actions/stale@v3
- uses: actions/stale@v4
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
stale-issue-message: 'This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.'
stale-pr-message: 'This PR has been automatically marked as stale because it has not had recent activity. Remove the stale label or comment or this will be closed in 2 days'
any-of-issue-labels: 'needs-more-info,cannot-reproduce,question,help-wanted'
days-before-stale: 60
days-before-close: 4

View File

@@ -10,9 +10,9 @@ jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v2
- uses: actions/setup-node@v2
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 16
node-version: 20
- run: npm ci
- run: npm run test

6
.gitignore vendored
View File

@@ -56,6 +56,7 @@ pnpm-lock.yaml
# Downloaded assets
*.mp4
*.m4a
*.webm
*.mkv
@@ -73,5 +74,10 @@ deno/
# VSCode files
.vscode/
# Webstorm files
.idea/
# MacOS
.DS_Store
*.bin

View File

@@ -1,6 +1,8 @@
**
src/
docs/
!dist/**
!README.md
!LICENSE
!bundle/**

View File

@@ -1,5 +1,597 @@
# Changelog
## [13.1.0](https://github.com/LuanRT/YouTube.js/compare/v13.0.0...v13.1.0) (2025-02-21)
### Features
* **Channel:** Add `getCourses` method ([#883](https://github.com/LuanRT/YouTube.js/issues/883)) ([b3a4862](https://github.com/LuanRT/YouTube.js/commit/b3a48621518f09d1ce309071499d9626cc1a8488))
* **CommentView:** Parse `prepareAccountCommand` ([d0d48bf](https://github.com/LuanRT/YouTube.js/commit/d0d48bf525cc2a95dd3397a3142bea113ea9782e))
* **CommentView:** Parse some extra tooltips ([32125c7](https://github.com/LuanRT/YouTube.js/commit/32125c704565f425806a0721edd96e01028e3fdd))
* **CompactLink:** Parse `subtitle`, `iconType`, and `iconType` ([6d57353](https://github.com/LuanRT/YouTube.js/commit/6d57353a8021430a5253e2fb2c974ca98d731791))
* **FormatUtils:** choose more specific format by itag or codec ([#884](https://github.com/LuanRT/YouTube.js/issues/884)) ([1c1577e](https://github.com/LuanRT/YouTube.js/commit/1c1577e85fd46cbfa15bcee6531d9aafdda787e5))
* **parser:** `Add AnimatedThumbnailOverlayView` ([#903](https://github.com/LuanRT/YouTube.js/issues/903)) ([0cb92d9](https://github.com/LuanRT/YouTube.js/commit/0cb92d9620c13bf6b719b384f917ad2a658e15b1))
### Bug Fixes
* **dependencies:** Update `jintr` to version 3.2.1 ([02dfcae](https://github.com/LuanRT/YouTube.js/commit/02dfcae612dd528ce4f1f3f6c62ceefd02a5c790))
* **DialogView:** Type mismatch ([#897](https://github.com/LuanRT/YouTube.js/issues/897)) ([b731db8](https://github.com/LuanRT/YouTube.js/commit/b731db86c51ba292c848272f28b5a9aa2e2a6956))
* **FormatUtils:** itag matching ([#886](https://github.com/LuanRT/YouTube.js/issues/886)) ([774b3a7](https://github.com/LuanRT/YouTube.js/commit/774b3a75244db85ceb7b00f658dc2dfeb2eb4e7e))
* **innertube:** Allowing `getStreamingData` to use client ([#895](https://github.com/LuanRT/YouTube.js/issues/895)) ([5aecd0a](https://github.com/LuanRT/YouTube.js/commit/5aecd0ace96c371f0b15cdc6e45ef09beb5696af))
* **Innertube:** Properly encoded params in getPost() ([#882](https://github.com/LuanRT/YouTube.js/issues/882)) ([7d5c972](https://github.com/LuanRT/YouTube.js/commit/7d5c972c98d7c69b0b687b241c652f3098907a9f))
* **LockupMetadataView:** Parse `menuButton` ([3ffdee9](https://github.com/LuanRT/YouTube.js/commit/3ffdee9554b06db137d93e43b33fac124becf31f))
* **LockupView:** Add overlay nodes used by `VIDEO` views ([424c653](https://github.com/LuanRT/YouTube.js/commit/424c65356c24d19a921e24aadcbbb3cd03ab103a))
* **LockupView:** Fix `content_image` parsing ([083aec1](https://github.com/LuanRT/YouTube.js/commit/083aec1c805cce6b04a75e4f017b5cdf0bb6108e))
* **music#getPlaylist:** Handle `ContinuationItem` nodes ([a3fafe2](https://github.com/LuanRT/YouTube.js/commit/a3fafe2f7979313906dbaf1a7f9779f411266d6b)), closes [#904](https://github.com/LuanRT/YouTube.js/issues/904)
* **Parser:** Add `UpdateEngagementPanelContentCommand` ([3f960ef](https://github.com/LuanRT/YouTube.js/commit/3f960effa24c3b14fa3c6aadf4c7badf0ac965c9))
* **Playlist:** is_editable ([#894](https://github.com/LuanRT/YouTube.js/issues/894)) ([2b42199](https://github.com/LuanRT/YouTube.js/commit/2b4219959cbbb27cd80788e66b608fdeed3a1f1e))
### Reverts
* "fix(toDash): Fix default audio stream for dubbed movie trailers ([#858](https://github.com/LuanRT/YouTube.js/issues/858))" ([#896](https://github.com/LuanRT/YouTube.js/issues/896)) ([4325717](https://github.com/LuanRT/YouTube.js/commit/432571769ebc6634c2c9a4c1b5e53cfbbd2a5f0a))
## [13.0.0](https://github.com/LuanRT/YouTube.js/compare/v12.2.0...v13.0.0) (2025-01-20)
### ⚠ BREAKING CHANGES
* Remove `web.bundle.min`
### Features
* **ContentMetadataView:** Parse `enableTruncation` ([#863](https://github.com/LuanRT/YouTube.js/issues/863)) ([0a3104b](https://github.com/LuanRT/YouTube.js/commit/0a3104bafc03ccd29420a835b420f628b380991d))
* **getSearchSuggestions:** Add optional `pq` param for better suggestions ([c61db19](https://github.com/LuanRT/YouTube.js/commit/c61db19f2e3bd44bc5bf2ebdf8de041f169d8fab))
* **Innertube:** Add `getAttestationChallenge` ([#869](https://github.com/LuanRT/YouTube.js/issues/869)) ([33c27dd](https://github.com/LuanRT/YouTube.js/commit/33c27ddcb5ea96241b2a0bf4ec14ec5937264998))
* **Innertube:** Add ability to get individual community posts and community post comments ([#861](https://github.com/LuanRT/YouTube.js/issues/861)) ([360b29e](https://github.com/LuanRT/YouTube.js/commit/360b29ee60af2cf803106ca5315c365ddacbe51b))
* **LiveChatPaidMessage:** Parse `headerOverlayImage` and `lowerBumper` ([#851](https://github.com/LuanRT/YouTube.js/issues/851)) ([ef37aa0](https://github.com/LuanRT/YouTube.js/commit/ef37aa0a5abb573f192f86d1accb88d90d707752))
* **Music:** Add continuation support for "Up next" tab in `TrackInfo` ([#770](https://github.com/LuanRT/YouTube.js/issues/770)) ([2913d5f](https://github.com/LuanRT/YouTube.js/commit/2913d5f43dd28b9146cf05607cbe28d727463d51))
* **PageHeaderView:** Parse `heroImage` ([a602a31](https://github.com/LuanRT/YouTube.js/commit/a602a317aaaffa575d2b03754f0625a6e5858162))
* **Parser:** Add `AvatarStackView` ([c631022](https://github.com/LuanRT/YouTube.js/commit/c6310228fee1ed01f93a0e4e0482d09a967ef1be))
* **Parser:** Add `HowThisWasMadeSectionView` node ([5da8a66](https://github.com/LuanRT/YouTube.js/commit/5da8a66551c85fa45a01713383e6f621db053b46))
* **parser:** Add `ReplaceLiveChatAction` ([#847](https://github.com/LuanRT/YouTube.js/issues/847)) ([342fdd1](https://github.com/LuanRT/YouTube.js/commit/342fdd1db30bc61de5f19fc4ed35db8931706903))
* **Parser:** Implement utility class to parse `rendererContext` ([3a11b99](https://github.com/LuanRT/YouTube.js/commit/3a11b99429ff9d8cc9aebc7bbee0b7645e30f7ff))
* **parser:** Parse `OpenPopupAction` in `onResponseReceivedEndpoints` arrays ([45b7342](https://github.com/LuanRT/YouTube.js/commit/45b734288e070ef5e347cec5bae445d0cf883eba))
* **Parser:** Parse YpcTrailer in VideoInfo ([#842](https://github.com/LuanRT/YouTube.js/issues/842)) ([c0043d0](https://github.com/LuanRT/YouTube.js/commit/c0043d0194f582c2ed85341291e2eace25dd78d8))
* **parser:** Update `Button` ([#857](https://github.com/LuanRT/YouTube.js/issues/857)) ([5f899fc](https://github.com/LuanRT/YouTube.js/commit/5f899fcdb30deefc189e8325e4358812c5b05800))
* **parser:** Update `LiveChatPaidMessage` ([#846](https://github.com/LuanRT/YouTube.js/issues/846)) ([73362c6](https://github.com/LuanRT/YouTube.js/commit/73362c68fbc8b966ff46cc8b145e1e8d9fbe32ee))
* **parser:** Update `LiveChatPaidSticker` ([#849](https://github.com/LuanRT/YouTube.js/issues/849)) ([3c28c0d](https://github.com/LuanRT/YouTube.js/commit/3c28c0d2c2b583a31fe0e49cce4cdfbfe380874d))
* **parser:** Update `LiveChatTextMessage` ([#864](https://github.com/LuanRT/YouTube.js/issues/864)) ([9025122](https://github.com/LuanRT/YouTube.js/commit/902512248417ae86e25082d429b13d8c57a5c5b1))
* **parser:** Update `LiveChatTickerPaidMessageItem` ([#845](https://github.com/LuanRT/YouTube.js/issues/845)) ([29e8d30](https://github.com/LuanRT/YouTube.js/commit/29e8d3015a3d17383a8be4e6f46b389d10f111f3))
* **parser:** Update `LiveChatTickerPaidStickerItem` ([#848](https://github.com/LuanRT/YouTube.js/issues/848)) ([5f83a74](https://github.com/LuanRT/YouTube.js/commit/5f83a7416d5dc3167e6af2767e9b90f4bf89f3dc))
* **parser:** Update `LiveChatViewerEngagementMessage` ([#856](https://github.com/LuanRT/YouTube.js/issues/856)) ([b4a947a](https://github.com/LuanRT/YouTube.js/commit/b4a947a9eb9dd1ae6e9d1da1a00083ac1afca03e))
* **Playlists:** Implement `addToLibrary` and `removeFromLibrary` ([#844](https://github.com/LuanRT/YouTube.js/issues/844)) ([48460e4](https://github.com/LuanRT/YouTube.js/commit/48460e4184bac0f6626550b80696f950f7626beb))
* **RichGrid:** Parse `targetId` ([e571ee2](https://github.com/LuanRT/YouTube.js/commit/e571ee2426c6003c1bc690cbf98b0ab72ebfaa10))
* **Session:** Allow using a fixed user agent for InnerTube requests ([#876](https://github.com/LuanRT/YouTube.js/issues/876)) ([4d36655](https://github.com/LuanRT/YouTube.js/commit/4d36655b2dad74aeb74e869ca8259e9d13dfb512))
* **SubscribeButton:** Add `unsubscribe_text` ([75b8964](https://github.com/LuanRT/YouTube.js/commit/75b89641805abada1498edebac5b72a40860b215))
* **ToggleButtonView:** Add `is_toggled` ([88af6d8](https://github.com/LuanRT/YouTube.js/commit/88af6d89a56907d6f2263c01fc158400788fb5b4))
### Bug Fixes
* **ButtonCardView:** Correct typo ([#855](https://github.com/LuanRT/YouTube.js/issues/855)) ([6536801](https://github.com/LuanRT/YouTube.js/commit/6536801ec2e4f9b93d1e272b7b04e2777b74abad))
* **DescriptionPreviewView:** Parsing errors when certain fields are missing ([c2dd803](https://github.com/LuanRT/YouTube.js/commit/c2dd803eeaeec3292d92bc0efaaa2404fb87355c))
* **getSearchSuggestions:** Allow empty queries ([523700b](https://github.com/LuanRT/YouTube.js/commit/523700b728e8b2f126b1b6266dc153ad683dcbcb))
* **LiveChatTextMessage:** Make some fields optional ([#877](https://github.com/LuanRT/YouTube.js/issues/877)) ([a035b71](https://github.com/LuanRT/YouTube.js/commit/a035b7169614ac92081b8cb377711d7da559e65b))
* **sendMessage:** Handle `RunAttestationCommand` in response actions ([#859](https://github.com/LuanRT/YouTube.js/issues/859)) ([826a954](https://github.com/LuanRT/YouTube.js/commit/826a9541a44121bafe4ce19f2cd4a68fcabb2384))
* **Text#fromAttributed:** Fix `StyleRun` assuming that the `startIndex` and `length` always exist ([#862](https://github.com/LuanRT/YouTube.js/issues/862)) ([732a30c](https://github.com/LuanRT/YouTube.js/commit/732a30c09f50a9d78d5d1686ffef88a3bde2e53e))
* **Text#toHTML:** Return empty string if the text is `undefined` ([f3c777b](https://github.com/LuanRT/YouTube.js/commit/f3c777b31638cc9c6ce7f4b7ba566ff0534b47dc))
* **TextRun:** Add `img` element only if an URL is available ([913dcc7](https://github.com/LuanRT/YouTube.js/commit/913dcc74eadf1a5df7878688d2c6cf434642f1b5))
* **toDash:** Fix default audio stream for dubbed movie trailers ([#858](https://github.com/LuanRT/YouTube.js/issues/858)) ([0054690](https://github.com/LuanRT/YouTube.js/commit/00546909c02841c7e404766b13f2c02e42e3f6fc))
### Performance Improvements
* **constants:** Move the client name IDs into their own CLIENT_NAME_IDS object ([#875](https://github.com/LuanRT/YouTube.js/issues/875)) ([06887e9](https://github.com/LuanRT/YouTube.js/commit/06887e99fb1c2546e74b5026cb1ae1ce0be2e3e9))
* Optimise DASH manifest generation ([#870](https://github.com/LuanRT/YouTube.js/issues/870)) ([1a3d663](https://github.com/LuanRT/YouTube.js/commit/1a3d663cc56a54b8517eb5f82e7892d37db3082e))
### Code Refactoring
* Remove `web.bundle.min` ([e54e499](https://github.com/LuanRT/YouTube.js/commit/e54e499ff553dab51e6d9d1aebc090b50fec29ba))
## [12.2.0](https://github.com/LuanRT/YouTube.js/compare/v12.1.0...v12.2.0) (2024-12-12)
### Features
* **Actions:** Allow auth check to be skipped ([67f13ff](https://github.com/LuanRT/YouTube.js/commit/67f13fffacec2c655a03d66c6d8016620d9abcf9))
* add `VideoMetadataCarouselView` ([#839](https://github.com/LuanRT/YouTube.js/issues/839)) ([9a9bb76](https://github.com/LuanRT/YouTube.js/commit/9a9bb76a928594c5c5f3e828c86081bf79c2562d))
* **parser:** Add `ActiveAccountHeader` ([5f233ae](https://github.com/LuanRT/YouTube.js/commit/5f233ae34e278e7f7a0c48e4ba762d9bac9e312f))
* **parser:** Add `ButtonCardView` ([#834](https://github.com/LuanRT/YouTube.js/issues/834)) ([eeaae62](https://github.com/LuanRT/YouTube.js/commit/eeaae6209f238b838b9b7fdd9bbef89f4f858fa3))
* **parser:** Add `ClientSideToggleMenuItem` ([#835](https://github.com/LuanRT/YouTube.js/issues/835)) ([0b2b0da](https://github.com/LuanRT/YouTube.js/commit/0b2b0da9577f8d6ad19393700071ea9f26d4da10))
* **parser:** Add `PlaylistThumbnailOverlay` ([c8173c8](https://github.com/LuanRT/YouTube.js/commit/c8173c88e0e17ec4bb4e93af1867c55d07611cc0))
* **parser:** Update `LiveChatBanner` ([#840](https://github.com/LuanRT/YouTube.js/issues/840)) ([69d42b2](https://github.com/LuanRT/YouTube.js/commit/69d42b291c927abb9d84f97ed03518c4ddd4506e))
* **parser:** Update `LiveChatMembershipItem` ([#836](https://github.com/LuanRT/YouTube.js/issues/836)) ([0c319aa](https://github.com/LuanRT/YouTube.js/commit/0c319aacdeba106d84b7f44505a7a296a154f97a))
### Bug Fixes
* **Player:** Fix signature algorithm extraction again ([#837](https://github.com/LuanRT/YouTube.js/issues/837)) ([13e7961](https://github.com/LuanRT/YouTube.js/commit/13e796123b87136f2d5d3b3c9b3ed079a014bf46))
## [12.1.0](https://github.com/LuanRT/YouTube.js/compare/v12.0.0...v12.1.0) (2024-12-10)
### Features
* Add `MWEB` client ([4bf125b](https://github.com/LuanRT/YouTube.js/commit/4bf125b6a53460f631410e1ab949a16cc0c7d095))
* **parser:** Add mobile guide nodes ([ad2ae51](https://github.com/LuanRT/YouTube.js/commit/ad2ae51b97d84dcb9d2547b4cfef7402f2410404))
### Bug Fixes
* **Player:** Bump cache version ([283172f](https://github.com/LuanRT/YouTube.js/commit/283172f22032d60b407cb0159a391a147b569432))
* **Player:** Fix signature algorithm extraction ([#832](https://github.com/LuanRT/YouTube.js/issues/832)) ([ce4996c](https://github.com/LuanRT/YouTube.js/commit/ce4996cea7b0607cb7f9aca7ae9c9e439d964a5a))
## [12.0.0](https://github.com/LuanRT/YouTube.js/compare/v11.0.1...v12.0.0) (2024-12-05)
### ⚠ BREAKING CHANGES
* **parser:** Remove old comment node
* **Log:** Convert Log class to module ([#814](https://github.com/LuanRT/YouTube.js/issues/814))
* **parser:** Remove getters that have been deprecated for a long time ([#815](https://github.com/LuanRT/YouTube.js/issues/815))
* **parser:** Implement endpoint/command parsers ([#812](https://github.com/LuanRT/YouTube.js/issues/812))
### Features
* **account:** Add missing property `channel_handle` ([#789](https://github.com/LuanRT/YouTube.js/issues/789)) ([677e1f0](https://github.com/LuanRT/YouTube.js/commit/677e1f08075a4a59274f89f3eb65967d7d0ab01b))
* Add `getCourses` ([#798](https://github.com/LuanRT/YouTube.js/issues/798)) ([cfb48fa](https://github.com/LuanRT/YouTube.js/commit/cfb48fab89792d87a7377eaf15a56d289d26769b))
* **EngagementPanelTitleHeader:** Add `contextual_info` and `menu` ([af3a916](https://github.com/LuanRT/YouTube.js/commit/af3a91645d84798e744519ec8f24e565cc1ecdb1))
* **Log:** Convert Log class to module ([#814](https://github.com/LuanRT/YouTube.js/issues/814)) ([fc55716](https://github.com/LuanRT/YouTube.js/commit/fc5571629eca037af7de03f4b903da6add1f300b))
* **NavigationEndpoint:** Add name property ([bdebb9f](https://github.com/LuanRT/YouTube.js/commit/bdebb9f741291d2f0640274454c90b5ccda8ea5d))
* **parser:** Add `AddToPlaylist` node ([2940f7b](https://github.com/LuanRT/YouTube.js/commit/2940f7b908ee720492994a41efdabb9fae08708c))
* **parser:** Add `animated_image` to `PageHeaderView` ([#819](https://github.com/LuanRT/YouTube.js/issues/819)) ([8e50ebd](https://github.com/LuanRT/YouTube.js/commit/8e50ebd92583ae76b080fed4c7599684370dc09d))
* **parser:** Add `ChangeEngagementPanelVisibilityAction` ([c2b2d7a](https://github.com/LuanRT/YouTube.js/commit/c2b2d7ad52d2cdd1d721ae4569fb6f8cb0540476))
* **parser:** Add `ChangeEngagementPanelVisibilityEndpoint` ([2824900](https://github.com/LuanRT/YouTube.js/commit/28249008521b4cb600756f8ff83e10ec3037ba69))
* **parser:** Add `LiveChatBannerChatSummary` node, update `TextRun` node ([#809](https://github.com/LuanRT/YouTube.js/issues/809)) ([7fb00fa](https://github.com/LuanRT/YouTube.js/commit/7fb00fa378574d1567d436f8a824fbb618db2373))
* **parser:** Add `LiveChatBannerRedirect` node ([#799](https://github.com/LuanRT/YouTube.js/issues/799)) ([ad302b8](https://github.com/LuanRT/YouTube.js/commit/ad302b8b17c0bfc1d81728130d4ba25a88ed241f))
* **parser:** add `LiveChatModeChangeMessage` node ([#811](https://github.com/LuanRT/YouTube.js/issues/811)) ([7156a58](https://github.com/LuanRT/YouTube.js/commit/7156a585c036a5000d0a50f3f4860a462762fdfe))
* **parser:** Add `LiveChatSponsorshipsGiftPurchaseAnnouncement` and `LiveChatSponsorshipsHeader` nodes ([#793](https://github.com/LuanRT/YouTube.js/issues/793)) ([4e9c2a5](https://github.com/LuanRT/YouTube.js/commit/4e9c2a585bf84751dd4e3964f70fba284c8b8e38))
* **parser:** Add `LiveChatSponsorshipsGiftRedemptionAnnouncement` node ([#795](https://github.com/LuanRT/YouTube.js/issues/795)) ([20f7971](https://github.com/LuanRT/YouTube.js/commit/20f797129973c6b91fa228e50d375b0c9d0226d2))
* **parser:** Add `MenuFlexibleItem` ([bc9a0ed](https://github.com/LuanRT/YouTube.js/commit/bc9a0ed6c1dd7aac280e0461823827d71ce0991f))
* **parser:** Add `NotificationAction` node ([d36ddb8](https://github.com/LuanRT/YouTube.js/commit/d36ddb804a03b7d22cd20c2b846f86dd49689c0c))
* **parser:** Add `PlayerOverlayVideoDetails` node ([dc2ed04](https://github.com/LuanRT/YouTube.js/commit/dc2ed046b8424134c675f30e7452fbd6bda0d228))
* **parser:** Add `RunAttestationCommand` ([4729016](https://github.com/LuanRT/YouTube.js/commit/4729016fb98e7045ee4043857be7eef780c01e35))
* **parser:** Add `ShowEngagementPanelEndpoint` ([ec85b0f](https://github.com/LuanRT/YouTube.js/commit/ec85b0f9421156c674c5c4d4a3a2e39eca7dbfbf))
* **parser:** Add `SignalAction` node ([feeb21b](https://github.com/LuanRT/YouTube.js/commit/feeb21b3ebb83772fcceb1f6b0a90c17db613451))
* **parser:** Add `UnifiedSharePanel` ([4a1397f](https://github.com/LuanRT/YouTube.js/commit/4a1397f1bcc2ad9964626b11c90831b90989b6af))
* **parser:** Add `UpdateSubscribeButtonAction` ([fdb7540](https://github.com/LuanRT/YouTube.js/commit/fdb754043b809223ae8938fbbdd5780f585b697e))
* **parser:** Add `VideoViewCount` node ([ad448f8](https://github.com/LuanRT/YouTube.js/commit/ad448f8106116e44e65eb5f5351c38fc4a31d809))
* **parser:** Add optional image property to LockupMetadataView ([#806](https://github.com/LuanRT/YouTube.js/issues/806)) ([0914299](https://github.com/LuanRT/YouTube.js/commit/091429921530d65daf8f5b281c7c54117ee9a474))
* **Parser:** add support for parsing subtitle for `RichShelf` ([#805](https://github.com/LuanRT/YouTube.js/issues/805)) ([038efff](https://github.com/LuanRT/YouTube.js/commit/038efff17f3b12d80619c8990ca880e919d2bfe5))
* **Parser:** Add support for parsing subtitle for `Shelf` ([#792](https://github.com/LuanRT/YouTube.js/issues/792)) ([34ae38c](https://github.com/LuanRT/YouTube.js/commit/34ae38cbf4aa0a42a6024fa99eb0fe553639c8ce))
* **SubscribeButton:** Parse more endpoints ([8bf9eb7](https://github.com/LuanRT/YouTube.js/commit/8bf9eb7044ad9a5de0892207690195f5646df288))
* **VideoViewCount:** Add `extra_short_view_count` field ([d10fe68](https://github.com/LuanRT/YouTube.js/commit/d10fe6834a0d063d94b65289d54a52ed3398eff4))
### Bug Fixes
* **ExpandableVideoDescriptionBody:** Parse attributed description ([360580e](https://github.com/LuanRT/YouTube.js/commit/360580ea6ea6fbdd7fbc0aa038d96b17de17e4f4))
* **parser:** The AvatarView.image_processor property is optional ([#807](https://github.com/LuanRT/YouTube.js/issues/807)) ([4b178e4](https://github.com/LuanRT/YouTube.js/commit/4b178e4bfbc4cb003ed098afcd0370f98dbf834b))
* **parser:** Update list of possible content_type in LockupView ([#808](https://github.com/LuanRT/YouTube.js/issues/808)) ([680da9f](https://github.com/LuanRT/YouTube.js/commit/680da9f501db02a9bed2fa8357df021e63024e5f))
* **Player:** Add more ways to find the nsig algo ([acfb0c5](https://github.com/LuanRT/YouTube.js/commit/acfb0c58bec25782aa92963cd590a56967229d62))
* **PlaylistAddToOption:** Use correct type for `contains_selected_videos` ([53d1c75](https://github.com/LuanRT/YouTube.js/commit/53d1c759b65ce9b6cb9f236c02828077d4f506cc))
* **ReelPlayerOverlay:** Update `subscribe_button_renderer` type to include SubscribeButton ([daa5a29](https://github.com/LuanRT/YouTube.js/commit/daa5a2982b24f107681050f2b534986b4d374c5d))
* **SignalAction:** Rename `action` to `signal` ([8ab760e](https://github.com/LuanRT/YouTube.js/commit/8ab760ea2e268a4f108b2b4a8d46193f5450bf4c))
* **SubscribeButton:** Parse endpoints using `NavigationEndpoint` ([126a66f](https://github.com/LuanRT/YouTube.js/commit/126a66f317da0c6b486202ad04483b9799bfaf4c))
* **UnifiedSharePanel:** Check if `thirdPartyNetworkSection` exists ([d3f6af0](https://github.com/LuanRT/YouTube.js/commit/d3f6af07754f75c578dc11e8ea4815ad91f0cac4))
* **VideoAttributeView:** Parse `secondarySubtitle` only if exists ([0a99342](https://github.com/LuanRT/YouTube.js/commit/0a99342ccbd6f8b1c611ef6b157a599ff5ae2247))
* **VideoCard:** fix parsing author, view count and published date ([#791](https://github.com/LuanRT/YouTube.js/issues/791)) ([a4394db](https://github.com/LuanRT/YouTube.js/commit/a4394dbb82203eeabcb8684ca9105f83e3b0fb1b))
* **VideoSecondaryInfo:** Parse `show_more_text` and `show_less_text` correctly ([790f817](https://github.com/LuanRT/YouTube.js/commit/790f8172fc2bbdbf17f16b04a2676fd9088d8878))
### Miscellaneous Chores
* **parser:** Remove getters that have been deprecated for a long time ([#815](https://github.com/LuanRT/YouTube.js/issues/815)) ([9cf0d3f](https://github.com/LuanRT/YouTube.js/commit/9cf0d3f3b3099af3dd59bc4ca99fefe217a91020))
### Code Refactoring
* **parser:** Implement endpoint/command parsers ([#812](https://github.com/LuanRT/YouTube.js/issues/812)) ([7397aa3](https://github.com/LuanRT/YouTube.js/commit/7397aa3f6425cb2f3dcc625502fd1ce5a5db6db3))
* **parser:** Remove old comment node ([2f087d4](https://github.com/LuanRT/YouTube.js/commit/2f087d47a0199870b313717f3d01598f8168be4b))
## [11.0.1](https://github.com/LuanRT/YouTube.js/compare/v11.0.0...v11.0.1) (2024-10-28)
### Bug Fixes
* **VideoInfo:** Fix like count being undefined ([#787](https://github.com/LuanRT/YouTube.js/issues/787)) ([182bf42](https://github.com/LuanRT/YouTube.js/commit/182bf42d3cdf5148c667e958cd4d4eaa091a6d68))
## [11.0.0](https://github.com/LuanRT/YouTube.js/compare/v10.5.0...v11.0.0) (2024-10-28)
### ⚠ BREAKING CHANGES
* Deprecate `account#getAnalytics`, `account#getTimeWatched` and `account#getAnalytics`
### Features
* Add `TVHTML5` InnerTube client ([b45609a](https://github.com/LuanRT/YouTube.js/commit/b45609aa0fcd801c379ffdafd04c6c3c2ed3deba))
* Add `WEB_CREATOR` client ([#757](https://github.com/LuanRT/YouTube.js/issues/757)) ([dd7f5cf](https://github.com/LuanRT/YouTube.js/commit/dd7f5cf778b8acca95cc6d9c6e379e3e87e0ee8a))
* **history:** Add ability to remove videos from watch history ([#706](https://github.com/LuanRT/YouTube.js/issues/706)) ([22dd71d](https://github.com/LuanRT/YouTube.js/commit/22dd71d7dad5029f2f7ed0deafbae3386ebe298d))
* **ProtoUtils:** Add support for creating NextParams ([#762](https://github.com/LuanRT/YouTube.js/issues/762)) ([910c979](https://github.com/LuanRT/YouTube.js/commit/910c9791e7aed9e28cd42f3bcf28b8b8d89edb21))
* Support auto-dubbed audio tracks ([#786](https://github.com/LuanRT/YouTube.js/issues/786)) ([a4ef224](https://github.com/LuanRT/YouTube.js/commit/a4ef2249ffbe14f5d5fa702b269dd0f61e14ada8))
### Bug Fixes
* fix deno usage of protobuf and jintr ([#776](https://github.com/LuanRT/YouTube.js/issues/776)) ([02513b7](https://github.com/LuanRT/YouTube.js/commit/02513b76ed66041044e80f8749df7f29379c424e))
* Include jinter in the cjs build ([305a398](https://github.com/LuanRT/YouTube.js/commit/305a398158a6cac82e6ef288fed4bf1661c89d52))
* **InteractionManager:** Use `WEB` for all actions ([d9ac99d](https://github.com/LuanRT/YouTube.js/commit/d9ac99d3324c2987aebb6b8e40317780478b7c19))
* **LiveChat#sendMessage:** Switch to `WEB` client ([bb3f114](https://github.com/LuanRT/YouTube.js/commit/bb3f114aa34dd50602da794dcb3aa3f28a5a2ed9))
* **package:** Use `jsr:@luanrt/jintr` on Deno ([d9ec23c](https://github.com/LuanRT/YouTube.js/commit/d9ec23c73ca4f370df45926206a2ff070bb6552f))
* **parser:** Fix ShortsLockupView assuming that the primary text always exists ([#775](https://github.com/LuanRT/YouTube.js/issues/775)) ([43cef9e](https://github.com/LuanRT/YouTube.js/commit/43cef9e67e9defbfc498b6381ae93f967622f83b))
* **toDash:** Fix dash.js 4.x compatibility ([#765](https://github.com/LuanRT/YouTube.js/issues/765)) ([5ff30e1](https://github.com/LuanRT/YouTube.js/commit/5ff30e12ded29afff5a758cbe96ac3418e6d20aa))
### Code Refactoring
* Deprecate `account#getAnalytics`, `account#getTimeWatched` and `account#getAnalytics` ([0081e11](https://github.com/LuanRT/YouTube.js/commit/0081e11ebcff8c719902d93edf8760d3e8702e00))
## [10.5.0](https://github.com/LuanRT/YouTube.js/compare/v10.4.0...v10.5.0) (2024-09-19)
### Features
* Add `WEB_EMBEDDED` client ([#756](https://github.com/LuanRT/YouTube.js/issues/756)) ([eaf218f](https://github.com/LuanRT/YouTube.js/commit/eaf218f5da758fc37d71f7d00ba9e42533194f8a))
* extend music getInfo to allow MusicResponsiveListItem and Nav Endpoints ([#751](https://github.com/LuanRT/YouTube.js/issues/751)) ([5db449c](https://github.com/LuanRT/YouTube.js/commit/5db449cc6d86b2df1e92302ec5c74e6d44d822fb))
* **parser:** Add `ShortsLockupView` and `BadgeView` nodes ([#746](https://github.com/LuanRT/YouTube.js/issues/746)) ([e1e76ee](https://github.com/LuanRT/YouTube.js/commit/e1e76ee61629f84f4b7de9579ae9f6d6bf97bab8))
### Bug Fixes
* **ItemSection:** FeedFilterChipBar parse error ([#741](https://github.com/LuanRT/YouTube.js/issues/741)) ([bf6cc00](https://github.com/LuanRT/YouTube.js/commit/bf6cc006997675010db61fcd776244b234be5611))
* **parser:** The icon_name property does not always exist in ThumbnailBadgeView ([#745](https://github.com/LuanRT/YouTube.js/issues/745)) ([094a96f](https://github.com/LuanRT/YouTube.js/commit/094a96fb5d8170d1f727ef6da84b258596b1a09a))
* **Session:** Set default values for `hl` and `gl` in context builder ([7a39326](https://github.com/LuanRT/YouTube.js/commit/7a3932682112a0d76c04f65ae35445fc35403a00))
## [10.4.0](https://github.com/LuanRT/YouTube.js/compare/v10.3.0...v10.4.0) (2024-08-27)
### Features
* **parser:** Add `VideoAttributesSectionView` node ([#732](https://github.com/LuanRT/YouTube.js/issues/732)) ([4b60b97](https://github.com/LuanRT/YouTube.js/commit/4b60b97132b0ee42b41838f3336c582a7f7f7aec))
* **Player:** Add support for Proof of Identity tokens ([#708](https://github.com/LuanRT/YouTube.js/issues/708)) ([c9f0ddd](https://github.com/LuanRT/YouTube.js/commit/c9f0ddd573de297c0b384e422e6c1737454926e2))
* **Utils:** Add `UMP` parser ([261f2ac](https://github.com/LuanRT/YouTube.js/commit/261f2ac12b6a9a5bd5f7a43557018de333f7bec3))
### Bug Fixes
* **examples:** Use BgUtils to generate pot [skip ci] ([d89909a](https://github.com/LuanRT/YouTube.js/commit/d89909a19a1486bee7e3275014725b4e3dc2cbe2))
* **FormatOptions:** `client` missing some values ([fcd00b0](https://github.com/LuanRT/YouTube.js/commit/fcd00b0fb0f88a16c27da1ed89e9a2c4887e5c52))
* **PlayerEndpoint:** Don't set `undefined` fields ([0e91a08](https://github.com/LuanRT/YouTube.js/commit/0e91a08ae2194a07defc4b1e12ff3edbe13b72df))
* **Search:** Fix it occasionally returning only a small number of results ([#720](https://github.com/LuanRT/YouTube.js/issues/720)) ([2c0bb23](https://github.com/LuanRT/YouTube.js/commit/2c0bb237e1d0eb160dc3f879f5cab2022d9b5b04))
* **Session:** `PoToken` not being set correctly ([#729](https://github.com/LuanRT/YouTube.js/issues/729)) ([bb6e647](https://github.com/LuanRT/YouTube.js/commit/bb6e647b8c88753669acde43d0d648aaf11caba6))
* **Session:** Fix remote visitor data not gettting used ([#731](https://github.com/LuanRT/YouTube.js/issues/731)) ([7afc3da](https://github.com/LuanRT/YouTube.js/commit/7afc3da80ee3b5aa6edd2a899be82c1a21e03556))
* **Session:** Visitor data not being used properly ([f1973c1](https://github.com/LuanRT/YouTube.js/commit/f1973c11d9a492898b5e72b1f2b79291b674e229))
* **ThumbnailOverlayResumePlayback:** Update `percent_duration_watched` type ([#737](https://github.com/LuanRT/YouTube.js/issues/737)) ([f9ccba4](https://github.com/LuanRT/YouTube.js/commit/f9ccba4af5268d67d8610a1a5d623964f56d170d))
## [10.3.0](https://github.com/LuanRT/YouTube.js/compare/v10.2.0...v10.3.0) (2024-08-01)
### Features
* **parser:** Add `EomSettingsDisclaimer` node ([#703](https://github.com/LuanRT/YouTube.js/issues/703)) ([a9bf225](https://github.com/LuanRT/YouTube.js/commit/a9bf225a62108e47a50316235a83a814c682d745))
* **PlaylistManager:** Add ability to remove videos by set ID ([#715](https://github.com/LuanRT/YouTube.js/issues/715)) ([d85fbc5](https://github.com/LuanRT/YouTube.js/commit/d85fbc56cf0fd7367b182ae36e65c1701bc5e62d))
### Bug Fixes
* **HTTPClient:** Adjust more context fields for the iOS client ([#705](https://github.com/LuanRT/YouTube.js/issues/705)) ([3153375](https://github.com/LuanRT/YouTube.js/commit/3153375bcaa6c03afba9da8474e6a9d37471ed29))
## [10.2.0](https://github.com/LuanRT/YouTube.js/compare/v10.1.0...v10.2.0) (2024-07-25)
### Features
* **Format:** Add `is_secondary` for detecting secondary audio tracks ([#697](https://github.com/LuanRT/YouTube.js/issues/697)) ([a352dde](https://github.com/LuanRT/YouTube.js/commit/a352ddeb9db001e99f49025048ad0942d84f1b3e))
* **parser:** add classdata to unhandled parse errors ([#691](https://github.com/LuanRT/YouTube.js/issues/691)) ([090539b](https://github.com/LuanRT/YouTube.js/commit/090539b28f9bc3387d01e37325ba5741b33b1765))
* **proto:** Add `comment_id` to commentSectionParams ([#693](https://github.com/LuanRT/YouTube.js/issues/693)) ([a5f6209](https://github.com/LuanRT/YouTube.js/commit/a5f62093a18705fc822abd86beaa81788b6535ce))
### Bug Fixes
* **parser:** ignore MiniGameCardView node ([#692](https://github.com/LuanRT/YouTube.js/issues/692)) ([6d0bc89](https://github.com/LuanRT/YouTube.js/commit/6d0bc89be18f27a8ce74517f5cab5020d6790328))
* **parser:** ThumbnailView background color ([#686](https://github.com/LuanRT/YouTube.js/issues/686)) ([0f8f92a](https://github.com/LuanRT/YouTube.js/commit/0f8f92a28a5b6143e890626b22ce570730a0cf09))
* **Player:** Bump cache version ([#702](https://github.com/LuanRT/YouTube.js/issues/702)) ([6765f4e](https://github.com/LuanRT/YouTube.js/commit/6765f4e0d791c657fc7411e9cdd2c0f9284e9982))
* **Player:** Fix extracting the n-token decipher algorithm again ([#701](https://github.com/LuanRT/YouTube.js/issues/701)) ([3048f70](https://github.com/LuanRT/YouTube.js/commit/3048f70f60756884bd7b591d770f7b6343cfa259))
## [10.1.0](https://github.com/LuanRT/YouTube.js/compare/v10.0.0...v10.1.0) (2024-07-10)
### Features
* **Session:** Add `configInfo` to InnerTube context ([5a8fd3a](https://github.com/LuanRT/YouTube.js/commit/5a8fd3ad37bce1decad28ec3727453ddd430a561))
* **toDash:** Add option to include WebVTT or TTML captions ([#673](https://github.com/LuanRT/YouTube.js/issues/673)) ([bd9f6ac](https://github.com/LuanRT/YouTube.js/commit/bd9f6ac64ca9ba96e856aabe5fcc175fd9c294dc))
* **toDash:** Add the "dub" role to translated captions ([#677](https://github.com/LuanRT/YouTube.js/issues/677)) ([858cdd1](https://github.com/LuanRT/YouTube.js/commit/858cdd197cb2bb1e1d7a7285966cb56043ad8961))
### Bug Fixes
* **FormatUtils:** Throw an error if download requests fails ([a19511d](https://github.com/LuanRT/YouTube.js/commit/a19511de24bb82007aab072844efe64bbb8698da))
* **InfoPanelContent:** Update InfoPanelContent node to also support `paragraphs` ([4cbaa79](https://github.com/LuanRT/YouTube.js/commit/4cbaa7983f35a82b9907197769672ac3b300bfbe))
* **Player:** Fix extracting the n-token decipher algorithm ([#682](https://github.com/LuanRT/YouTube.js/issues/682)) ([142a7d0](https://github.com/LuanRT/YouTube.js/commit/142a7d042885188605bdc0655d3733502d1e20fa))
* **proto:** Update `Context` message ([62ac2f6](https://github.com/LuanRT/YouTube.js/commit/62ac2f6f32d35fec3c31b5f5d556bd4569fa49f9)), closes [#681](https://github.com/LuanRT/YouTube.js/issues/681)
* **Session:** Round UTC offset minutes ([84f90aa](https://github.com/LuanRT/YouTube.js/commit/84f90aaf2908ecacb9dfb6ce5497c4c4d14a72c3))
* **toDash:** Fix image representations not being spec compliant ([#672](https://github.com/LuanRT/YouTube.js/issues/672)) ([e5aab9a](https://github.com/LuanRT/YouTube.js/commit/e5aab9a9b35f0752cd5ca50bfa25936dce4718c6))
* **YTMusic:** Add support for new header layouts ([14c3a06](https://github.com/LuanRT/YouTube.js/commit/14c3a06d402989e98a9d32c79b2dc26f74fb0219))
## [10.0.0](https://github.com/LuanRT/YouTube.js/compare/v9.4.0...v10.0.0) (2024-06-09)
### ⚠ BREAKING CHANGES
* **Innertube#getPlaylists:** Return a `Feed` instance instead of items
* **OAuth2:** Rewrite auth module ([#661](https://github.com/LuanRT/YouTube.js/issues/661))
### Features
* **Format:** Add `is_drc` ([#656](https://github.com/LuanRT/YouTube.js/issues/656)) ([6bb2086](https://github.com/LuanRT/YouTube.js/commit/6bb2086875d089f47c5f86ce94db9e32cb051319))
* **Platform:** Add support for `react-native` platform ([#593](https://github.com/LuanRT/YouTube.js/issues/593)) ([2980a60](https://github.com/LuanRT/YouTube.js/commit/2980a608b67f18416d7f73f1bdbcf4b897307b26))
* **Session:** Add `enable_session_cache` option ([#664](https://github.com/LuanRT/YouTube.js/issues/664)) ([7953296](https://github.com/LuanRT/YouTube.js/commit/795329658033652625d2d61b275ccf703573a437))
* **toDash:** Add support for stable volume/DRC ([#662](https://github.com/LuanRT/YouTube.js/issues/662)) ([031ffb6](https://github.com/LuanRT/YouTube.js/commit/031ffb696e3b7e160779e8b55a49b0cfa9f95620))
### Bug Fixes
* **ButtonView:** Rename `type` property to `button_type` ([15f3b5f](https://github.com/LuanRT/YouTube.js/commit/15f3b5fdba17f11cddada168de268546875e48f9))
* **Cache:** Use `TextEncoder` to encode compressed data ([384b80e](https://github.com/LuanRT/YouTube.js/commit/384b80ee41d7547a00d8dc17c50c8542629264b5))
* **FlexibleActionsView:** Update actions array type to include `ToggleButtonView` ([040a091](https://github.com/LuanRT/YouTube.js/commit/040a09163903b914f546d5083dbfdeab7175b24c))
* **InfoPanelContainer:** Use new attributed text prop ([5cdb9e1](https://github.com/LuanRT/YouTube.js/commit/5cdb9e1e2fa4ad5abdb3659bb35d0b3edc60123c))
* **ItemSection:** Fix `target_id` not being set because of a typo. ([#655](https://github.com/LuanRT/YouTube.js/issues/655)) ([8106654](https://github.com/LuanRT/YouTube.js/commit/810665407e91b2890a8e555fd759d67ccd800379))
* **MusicResponsiveHeader:** Add `Text` import ([583fd9f](https://github.com/LuanRT/YouTube.js/commit/583fd9f8d70735d071b34bd1d68faa62eeac593a))
### Performance Improvements
* **general:** Add session cache and LZW compression ([#663](https://github.com/LuanRT/YouTube.js/issues/663)) ([cf29664](https://github.com/LuanRT/YouTube.js/commit/cf29664d376ff792602400ef9a4ac301c676735c))
### Code Refactoring
* **Innertube#getPlaylists:** Return a `Feed` instance instead of items ([7660450](https://github.com/LuanRT/YouTube.js/commit/766045049d7154866e6fe32f6d965025d736d77d))
* **OAuth2:** Rewrite auth module ([#661](https://github.com/LuanRT/YouTube.js/issues/661)) ([b6ce5f9](https://github.com/LuanRT/YouTube.js/commit/b6ce5f903fa2285cb381d73aedf02cc5e2712478))
## [9.4.0](https://github.com/LuanRT/YouTube.js/compare/v9.3.0...v9.4.0) (2024-04-29)
### Features
* **Format:** Add `projection_type` and `stereo_layout` ([#643](https://github.com/LuanRT/YouTube.js/issues/643)) ([064436c](https://github.com/LuanRT/YouTube.js/commit/064436cef30e892d8f569d4f7b146557fd72b09f))
* **Format:** Add `spatial_audio_type` ([#647](https://github.com/LuanRT/YouTube.js/issues/647)) ([0ba8c54](https://github.com/LuanRT/YouTube.js/commit/0ba8c54257b068d7e4518c982396acb42f1dd41d))
* **Parser:** Add `MusicResponsiveHeader` node ([ea82bea](https://github.com/LuanRT/YouTube.js/commit/ea82beaa10f6c877d6dd3102e10f6ae382560e0f))
## [9.3.0](https://github.com/LuanRT/YouTube.js/compare/v9.2.1...v9.3.0) (2024-04-11)
### Features
* **CommentView:** Implement comment interaction methods ([1c08bfe](https://github.com/LuanRT/YouTube.js/commit/1c08bfe113804c69fbc4e49b42442d9a63d73be6))
### Bug Fixes
* **CommentThread:** Replies not being parsed correctly ([66e34f9](https://github.com/LuanRT/YouTube.js/commit/66e34f9388429a2088d5c5835d19eebdc881c957))
## [9.2.1](https://github.com/LuanRT/YouTube.js/compare/v9.2.0...v9.2.1) (2024-04-09)
### Bug Fixes
* **toDash:** Add missing transfer characteristics for h264 streams ([#631](https://github.com/LuanRT/YouTube.js/issues/631)) ([0107049](https://github.com/LuanRT/YouTube.js/commit/010704929fa4b737f68a5a1f10bf0b166cfbf905))
## [9.2.0](https://github.com/LuanRT/YouTube.js/compare/v9.1.0...v9.2.0) (2024-03-31)
### Features
* add support of cloudflare workers ([#596](https://github.com/LuanRT/YouTube.js/issues/596)) ([2029aec](https://github.com/LuanRT/YouTube.js/commit/2029aec90de3c0fdb022094d7b704a2feed4133b))
* **parser:** Support CommentView nodes ([#614](https://github.com/LuanRT/YouTube.js/issues/614)) ([900f557](https://github.com/LuanRT/YouTube.js/commit/900f5572021d348e7012909f2080e52eac06adae))
* **parser:** Support LockupView and it's child nodes ([#609](https://github.com/LuanRT/YouTube.js/issues/609)) ([7ca2a0c](https://github.com/LuanRT/YouTube.js/commit/7ca2a0c3e43ebd4b9443e69b7432f302b09e9c7a))
* **Text:** Support formatting and emojis in `fromAttributed` ([#615](https://github.com/LuanRT/YouTube.js/issues/615)) ([e6f1f07](https://github.com/LuanRT/YouTube.js/commit/e6f1f078a828f8ea5db1fe7aec9f677bc53694e3))
### Bug Fixes
* **Cache:** handle the value read from the db correctly according to its type ([#620](https://github.com/LuanRT/YouTube.js/issues/620)) ([3170659](https://github.com/LuanRT/YouTube.js/commit/317065988007c860bf6173b0ac3c3d685ed81d20))
* **PlayerEndpoint:** Workaround for "The following content is not available on this app" (Android) ([#624](https://github.com/LuanRT/YouTube.js/issues/624)) ([d589365](https://github.com/LuanRT/YouTube.js/commit/d589365ea27f540ff36e33a65362c932cd28c274))
## [9.1.0](https://github.com/LuanRT/YouTube.js/compare/v9.0.2...v9.1.0) (2024-02-23)
### Features
* **Format:** Support caption tracks in adaptive formats ([#598](https://github.com/LuanRT/YouTube.js/issues/598)) ([bff65f8](https://github.com/LuanRT/YouTube.js/commit/bff65f8889c32813ec05bd187f3a4386fc6127c0))
### Bug Fixes
* **Playlist:** `items` getter failing if a playlist contains Shorts ([89fa3b2](https://github.com/LuanRT/YouTube.js/commit/89fa3b27a839d98aaf8bd70dd75220ee309c2bea))
* **Session:** Don't try to extract api version from service worker ([2068dfb](https://github.com/LuanRT/YouTube.js/commit/2068dfb73eefc0e40157421d4e5b4096c0c8429c))
## [9.0.2](https://github.com/LuanRT/YouTube.js/compare/v9.0.1...v9.0.2) (2024-01-31)
### Bug Fixes
* **VideoInfo:** Fix error because of typo in getWatchNextContinuation ([#590](https://github.com/LuanRT/YouTube.js/issues/590)) ([b21eb9f](https://github.com/LuanRT/YouTube.js/commit/b21eb9f33d956e130bac98712384125ae04ace47))
## [9.0.1](https://github.com/LuanRT/YouTube.js/compare/v9.0.0...v9.0.1) (2024-01-26)
### Bug Fixes
* **build:** Circular imports causing issues with webpack ([81dd5d3](https://github.com/LuanRT/YouTube.js/commit/81dd5d3288771132e7fb904b620e58277f639ccc))
## [9.0.0](https://github.com/LuanRT/YouTube.js/compare/v8.2.0...v9.0.0) (2024-01-25)
### ⚠ BREAKING CHANGES
* **toDash:** Add support for generating manifests for Post Live DVR videos ([#580](https://github.com/LuanRT/YouTube.js/issues/580))
### Features
* **Channel:** Support getting about with PageHeader ([#581](https://github.com/LuanRT/YouTube.js/issues/581)) ([2e710dc](https://github.com/LuanRT/YouTube.js/commit/2e710dc9f7e206627f189df19be17009b270bc8b))
* **Channel:** Support PageHeader being used on user channels ([#577](https://github.com/LuanRT/YouTube.js/issues/577)) ([6082b4a](https://github.com/LuanRT/YouTube.js/commit/6082b4a52ee07a622735e6e9128a0531a5ae3bfb))
* **Format:** Add `max_dvr_duration_sec` and `target_duration_dec` ([#570](https://github.com/LuanRT/YouTube.js/issues/570)) ([586bb5f](https://github.com/LuanRT/YouTube.js/commit/586bb5f1398d68bfabfb9449f527e53c398c3767))
* **parser:** Add `ImageBannerView` ([#583](https://github.com/LuanRT/YouTube.js/issues/583)) ([2073aa9](https://github.com/LuanRT/YouTube.js/commit/2073aa910a0e441a8ec1a9ba0434051ec0e2e6a9))
* **toDash:** Add support for generating manifests for Post Live DVR videos ([#580](https://github.com/LuanRT/YouTube.js/issues/580)) ([6dd03e1](https://github.com/LuanRT/YouTube.js/commit/6dd03e1658036c2fba0696de81033b5e16abb379))
* **VideoDetails:** Add `is_live_dvr_enabled`, `is_low_latency_live_stream` and `live_chunk_readahead` ([#569](https://github.com/LuanRT/YouTube.js/issues/569)) ([254f779](https://github.com/LuanRT/YouTube.js/commit/254f77944fcd398cc19cb62b82b0fdfbe6ed70ed))
* **VideoInfo:** Add live stream `end_timestamp` ([#571](https://github.com/LuanRT/YouTube.js/issues/571)) ([562e6a2](https://github.com/LuanRT/YouTube.js/commit/562e6a20f06ef5302af427861355215630d91edc))
### Bug Fixes
* **DecoratedAvatarView:** Fix parsing and optional properties ([#584](https://github.com/LuanRT/YouTube.js/issues/584)) ([fed3512](https://github.com/LuanRT/YouTube.js/commit/fed3512461277b7fc41e26c770e2bd3d4a7d5eb5))
* **PlayerCaptionTracklist:** Fix `captions_tracks[].kind` type ([#586](https://github.com/LuanRT/YouTube.js/issues/586)) ([7fbc37f](https://github.com/LuanRT/YouTube.js/commit/7fbc37f9d1c109e448085d5736326dce82ca2c9a))
* **proto:** Fix visitor data base64url decoding ([#576](https://github.com/LuanRT/YouTube.js/issues/576)) ([3980f97](https://github.com/LuanRT/YouTube.js/commit/3980f97b8fca05f95cda1ab347db9402c55b8b3c))
* **toDash:** Add missing transfer characteristics for h264 streams ([#573](https://github.com/LuanRT/YouTube.js/issues/573)) ([59f4cfb](https://github.com/LuanRT/YouTube.js/commit/59f4cfb4db6184d47f0a6634832055e9ce71f644))
## [8.2.0](https://github.com/LuanRT/YouTube.js/compare/v8.1.0...v8.2.0) (2024-01-08)
### Features
* **OAuth:** Allow passing custom client identity ([#566](https://github.com/LuanRT/YouTube.js/issues/566)) ([7ffd0fc](https://github.com/LuanRT/YouTube.js/commit/7ffd0fc25edef99a938e7986b1c74af05b8f954e))
### Bug Fixes
* **Parser:** Add `SortFilterHeader` ([#563](https://github.com/LuanRT/YouTube.js/issues/563)) ([8f07e49](https://github.com/LuanRT/YouTube.js/commit/8f07e49512c59eb72debc80a9d9623ca62330858))
## [8.1.0](https://github.com/LuanRT/YouTube.js/compare/v8.0.0...v8.1.0) (2023-12-27)
### Features
* **generator:** add support for arrays ([#556](https://github.com/LuanRT/YouTube.js/issues/556)) ([e4f2a00](https://github.com/LuanRT/YouTube.js/commit/e4f2a00c843fe453cc7904f79e35597cc6e2e619))
* **generator:** Add support for generating view models ([#550](https://github.com/LuanRT/YouTube.js/issues/550)) ([f938c34](https://github.com/LuanRT/YouTube.js/commit/f938c34ee81186774096b3d24d06250211ce2851))
* **MediaInfo:** Parse player config ([5c9c231](https://github.com/LuanRT/YouTube.js/commit/5c9c231cc2f17c49da03daa8262043b985320e9a))
* **parser:** Support new like and dislike nodes ([#557](https://github.com/LuanRT/YouTube.js/issues/557)) ([fcd3044](https://github.com/LuanRT/YouTube.js/commit/fcd30449821763e9b5b57718dd02eff15d964d2b))
* **Thumbnail:** Support `sources` in `Thumbnail.fromResponse` ([#552](https://github.com/LuanRT/YouTube.js/issues/552)) ([48a5d4e](https://github.com/LuanRT/YouTube.js/commit/48a5d4e7c37b76f8980f9b68e8815aef7a6d91ab))
* **YouTube:** Add FEchannels feed ([#560](https://github.com/LuanRT/YouTube.js/issues/560)) ([14578ac](https://github.com/LuanRT/YouTube.js/commit/14578ac96af4b8bee652cce87d043173de964113))
### Bug Fixes
* **Format:** Extract correct audio language from captions ([#553](https://github.com/LuanRT/YouTube.js/issues/553)) ([5c83e99](https://github.com/LuanRT/YouTube.js/commit/5c83e999dfa00386d18369f42aa9aa10123ba578))
* **generator:** Output Parser.parseItem() calls with one valid type, without the array ([#551](https://github.com/LuanRT/YouTube.js/issues/551)) ([bd487f8](https://github.com/LuanRT/YouTube.js/commit/bd487f8befe7f62022c61ff3aae7f487104e81eb))
* **VideoInfo:** Restore `like`, `dislike` & `removeRating` methods ([9c503f4](https://github.com/LuanRT/YouTube.js/commit/9c503f4fa8a750558cedbeca974faf36e304147e))
## [8.0.0](https://github.com/LuanRT/YouTube.js/compare/v7.0.0...v8.0.0) (2023-12-01)
### ⚠ BREAKING CHANGES
* **Library:** Add support for the new layout and remove profile & stats info
* **Channel:** YouTube removed the "Channels" tab on channels, so this pull request removes the `getChannels()` method and `has_channels` getter from the `YT.Channel` class, as they are no longer useful. The featured channels are now shown on the channel home tab. To get them you can use the `channels` getter on the home tab of the channel. Please note that some channel owners might not have added that section to their home page yet, so you won't be able to get the featured channels for those channels. The home tab is the default tab that is returned when you call `InnerTube#getChannel()`, you can also access that tab by calling `getHome()` on a `YT.Channel` object.
### Features
* add `FeedNudge` ([#533](https://github.com/LuanRT/YouTube.js/issues/533)) ([e021395](https://github.com/LuanRT/YouTube.js/commit/e02139532b2c07aaf72dd1bd8610f63b6780001d))
* add `VideoAttributeView` ([#531](https://github.com/LuanRT/YouTube.js/issues/531)) ([ff4ab16](https://github.com/LuanRT/YouTube.js/commit/ff4ab1680e110fc32e09d09215fd3e05dbde2c85))
* Add Shorts endpoint ([#512](https://github.com/LuanRT/YouTube.js/issues/512)) ([a32aa8c](https://github.com/LuanRT/YouTube.js/commit/a32aa8c633b6f3c3bb0695ad1878cbb313867346))
* **Channel:** Support new about popup ([#537](https://github.com/LuanRT/YouTube.js/issues/537)) ([c66eb1f](https://github.com/LuanRT/YouTube.js/commit/c66eb1fecf0e66d9eca841be0ca56b39ad4466eb))
* **parser:** Add `ChannelOwnerEmptyState` ([#541](https://github.com/LuanRT/YouTube.js/issues/541)) ([b60930a](https://github.com/LuanRT/YouTube.js/commit/b60930a0c1ce419dddb753846c84d4e46ddf04e1))
* **Parser:** Add `ClipSection` ([#532](https://github.com/LuanRT/YouTube.js/issues/532)) ([9007b65](https://github.com/LuanRT/YouTube.js/commit/9007b652375e1ca3c3844bdf091fe3670f98dc2c))
* **toDash:** Add `contentType` to audio and video adaption sets ([#539](https://github.com/LuanRT/YouTube.js/issues/539)) ([4806fc6](https://github.com/LuanRT/YouTube.js/commit/4806fc6c112cb3cf0584f7d253f3c4aeaffa9927))
* Use `overrides` instead of `--legacy-peer-deps` ([#529](https://github.com/LuanRT/YouTube.js/issues/529)) ([db7f620](https://github.com/LuanRT/YouTube.js/commit/db7f6209b2329bf18b8b35aababfdb9b750c3b0f))
### Bug Fixes
* **Channel:** Remove `getChannels()` and `has_channels`, as YouTube removed the tab ([#542](https://github.com/LuanRT/YouTube.js/issues/542)) ([6a5a579](https://github.com/LuanRT/YouTube.js/commit/6a5a579e3947109af0e7c2a318aef40edb8484f8))
* **Library:** Add support for the new layout and remove profile & stats info ([4261915](https://github.com/LuanRT/YouTube.js/commit/4261915fd4aa84f7619a45d678910be0ae30e13e))
* **StructuredDescriptionContent:** Add `ReelShelf` to list of possible nodes ([f74ed5a](https://github.com/LuanRT/YouTube.js/commit/f74ed5a1cf352a7b57fa84b9373f9ed9ba1911fc))
* **VideoAttributeView:** Fix `image` and `overflow_menu_on_tap` props ([5ae15be](https://github.com/LuanRT/YouTube.js/commit/5ae15be63dee2a2393a1aa2a308ca5378140760a))
### Performance Improvements
* Use named Parser import, to allow bundlers to create direct function references ([#535](https://github.com/LuanRT/YouTube.js/issues/535)) ([95ed602](https://github.com/LuanRT/YouTube.js/commit/95ed60207a1219f4891f28d2b2b90cf816f11831))
## [7.0.0](https://github.com/LuanRT/YouTube.js/compare/v6.4.1...v7.0.0) (2023-10-28)
### ⚠ BREAKING CHANGES
* **music#getSearchSuggestions:** Return array of `SearchSuggestionsSection` instead of a single node
### Features
* **Kids:** Add `blockChannel` command to easily block channels ([#503](https://github.com/LuanRT/YouTube.js/issues/503)) ([9ab528e](https://github.com/LuanRT/YouTube.js/commit/9ab528ec823dcd527a97150009eed632c6d3eb6a))
* **music#getSearchSuggestions:** Return array of `SearchSuggestionsSection` instead of a single node ([beaa28f](https://github.com/LuanRT/YouTube.js/commit/beaa28f4c68de8366caa84ce5a026bf9e12e1b9d))
* **parser:** Add `PlayerOverflow` and `PlayerControlsOverlay` ([a45273f](https://github.com/LuanRT/YouTube.js/commit/a45273fec498df87eecd364ffb708c9f787793d5))
* **UpdateViewerShipAction:** Add `original_view_count` and `unlabeled_view_count_value` ([#527](https://github.com/LuanRT/YouTube.js/issues/527)) ([bc97e07](https://github.com/LuanRT/YouTube.js/commit/bc97e07ac6d1cdc45194e214c6001cf92190e1d5))
### Bug Fixes
* **build:** Inline package.json import to avoid runtime erros ([#509](https://github.com/LuanRT/YouTube.js/issues/509)) ([4c0de19](https://github.com/LuanRT/YouTube.js/commit/4c0de199e85dd5cc8b3719920b24dec9613acaab))
## [6.4.1](https://github.com/LuanRT/YouTube.js/compare/v6.4.0...v6.4.1) (2023-10-02)
### Bug Fixes
* **Feed:** Do not throw when multiple continuations are present ([8e372d5](https://github.com/LuanRT/YouTube.js/commit/8e372d5c67f148be288bb0485f2c70ec43fbecd0))
* **Playlist:** Throw a more helpful error when parsing empty responses ([987f506](https://github.com/LuanRT/YouTube.js/commit/987f50604a0163f9a07091ce787995c6f6fddb75))
### Performance Improvements
* Cache deciphered n-params by info response ([#505](https://github.com/LuanRT/YouTube.js/issues/505)) ([d2959b3](https://github.com/LuanRT/YouTube.js/commit/d2959b3a55a5081295da4754627913933bbaf1e7))
* **generator:** Remove duplicate checks in `isMiscType` ([#506](https://github.com/LuanRT/YouTube.js/issues/506)) ([68df321](https://github.com/LuanRT/YouTube.js/commit/68df3218580db10c9a0932c93ff2ce487526ff1e))
## [6.4.0](https://github.com/LuanRT/YouTube.js/compare/v6.3.0...v6.4.0) (2023-09-10)
### Features
* Add support for retrieving transcripts ([#500](https://github.com/LuanRT/YouTube.js/issues/500)) ([f94ea6c](https://github.com/LuanRT/YouTube.js/commit/f94ea6cf917f63f30dd66514b22a4cf43b948f07))
* **PlaylistManager:** add .setName() and .setDescription() functions for editing playlists ([#498](https://github.com/LuanRT/YouTube.js/issues/498)) ([86fb33e](https://github.com/LuanRT/YouTube.js/commit/86fb33ed03a127d9fd4caa695ca97642bffe61bd))
### Bug Fixes
* **BackstagePost:** `vote_button` type mismatch ([fba3fc9](https://github.com/LuanRT/YouTube.js/commit/fba3fc971454d66d80d4920fbd60889a221de381))
## [6.3.0](https://github.com/LuanRT/YouTube.js/compare/v6.2.0...v6.3.0) (2023-08-31)
### Features
* **ChannelMetadata:** Add `music_artist_name` ([#497](https://github.com/LuanRT/YouTube.js/issues/497)) ([91de6e5](https://github.com/LuanRT/YouTube.js/commit/91de6e5c0e5b27e6d12ce5db2f500c5ff78b9830))
* **Session:** Add on_behalf_of_user session option. ([#494](https://github.com/LuanRT/YouTube.js/issues/494)) ([8bc2aaa](https://github.com/LuanRT/YouTube.js/commit/8bc2aaa3587fcf79f69eedbc2bf422a4c6fa7eb1))
### Bug Fixes
* **CompactMovie:** Add missing import and remove unnecessary console.log ([#496](https://github.com/LuanRT/YouTube.js/issues/496)) ([c26972c](https://github.com/LuanRT/YouTube.js/commit/c26972c42a6368822ac254c00f1bbee5a1542486))
## [6.2.0](https://github.com/LuanRT/YouTube.js/compare/v6.1.0...v6.2.0) (2023-08-29)
### Features
* **Session:** Add fallback for session data retrieval ([#490](https://github.com/LuanRT/YouTube.js/issues/490)) ([10c15bf](https://github.com/LuanRT/YouTube.js/commit/10c15bfb9f131a2acea2f26ff3328993d8d8f4aa))
### Bug Fixes
* **Format:** Fix `is_original` always being `true` ([#492](https://github.com/LuanRT/YouTube.js/issues/492)) ([0412fa0](https://github.com/LuanRT/YouTube.js/commit/0412fa05ff1f00960b398c2f18d5ce39ce0cb864))
## [6.1.0](https://github.com/LuanRT/YouTube.js/compare/v6.0.2...v6.1.0) (2023-08-27)
### Features
* **parser:** Add `AlertWithButton` ([#486](https://github.com/LuanRT/YouTube.js/issues/486)) ([8b69587](https://github.com/LuanRT/YouTube.js/commit/8b6958778721ba274283f641779fb60bc6f42cd2))
* **parser:** Add `ChannelHeaderLinksView` ([#484](https://github.com/LuanRT/YouTube.js/issues/484)) ([ed7be2a](https://github.com/LuanRT/YouTube.js/commit/ed7be2a675cf1ec663e743e90db6260c97546739))
* **parser:** Add `CompactMovie` ([#487](https://github.com/LuanRT/YouTube.js/issues/487)) ([2eed172](https://github.com/LuanRT/YouTube.js/commit/2eed1726d5bde7648af09273cc14ab4a315cb23e))
## [6.0.2](https://github.com/LuanRT/YouTube.js/compare/v6.0.1...v6.0.2) (2023-08-24)

779
README.md
View File

@@ -3,92 +3,30 @@
[versions]: https://www.npmjs.com/package/youtubei.js?activeTab=versions
[codefactor]: https://www.codefactor.io/repository/github/luanrt/youtube.js
[actions]: https://github.com/LuanRT/YouTube.js/actions
[collaborators]: https://github.com/LuanRT/YouTube.js/blob/main/COLLABORATORS.md
<!-- OTHER LINKS -->
[project]: https://github.com/LuanRT/YouTube.js
[twitter]: https://twitter.com/thesciencephile
[discord]: https://discord.gg/syDu7Yks54
<h1 align=center>YouTube.js</h1>
<p align=center>A full-featured wrapper around the InnerTube API</p>
<div align="center">
[![CI](https://github.com/LuanRT/YouTube.js/actions/workflows/test.yml/badge.svg)][actions]
[![NPM Version](https://img.shields.io/npm/v/youtubei.js?color=%2335C757)][versions]
[![Codefactor](https://www.codefactor.io/repository/github/luanrt/youtube.js/badge)][codefactor]
[![Downloads](https://img.shields.io/npm/dt/youtubei.js)][npm]
[![Discord](https://img.shields.io/badge/discord-online-brightgreen.svg)][discord]
<br>
[![Donate](https://img.shields.io/badge/donate-30363D?style=for-the-badge&logo=GitHub-Sponsors&logoColor=#white)][collaborators]
</div>
<div align="center">
<br/>
<p>
<sup>Special thanks to:</sup>
<br>
<br>
<a href="https://serpapi.com" target="_blank">
<img width="80" alt="SerpApi" src="https://luanrt.github.io/assets/img/serpapi.svg" />
<br>
<sub>
API to get search engine results with ease.
</sub>
<a href="https://github.com/LuanRT/YouTube.js">
<img src="https://luanrt.github.io/assets/img/ytjs.svg" alt="YouTube.js Logo" width="200" />
</a>
</p>
<p>A JavaScript client for YouTube's private API</p>
[![Discord](https://img.shields.io/badge/discord-online-brightgreen.svg)][discord]
[![CI](https://github.com/LuanRT/YouTube.js/actions/workflows/test.yml/badge.svg)][actions]
[![NPM Version](https://img.shields.io/npm/v/youtubei.js?color=%2335C757)][versions]
[![Downloads](https://img.shields.io/npm/dt/youtubei.js)][npm]
[![Codefactor](https://www.codefactor.io/repository/github/luanrt/youtube.js/badge)][codefactor]
</div>
<br>
<hr>
<br>
## Table of Contents
<ol>
<li>
<a href="#description">Description</a>
</li>
<li>
<a href="#getting-started">Getting Started</a>
<ul>
<li><a href="#prerequisites">Prerequisites</a></li>
<li><a href="#installation">Installation</a></li>
</ul>
</li>
<li>
<a href="#usage">Usage</a>
<ul>
<li><a href="#browser-usage">Browser Usage</a></li>
<li><a href="#caching">Caching</a></li>
<li><a href="#api">API</a></li>
</ul>
</li>
<li><a href="#extending-the-library">Extending the library</a></li>
<li><a href="#contributing">Contributing</a></li>
<li><a href="#contact">Contact</a></li>
<li><a href="#disclaimer">Disclaimer</a></li>
<li><a href="#license">License</a></li>
</ol>
YouTube.js is a JavaScript client for YouTube's private API, known as "InnerTube". It allows you to interact with YouTube programmatically, providing access to videos, comments, live chats, streaming data and more. It works seamlessly across Node.js, Deno, and modern browsers.
## Description
## Installation
InnerTube is an API used by all YouTube clients. It was created to simplify the deployment of new features and experiments across the platform [^1]. This library manages all low-level communication with InnerTube, providing a simple and efficient way to interact with YouTube programmatically. Its design aims to closely emulate an actual client, including the parsing of API responses.
If you have any questions or need help, feel free to reach out to us on our [Discord server][discord] or open an issue [here](https://github.com/LuanRT/YouTube.js/issues).
## Getting Started
### Prerequisites
YouTube.js runs on Node.js, Deno, and modern browsers.
It requires a runtime with the following features:
- [`fetch`](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API)
- On Node, we use [undici](https://github.com/nodejs/undici)'s fetch implementation, which requires Node.js 16.8+. If you need to use an older version, you may provide your own fetch implementation. See [providing your own fetch implementation](#custom-fetch) for more information.
- The `Response` object returned by fetch must thus be spec compliant and return a `ReadableStream` object if you want to use the `VideoInfo#download` method. (Implementations like `node-fetch` returns a non-standard `Readable` object.)
- [`EventTarget`](https://developer.mozilla.org/en-US/docs/Web/API/EventTarget) and [`CustomEvent`](https://developer.mozilla.org/en-US/docs/Web/API/CustomEvent) are required.
### Installation
Before installing, make sure your environment meets the [prerequisites](https://ytjs.dev/guide/getting-started.html#prerequisites).
```bash
# NPM
@@ -99,709 +37,42 @@ yarn add youtubei.js@latest
# Git (edge version)
npm install github:LuanRT/YouTube.js
# Deno
deno add npm:youtubei.js@latest
```
When using Deno, you can import YouTube.js directly from deno.land:
Deno (deprecated):
```ts
import { Innertube } from 'https://deno.land/x/youtubei/deno.ts';
```
## Usage
Create an InnerTube instance:
## Basic Usage
```ts
// const { Innertube } = require('youtubei.js');
import { Innertube } from 'youtubei.js';
const youtube = await Innertube.create(/* options */);
const innertube = await Innertube.create(/* options */);
```
### Initialization Options
<details>
<summary>Click to expand</summary>
| Option | Type | Description | Default |
| --- | --- | --- | --- |
| `lang` | `string` | Language. | `en` |
| `location` | `string` | Geolocation. | `US` |
| `account_index` | `number` | The account index to use. This is useful if you have multiple accounts logged in. **NOTE:** Only works if you are signed in with cookies. | `0` |
| `visitor_data` | `string` | Setting this to a valid and persistent visitor data string will allow YouTube to give this session tailored content even when not logged in. A good way to get a valid one is by either grabbing it from a browser or calling InnerTube's `/visitor_id` endpoint. | `undefined` |
| `retrieve_player` | `boolean` | Specifies whether to retrieve the JS player. Disabling this will make session creation faster. **NOTE:** Deciphering formats is not possible without the JS player. | `true` |
| `enable_safety_mode` | `boolean` | Specifies whether to enable safety mode. This will prevent the session from loading any potentially unsafe content. | `false` |
| `generate_session_locally` | `boolean` | Specifies whether to generate the session data locally or retrieve it from YouTube. This can be useful if you need more performance. | `false` |
| `device_category` | `DeviceCategory` | Platform to use for the session. | `DESKTOP` |
| `client_type` | `ClientType` | InnerTube client type. | `WEB` |
| `timezone` | `string` | The time zone. | `*` |
| `cache` | `ICache` | Used to cache the deciphering functions from the JS player. | `undefined` |
| `cookie` | `string` | YouTube cookies. | `undefined` |
| `fetch` | `FetchFunction` | Fetch function to use. | `fetch` |
</details>
## Browser Usage
To use YouTube.js in the browser, you must proxy requests through your own server. You can see our simple reference implementation in Deno at [`examples/browser/proxy/deno.ts`](https://github.com/LuanRT/YouTube.js/tree/main/examples/browser/proxy/deno.ts).
You may provide your own fetch implementation to be used by YouTube.js, which we will use to modify and send the requests through a proxy. See [`examples/browser/web`](https://github.com/LuanRT/YouTube.js/tree/main/examples/browser/web) for a simple example using [Vite](https://vitejs.dev/).
```ts
// Multiple exports are available for the web.
// Unbundled ESM version
import { Innertube } from 'youtubei.js/web';
// Bundled ESM version
// import { Innertube } from 'youtubei.js/web.bundle';
// Production Bundled ESM version
// import { Innertube } from 'youtubei.js/web.bundle.min';
await Innertube.create({
fetch: async (input: RequestInfo | URL, init?: RequestInit) => {
// Modify the request
// and send it to the proxy
// fetch the URL
return fetch(request, init);
}
});
```
### Streaming
YouTube.js supports streaming of videos in the browser by converting YouTube's streaming data into an MPEG-DASH manifest.
The example below uses [`dash.js`](https://github.com/Dash-Industry-Forum/dash.js) to play the video.
```ts
import { Innertube } from 'youtubei.js/web';
import dashjs from 'dashjs';
const youtube = await Innertube.create({ /* setup - see above */ });
// get the video info
const videoInfo = await youtube.getInfo('videoId');
// now convert to a dash manifest
// again - to be able to stream the video in the browser - we must proxy the requests through our own server
// to do this, we provide a method to transform the URLs before writing them to the manifest
const manifest = await videoInfo.toDash(url => {
// modify the url
// and return it
return url;
});
const uri = "data:application/dash+xml;charset=utf-8;base64," + btoa(manifest);
const videoElement = document.getElementById('video_player');
const player = dashjs.MediaPlayer().create();
player.initialize(videoElement, uri, true);
```
A fully working example can be found in [`examples/browser/web`](https://github.com/LuanRT/YouTube.js/blob/main/examples/browser/web). Alternatively, you can view it live at [ytjsexample.pages.dev](https://ytjsexample.pages.dev/).
<a name="custom-fetch"></a>
## Providing your own fetch implementation
You may provide your own fetch implementation to be used by YouTube.js. This can be useful in some cases to modify the requests before they are sent and transform the responses before they are returned (eg. for proxies).
```ts
// provide a fetch implementation
const yt = await Innertube.create({
fetch: async (input: RequestInfo | URL, init?: RequestInit) => {
// make the request with your own fetch implementation
// and return the response
return new Response(
/* ... */
);
}
});
```
<a name="caching"></a>
## Caching
Caching the transformed player instance can greatly improve the performance. Our `UniversalCache` implementation uses different caching methods depending on the environment.
In Node.js, we use the `node:fs` module, `Deno.writeFile()` in Deno, and `indexedDB` in browsers.
By default, the cache stores data in the operating system's temporary directory (or `indexedDB` in browsers). You can make this cache persistent by specifying the path to the cache directory, which will be created if it doesn't exist.
```ts
import { Innertube, UniversalCache } from 'youtubei.js';
// Create a cache that stores files in the OS temp directory (or indexedDB in browsers) by default.
const yt = await Innertube.create({
cache: new UniversalCache(false)
});
// You may want to create a persistent cache instead (on Node and Deno).
const yt = await Innertube.create({
cache: new UniversalCache(
// Enables persistent caching
true,
// Path to the cache directory. The directory will be created if it doesn't exist
'./.cache'
)
});
```
## API
* `Innertube`
<details>
<summary>Properties</summary>
<p>
* [.session](https://github.com/LuanRT/YouTube.js/blob/main/docs/API/session.md)
* [.account](https://github.com/LuanRT/YouTube.js/blob/main/docs/API/account.md)
* [.interact](https://github.com/LuanRT/YouTube.js/blob/main/docs/API/interaction-manager.md)
* [.playlist](https://github.com/LuanRT/YouTube.js/blob/main/docs/API/playlist.md)
* [.music](https://github.com/LuanRT/YouTube.js/blob/main/docs/API/music.md)
* [.studio](https://github.com/LuanRT/YouTube.js/blob/main/docs/API/studio.md)
* [.kids](https://github.com/LuanRT/YouTube.js/blob/main/docs/API/kids.md)
</p>
</details>
<details>
<summary>Methods</summary>
<p>
* [.getInfo(target, client?)](#getinfo)
* [.getBasicInfo(video_id, client?)](#getbasicinfo)
* [.search(query, filters?)](#search)
* [.getSearchSuggestions(query)](#getsearchsuggestions)
* [.getComments(video_id, sort_by?)](#getcomments)
* [.getHomeFeed()](#gethomefeed)
* [.getGuide()](#getguide)
* [.getLibrary()](#getlibrary)
* [.getHistory()](#gethistory)
* [.getTrending()](#gettrending)
* [.getSubscriptionsFeed()](#getsubscriptionsfeed)
* [.getChannel(id)](#getchannel)
* [.getNotifications()](#getnotifications)
* [.getUnseenNotificationsCount()](#getunseennotificationscount)
* [.getPlaylist(id)](#getplaylist)
* [.getHashtag(hashtag)](#gethashtag)
* [.getStreamingData(video_id, options)](#getstreamingdata)
* [.download(video_id, options?)](#download)
* [.resolveURL(url)](#resolveurl)
* [.call(endpoint, args?)](#call)
</p>
</details>
<a name="getinfo"></a>
### `getInfo(target, client?)`
Retrieves video info.
**Returns**: `Promise<VideoInfo>`
| Param | Type | Description |
| --- | --- | --- |
| target | `string` \| `NavigationEndpoint` | If `string`, the id of the video. If `NavigationEndpoint`, the endpoint of watchable elements such as `Video`, `Mix` and `Playlist`. To clarify, valid endpoints have payloads containing at least `videoId` and optionally `playlistId`, `params` and `index`. |
| client? | `InnerTubeClient` | `WEB`, `ANDROID`, `YTMUSIC`, `YTMUSIC_ANDROID` or `TV_EMBEDDED` |
<details>
<summary>Methods & Getters</summary>
<p>
- `<info>#like()`
- Likes the video.
- `<info>#dislike()`
- Dislikes the video.
- `<info>#removeRating()`
- Removes like/dislike.
- `<info>#getLiveChat()`
- Returns a LiveChat instance.
- `<info>#getTrailerInfo()`
- Returns trailer info in a new `VideoInfo` instance, or `null` if none. Typically available for non-purchased movies or films.
- `<info>#chooseFormat(options)`
- Used to choose streaming data formats.
- `<info>#toDash(url_transformer?, format_filter?)`
- Converts streaming data to an MPEG-DASH manifest.
- `<info>#download(options)`
- Downloads the video. See [download](#download).
- `<info>#filters`
- Returns filters that can be applied to the watch next feed.
- `<info>#selectFilter(name)`
- Applies the given filter to the watch next feed and returns a new instance of [`VideoInfo`](https://github.com/LuanRT/YouTube.js/blob/main/src/parser/youtube/VideoInfo.ts).
- `<info>#getWatchNextContinuation()`
- Retrieves the next batch of items for the watch next feed.
- `<info>#addToWatchHistory()`
- Adds the video to the watch history.
- `<info>#autoplay_video_endpoint`
- Returns the endpoint of the video for Autoplay.
- `<info>#has_trailer`
- Checks if trailer is available.
- `<info>#page`
- Returns original InnerTube response (sanitized).
</p>
</details>
<a name="getbasicinfo"></a>
### `getBasicInfo(video_id, client?)`
Suitable for cases where you only need basic video metadata. Also, it is faster than [`getInfo()`](#getinfo).
**Returns**: `Promise<VideoInfo>`
| Param | Type | Description |
| --- | --- | --- |
| video_id | `string` | The id of the video |
| client? | `InnerTubeClient` | `WEB`, `ANDROID`, `YTMUSIC_ANDROID`, `YTMUSIC`, `TV_EMBEDDED` |
<a name="search"></a>
### `search(query, filters?)`
Searches the given query on YouTube.
**Returns**: `Promise<Search>`
> **Note**
> `Search` extends the [`Feed`](https://github.com/LuanRT/YouTube.js/blob/main/docs/API/feed.md) class.
| Param | Type | Description |
| --- | --- | --- |
| query | `string` | The search query |
| filters? | `SearchFilters` | Search filters |
<details>
<summary>Search Filters</summary>
| Filter | Type | Value | Description |
| --- | --- | --- | --- |
| upload_date | `string` | `all` \| `hour` \| `today` \| `week` \| `month` \| `year` | Filter by upload date |
| type | `string` | `all` \| `video` \| `channel` \| `playlist` \| `movie` | Filter by type |
| duration | `string` | `all` \| `short` \| `medium` \| `long` | Filter by duration |
| sort_by | `string` | `relevance` \| `rating` \| `upload_date` \| `view_count` | Sort by |
| features | `string[]` | `hd` \| `subtitles` \| `creative_commons` \| `3d` \| `live` \| `purchased` \| `4k` \| `360` \| `location` \| `hdr` \| `vr180` | Filter by features |
</details>
<details>
<summary>Methods & Getters</summary>
<p>
- `<search>#selectRefinementCard(SearchRefinementCard | string)`
- Applies given refinement card and returns a new Search instance.
- `<search>#refinement_card_queries`
- Returns available refinement cards, this is a simplified version of the `refinement_cards` object.
- `<search>#getContinuation()`
- Retrieves next batch of results.
</p>
</details>
<a name="getsearchsuggestions"></a>
### `getSearchSuggestions(query)`
Retrieves search suggestions for given query.
**Returns**: `Promise<string[]>`
| Param | Type | Description |
| --- | --- | --- |
| query | `string` | The search query |
<a name="getcomments"></a>
### `getComments(video_id, sort_by?)`
Retrieves comments for given video.
**Returns**: `Promise<Comments>`
| Param | Type | Description |
| --- | --- | --- |
| video_id | `string` | The video id |
| sort_by | `string` | Can be: `TOP_COMMENTS` or `NEWEST_FIRST` |
See [`./examples/comments`](https://github.com/LuanRT/YouTube.js/blob/main/examples/comments) for examples.
<a name="gethomefeed"></a>
### `getHomeFeed()`
Retrieves YouTube's home feed.
**Returns**: `Promise<HomeFeed>`
> **Note**
> `HomeFeed` extends the [`FilterableFeed`](https://github.com/LuanRT/YouTube.js/blob/main/docs/API/filterable-feed.md) class.
<details>
<summary>Methods & Getters</summary>
<p>
- `<home_feed>#videos`
- Returns all videos in the home feed.
- `<home_feed>#posts`
- Returns all posts in the home feed.
- `<home_feed>#shelves`
- Returns all shelves in the home feed.
- `<home_feed>#filters`
- Returns available filters.
- `<home_feed>#applyFilter(name | ChipCloudChip)`
- Applies given filter and returns a new HomeFeed instance.
- `<home_feed>#getContinuation()`
- Retrieves feed continuation.
</p>
</details>
<a name="getguide"></a>
### `getGuide()`
Retrieves YouTube's content guide.
**Returns**: `Promise<Guide>`
<a name="getlibrary"></a>
### `getLibrary()`
Retrieves the account's library.
**Returns**: `Promise<Library>`
> **Note**
> `Library` extends the [`Feed`](https://github.com/LuanRT/YouTube.js/blob/main/docs/API/feed.md) class.
<details>
<summary>Methods & Getters</summary>
<p>
- `<library>#history`
- `<library>#watch_later`
- `<library>#liked_videos`
- `<library>#playlists_section`
- `<library>#clips`
</p>
</details>
<a name="gethistory"></a>
### `getHistory()`
Retrieves watch history.
**Returns**: `Promise<History>`
> **Note**
> `History` extends the [`Feed`](https://github.com/LuanRT/YouTube.js/blob/main/docs/API/feed.md) class.
<details>
<summary>Methods & Getters</summary>
<p>
- `<history>#getContinuation()`
- Retrieves next batch of contents.
</p>
</details>
<a name="gettrending"></a>
### `getTrending()`
Retrieves trending content.
**Returns**: `Promise<TabbedFeed<IBrowseResponse>>`
<a name="getsubscriptionsfeed"></a>
### `getSubscriptionsFeed()`
Retrieves the subscriptions feed.
**Returns**: `Promise<Feed<IBrowseResponse>>`
<a name="getchannel"></a>
### `getChannel(id)`
Retrieves contents for a given channel.
**Returns**: `Promise<Channel>`
> **Note**
> `Channel` extends the [`TabbedFeed`](https://github.com/LuanRT/YouTube.js/blob/main/docs/API/tabbed-feed.md) class.
| Param | Type | Description |
| --- | --- | --- |
| id | `string` | Channel id |
<details>
<summary>Methods & Getters</summary>
<p>
- `<channel>#getVideos()`
- `<channel>#getShorts()`
- `<channel>#getLiveStreams()`
- `<channel>#getReleases()`
- `<channel>#getPodcasts()`
- `<channel>#getPlaylists()`
- `<channel>#getHome()`
- `<channel>#getCommunity()`
- `<channel>#getChannels()`
- `<channel>#getAbout()`
- `<channel>#search(query)`
- `<channel>#applyFilter(filter)`
- `<channel>#applyContentTypeFilter(content_type_filter)`
- `<channel>#applySort(sort)`
- `<channel>#getContinuation()`
- `<channel>#filters`
- `<channel>#content_type_filters`
- `<channel>#sort_filters`
- `<channel>#page`
</p>
</details>
See [`./examples/channel`](https://github.com/LuanRT/YouTube.js/blob/main/examples/channel) for examples.
<a name="getnotifications"></a>
### `getNotifications()`
Retrieves notifications.
**Returns**: `Promise<NotificationsMenu>`
<details>
<summary>Methods & Getter</summary>
<p>
- `<notifications>#getContinuation()`
- Retrieves next batch of notifications.
</p>
</details>
<a name="getunseennotificationscount"></a>
### `getUnseenNotificationsCount()`
Retrieves unseen notifications count.
**Returns**: `Promise<number>`
<a name="getplaylist"></a>
### `getPlaylist(id)`
Retrieves playlist contents.
**Returns**: `Promise<Playlist>`
> **Note**
> `Playlist` extends the [`Feed`](https://github.com/LuanRT/YouTube.js/blob/main/docs/API/feed.md) class.
| Param | Type | Description |
| --- | --- | --- |
| id | `string` | Playlist id |
<details>
<summary>Methods & Getter</summary>
<p>
- `<playlist>#items`
- Returns the items of the playlist.
</p>
</details>
<a name="gethashtag"></a>
### `getHashtag(hashtag)`
Retrieves a given hashtag's page.
**Returns**: `Promise<HashtagFeed>`
> **Note**
> `HashtagFeed` extends the [`FilterableFeed`](https://github.com/LuanRT/YouTube.js/blob/main/docs/API/filterable-feed.md) class.
| Param | Type | Description |
| --- | --- | --- |
| hashtag | `string` | The hashtag |
<details>
<summary>Methods & Getter</summary>
<p>
- `<hashtag>#applyFilter(filter)`
- Applies given filter and returns a new `HashtagFeed` instance.
- `<hashtag>#getContinuation()`
- Retrieves next batch of contents.
</p>
</details>
<a name="getstreamingdata"></a>
### `getStreamingData(video_id, options)`
Returns deciphered streaming data.
> **Note**
> This method will be deprecated in the future. We recommend retrieving streaming data from a `VideoInfo` or `TrackInfo` object instead if you want to select formats manually. Please refer to the following example:
```ts
const info = await yt.getBasicInfo('somevideoid');
const url = info.streaming_data?.formats[0].decipher(yt.session.player);
console.info('Playback url:', url);
// or:
const format = info.chooseFormat({ type: 'audio', quality: 'best' });
const url = format?.decipher(yt.session.player);
console.info('Playback url:', url);
```
**Returns**: `Promise<object>`
| Param | Type | Description |
| --- | --- | --- |
| video_id | `string` | Video id |
| options | `FormatOptions` | Format options |
<a name="download"></a>
### `download(video_id, options?)`
Downloads a given video.
**Returns**: `Promise<ReadableStream<Uint8Array>>`
| Param | Type | Description |
| --- | --- | --- |
| video_id | `string` | Video id |
| options | `DownloadOptions` | Download options |
See [`./examples/download`](https://github.com/LuanRT/YouTube.js/blob/main/examples/download) for examples.
<a name="resolveurl"></a>
### `resolveURL(url)`
Resolves a given url.
**Returns**: `Promise<NavigationEndpoint>`
| Param | Type | Description |
| --- | --- | --- |
| url | `string` | Url to resolve |
<a name="call"></a>
### `call(endpoint, args?)`
Utility to call navigation endpoints.
**Returns**: `Promise<T extends IParsedResponse | IParsedResponse | ApiResponse>`
| Param | Type | Description |
| --- | --- | --- |
| endpoint | `NavigationEndpoint` | The target endpoint |
| args? | `object` | Additional payload arguments |
## Extending the library
YouTube.js is modular and easy to extend. Most of the methods, classes, and utilities used internally are exposed and can be used to implement your own extensions without having to modify the library's source code.
For example, let's say we want to implement a method to retrieve video info. We can do that by using an instance of the `Actions` class:
```ts
import { Innertube } from 'youtubei.js';
(async () => {
const yt = await Innertube.create();
async function getVideoInfo(videoId: string) {
const videoInfo = await yt.actions.execute('/player', {
// You can add any additional payloads here, and they'll merge with the default payload sent to InnerTube.
videoId,
client: 'YTMUSIC', // InnerTube client options: ANDROID, YTMUSIC, YTMUSIC_ANDROID, WEB, or TV_EMBEDDED.
parse: true // tells YouTube.js to parse the response (not sent to InnerTube).
});
return videoInfo;
}
const videoInfo = await getVideoInfo('jLTOuvBTLxA');
console.info(videoInfo);
})();
```
Alternatively, suppose we locate a `NavigationEndpoint` in a parsed response and want to see what happens when we call it:
```ts
import { Innertube, YTNodes } from 'youtubei.js';
(async () => {
const yt = await Innertube.create();
const artist = await yt.music.getArtist('UC52ZqHVQz5OoGhvbWiRal6g');
const albums = artist.sections[1].as(YTNodes.MusicCarouselShelf);
// Let's imagine that we wish to click on the “More” button:
const button = albums.as(YTNodes.MusicCarouselShelf).header?.more_content;
if (button) {
// Having ensured that it exists, we can then call its navigation endpoint using the following code:
const page = await button.endpoint.call(yt.actions, { parse: true });
console.info(page);
}
})();
```
### Parser
YouTube.js' parser enables you to parse InnerTube responses and convert their nodes into strongly-typed objects that are simple to manipulate. Additionally, it provides numerous utility methods that make working with InnerTube a breeze.
Here's an example of its usage:
```ts
// See ./examples/parser
import { Parser, YTNodes } from 'youtubei.js';
import { readFileSync } from 'fs';
// YouTube Music's artist page response
const data = readFileSync('./artist.json').toString();
const page = Parser.parseResponse(JSON.parse(data));
const header = page.header?.item().as(YTNodes.MusicImmersiveHeader, YTNodes.MusicVisualHeader);
console.info('Header:', header);
// The parser uses a proxy object to add type safety and utility methods for working with InnerTube's data arrays:
const tab = page.contents?.item().as(YTNodes.SingleColumnBrowseResults).tabs.firstOfType(YTNodes.Tab);
if (!tab)
throw new Error('Target tab not found');
if (!tab.content)
throw new Error('Target tab appears to be empty');
const sections = tab.content?.as(YTNodes.SectionList).contents.as(YTNodes.MusicCarouselShelf, YTNodes.MusicDescriptionShelf, YTNodes.MusicShelf);
console.info('Sections:', sections);
```
Documentation for the parser can be found [here](https://github.com/LuanRT/YouTube.js/blob/main/src/parser).
For detailed usage, check out the [YouTube.js Guide and API Documentation](https://ytjs.dev).
## Contributing
We welcome all contributions, issues and feature requests, whether small or large. If you want to contribute, feel free to check out our [issues page](https://github.com/LuanRT/YouTube.js/issues) and our [guidelines](https://github.com/LuanRT/YouTube.js/blob/main/CONTRIBUTING.md).
We are immensely grateful to all the wonderful people who have contributed to this project. A special shoutout to all our contributors! 🎉
## Contributors
<a href="https://github.com/LuanRT/YouTube.js/graphs/contributors">
<img src="https://contrib.rocks/image?repo=LuanRT/YouTube.js" />
</a>
## Contact
LuanRT - [@thesciencephile][twitter] - luanrt@thatsciencephile.com
Project Link: [https://github.com/LuanRT/YouTube.js][project]
## Disclaimer
This project is not affiliated with, endorsed, or sponsored by YouTube or any of its affiliates or subsidiaries. All trademarks, logos, and brand names used in this project are the property of their respective owners and are used solely to describe the services provided.
As such, any usage of trademarks to refer to such services is considered nominative use. If you have any questions or concerns, please contact me directly via email.
[^1]: https://gizmodo.com/how-project-innertube-helped-pull-youtube-out-of-the-gu-1704946491
As such, any usage of trademarks to refer to such services is considered nominative use. If you have any questions or concerns, please contact me.
## License
Distributed under the [MIT](https://choosealicense.com/licenses/mit/) License.
<p align=" right">
<p align="right">
(<a href="#top">back to top</a>)
</p>

View File

@@ -1,4 +1,4 @@
import glob from "glob";
import glob from 'glob';
import path from 'path';
import fs from 'fs';
import url from 'url';

View File

@@ -0,0 +1,54 @@
import { exec } from 'child_process';
import { existsSync, mkdirSync, readdirSync, statSync } from 'fs';
import { join } from 'path';
import path from 'path';
import url from 'url';
import os from 'os';
const __dirname = path.dirname(url.fileURLToPath(import.meta.url));
const protoDir = './protos';
const outDir = './protos/generated';
if (!existsSync(outDir)) {
mkdirSync(outDir, { recursive: true });
}
const protocGenTs = path.join(
__dirname,
'../node_modules',
'.bin',
os.platform() === 'win32' ? 'protoc-gen-ts_proto.cmd' : 'protoc-gen-ts_proto'
);
function listProtoFiles(dir) {
let protoFiles = [];
const items = readdirSync(dir);
for (const item of items) {
const fullPath = join(dir, item);
if (statSync(fullPath).isDirectory()) {
protoFiles = protoFiles.concat(listProtoFiles(fullPath));
} else if (item.endsWith('.proto')) {
protoFiles.push(fullPath);
}
}
return protoFiles;
}
const protoFiles = listProtoFiles(protoDir);
if (!protoFiles.length) {
console.log('No .proto files found.');
process.exit(0);
}
protoFiles.forEach((file) => {
const command = `protoc --proto_path=${protoDir} --plugin=protoc-gen-ts=${protocGenTs} --ts_opt=env=browser --ts_opt=importSuffix=.js --ts_out=${outDir} --ts_opt=outputJsonMethods=false --ts_opt=outputPartialMethods=false ${file}`;
exec(command, (error, _stdout, stderr) => {
if (error) {
console.error(`Error compiling ${file}:`, stderr);
}
});
});

View File

@@ -1,115 +0,0 @@
# Account
YouTube account manager.
## API
* Account
* [.channel](#channel)
* [.getInfo()](#getinfo)
* [.getTimeWatched()](#gettimewatched)
* [.getSettings()](#getsettings)
* [.getAnalytics](#getanalytics)
<a name="channel"></a>
### channel
Channel settings.
**Returns:** `object`
<details>
<summary>Methods & Getters</summary>
<p>
- `<channel>#editName(new_name)`
- Edits the name of the channel.
- `<channel>#editDescription(new_description)`
- Edits channel description.
- `<channel>#getBasicAnalytics()`
- Alias for [`Account#getAnalytics()`](#getanalytics) — returns basic channel analytics.
</p>
</details>
<a name="getinfo"></a>
### getInfo()
Retrieves account information.
**Returns:** `Promise.<AccountInfo>`
<details>
<summary>Methods & Getters</summary>
<p>
- `<accountinfo>#page`
- Returns the original InnerTube response(s), parsed and sanitized.
</p>
</details>
<a name="gettimewatched"></a>
### getTimeWatched()
Retrieves time watched statistics.
**Returns:** `Promise.<TimeWatched>`
<details>
<summary>Methods & Getters</summary>
<p>
- `<timewatched>#page`
- Returns the original InnerTube response(s), parsed and sanitized.
</p>
</details>
<a name="getsettings"></a>
### getSettings()
Retrieves YouTube settings.
**Returns:** `Promise.<Settings>`
<details>
<summary>Methods & Getters</summary>
<p>
- `<settings>#selectSidebarItem(name)`
- Selects an item from the sidebar menu. Use `settings#sidebar_items` to see available items.
- `<settings>#getSettingOption(name)`
- Finds a setting by name and returns it. Use `settings#setting_options` to see available options.
- `<settings>#setting_options`
- Returns settings available in the page.
- `<settings>#sidebar_items`
- Returns options available in the sidebar menu.
- `<settings>#page`
- Returns the original InnerTube response(s), parsed and sanitized.
</p>
</details>
<a name="getanalytics"></a>
### getAnalytics()
Retrieves basic channel analytics.
**Returns:** `Promise.<Analytics>`
<details>
<summary>Methods & Getters</summary>
<p>
- `<analytics>#page`
- Returns the original InnerTube response(s), parsed and sanitized.
</p>
</details>

View File

@@ -1,115 +0,0 @@
# Feed
Represents a YouTube feed. This class provides a set of utility methods for parsing and interacting with feeds.
## API
* Feed
* [.videos](#videos)
* [.posts](#posts)
* [.channels](#channels)
* [.playlists](#playlists)
* [.shelves](#shelves)
* [.memo](#memo)
* [.page_contents](#page_contents)
* [.secondary_contents](#secondary_contents)
* [.page](#page)
* [.has_continuation](#has_continuation)
* [.getContinuationData()](#getcontinuationdata)
* [.getContinuation()](#getcontinuation)
* [.getShelf(title)](#getshelf)
<a name="videos"></a>
### videos
Returns all videos in the feed.
**Returns:** `ObservedArray<Video | GridVideo | ReelItem | CompactVideo | PlaylistVideo | PlaylistPanelVideo | WatchCardCompactVideo>`
<a name="posts"></a>
### posts
Returns all posts in the feed.
**Returns:** `ObservedArray<Post | BackstagePost>`
<a name="channels"></a>
### channels
Returns all channels in the feed.
**Returns:** `ObservedArray<Channel | GridChannel>`
<a name="playlists"></a>
### playlists
Returns all playlists in the feed.
**Returns:** `ObservedArray<Playlist | GridPlaylist>`
<a name="shelves"></a>
### shelves
Returns all shelves in the feed.
**Returns:** `ObservedArray<Shelf | RichShelf | ReelShelf>`
<a name="memo"></a>
### memo
Returns the memoized feed contents.
**Returns:** `Memo`
<a name="page_contents"></a>
### page_contents
Returns the page contents.
**Returns:** `SectionList | MusicQueue | RichGrid | ReloadContinuationItemsCommand`
<a name="secondary_contents"></a>
### secondary_contents
Returns the secondary contents node.
**Returns:** `SuperParsedResult<YTNode> | undefined `
<a name="page"></a>
### page
Returns the original InnerTube response, parsed and sanitized.
**Returns:** `T extends IParsedResponse = IParsedResponse`
<a name="has_continuation"></a>
### has_continuation
Returns whether the feed has a continuation.
**Returns:** `boolean`
<a name="getcontinuationdata"></a>
### getContinuationData()
Returns the continuation data.
**Returns:** `Promise<T | undefined>`
<a name="getcontinuation"></a>
### getContinuation()
Retrieves the feed's continuation.
**Returns:** `Promise<Feed<T>>`
<a name="getshelf"></a>
### getShelf(title)
Gets a shelf by its title.
**Returns:** `Shelf | RichShelf | ReelShelf | undefined`
| Param | Type | Description |
| --- | --- | --- |
| title | `string` | The title of the shelf to get |

View File

@@ -1,38 +0,0 @@
# FilterableFeed
Represents a feed that can be filtered.
> **Note**
> This class extends the [Feed](feed.md) class.
## API
* FilterableFeed
* [.filter_chips](#filter_chips)
* [.filters](#filters)
* [.getFilteredFeed(filter: string | ChipCloudChip)](#getfilteredfeed)
<a name="filter_chips"></a>
### filter_chips
Returns the feed's filter chips.
**Returns:** `ObservedArray<ChipCloudChip>`
<a name="filters"></a>
### filters
Returns the feed's filter chips as an array of strings.
**Returns:** `string[]`
<a name="getfilteredfeed"></a>
### getFilteredFeed(filter: string | ChipCloudChip)
Returns a new [Feed](feed.md) with the given filter applied.
**Returns:** `Promise<Feed<T>>`
| Param | Type | Description |
| --- | --- | --- |
| filter | `string` \| `ChipCloudChip` | The filter to apply |

View File

@@ -1,108 +0,0 @@
# InteractionManager
Handles direct interactions.
## API
* InteractionManager
* [.like(video_id)](#like)
* [.dislike(video_id)](#dislike)
* [.removeRating(video_id)](#removerating)
* [.subscribe(video_id)](#subscribe)
* [.unsubscribe(video_id)](#unsubscribe)
* [.comment(video_id, text)](#comment)
* [.translate(text, target_language, args?)](#translate)
* [.setNotificationPreferences(channel_id, type)](#setnotificationpreferences)
<a name="like"></a>
### like(video_id)
Likes given video.
**Returns:** `Promise.<ApiResponse>`
| Param | Type | Description |
| --- | --- | --- |
| video_id | `string` | Video id |
<a name="dislike"></a>
### dislike(video_id)
Dislikes given video.
**Returns:** `Promise.<ApiResponse>`
| Param | Type | Description |
| --- | --- | --- |
| video_id | `string` | Video id |
<a name="removerating"></a>
### removeLike(video_id)
Remover like/dislike.
**Returns:** `Promise.<ApiResponse>`
| Param | Type | Description |
| --- | --- | --- |
| video_id | `string` | Video id |
<a name="subscribe"></a>
### subscribe(channel_id)
Subscribes to given channel.
**Returns:** `Promise.<ApiResponse>`
| Param | Type | Description |
| --- | --- | --- |
| channel_id | `string` | Channel id |
<a name="unsubscribe"></a>
### unsubscribe(channel_id)
Unsubscribes from given channel.
**Returns:** `Promise.<ApiResponse>`
| Param | Type | Description |
| --- | --- | --- |
| channel_id | `string` | Channel id |
<a name="comment"></a>
### comment(video_id, text)
Posts a comment on given video.
**Returns:** `Promise.<ApiResponse>`
| Param | Type | Description |
| --- | --- | --- |
| video_id | `string` | Video id |
| text | `string` | Comment content |
<a name="translate"></a>
### translate(text, target_language, args?)
Translates given text using YouTube's comment translation feature.
**Returns:** `Promise.<ApiResponse>`
| Param | Type | Description |
| --- | --- | --- |
| text | `string` | Text to be translated |
| target_language | `string` | ISO language code |
| args? | `object` | Additional arguments |
<a name="setnotificationpreferences"></a>
### setNotificationPreferences(channel_id, type)
Changes notification preferences for a given channel.
Only works with channels you are subscribed to.
**Returns:** `Promise.<ApiResponse>`
| Param | Type | Description |
| --- | --- | --- |
| channel_id | `string` | Channel id |
| type | `string` | `PERSONALIZED`, `ALL` or `NONE` |

View File

@@ -1,113 +0,0 @@
# YouTube Kids
YouTube Kids is a modified version of the YouTube app, with a simplified interface and curated content. This class allows you to interact with its API.
## API
* Kids
* [.search(query)](#search)
* [.getInfo(video_id)](#getinfo)
* [.getChannel(channel_id)](#getchannel)
* [.getHomeFeed()](#gethomefeed)
<a name="search"></a>
### search(query)
Searches the given query on YouTube Kids.
**Returns:** `Promise.<Search>`
| Param | Type | Description |
| --- | --- | --- |
| query | `string` | The query to search |
<details>
<summary>Methods & Getters</summary>
<p>
- `<search>#page`
- Returns the original InnerTube response(s), parsed and sanitized.
</p>
</details>
<a name="getinfo"></a>
### getInfo(video_id)
Retrieves video info.
**Returns:** `Promise.<VideoInfo>`
| Param | Type | Description |
| --- | --- | --- |
| video_id | `string` | The video id |
<details>
<summary>Methods & Getters</summary>
<p>
- `<info>#toDash(url_transformer?, format_filter?)`
- Generates a DASH manifest from the streaming data.
- `<info>#chooseFormat(options)`
- Selects the format that best matches the given options. This method is used internally by `#download`.
- `<info>#download(options?)`
- Downloads the video.
- `<info>#addToWatchHistory()`
- Adds the video to the watch history.
- `<info>#page`
- Returns the original InnerTube response(s), parsed and sanitized.
</p>
</details>
<a name="getchannel"></a>
### getChannel(channel_id)
Retrieves channel info.
**Returns:** `Promise.<Channel>`
| Param | Type | Description |
| --- | --- | --- |
| channel_id | `string` | The channel id |
<details>
<summary>Methods & Getters</summary>
<p>
- `<channel>#getContinuation()`
- Retrieves next batch of videos.
- `<channel>#has_continuation`
- Returns whether there are more videos to retrieve.
- `<channel>#page`
- Returns the original InnerTube response(s), parsed and sanitized.
</p>
</details>
<a name="gethomefeed"></a>
### getHomeFeed()
Retrieves the home feed.
**Returns:** `Promise.<HomeFeed>`
<details>
<summary>Methods & Getters</summary>
<p>
- `<feed>#selectCategoryTab(tab: string | KidsCategoryTab)`
- Selects the given category tab.
- `<feed>#categories`
- Returns available categories.
- `<feed>#page`
- Returns the original InnerTube response(s), parsed and sanitized.

View File

@@ -1,347 +0,0 @@
# YouTube Music
YouTube Music is a music streaming service developed by YouTube, a subsidiary of Google. It provides a tailored interface for the service oriented towards music streaming, with a greater emphasis on browsing and discovery compared to its main service. This class allows you to interact with its API.
## API
* Music
* [.getInfo(target)](#getinfo)
* [.search(query, filters?)](#search)
* [.getHomeFeed()](#gethomefeed)
* [.getExplore()](#getexplore)
* [.getLibrary()](#getlibrary)
* [.getArtist(artist_id)](#getartist)
* [.getAlbum(album_id)](#getalbum)
* [.getPlaylist(playlist_id)](#getplaylist)
* [.getLyrics(video_id)](#getlyrics)
* [.getUpNext(video_id, automix?)](#getupnext)
* [.getRelated(video_id)](#getrelated)
* [.getRecap()](#getrecap)
* [.getSearchSuggestions(query)](#getsearchsuggestions)
<a name="getinfo"></a>
### getInfo(target)
Retrieves track info.
**Returns:** `Promise.<TrackInfo>`
| Param | Type | Description |
| --- | --- | --- |
| target | `string` or `MusicTwoRowItem` | video id or list item |
<details>
<summary>Methods & Getters</summary>
<p>
- `<info>#getTab(title)`
- Retrieves contents of the given tab.
- `<info>#getUpNext(automix?)`
- Retrieves up next.
- `<info>#getRelated()`
- Retrieves related content.
- `<info>#getLyrics()`
- Retrieves song lyrics.
- `<info>#available_tabs`
- Returns available tabs.
- `<info>#toDash(url_transformer?, format_filter?)`
- Generates a DASH manifest from the streaming data.
- `<info>#chooseFormat(options)`
- Selects the format that best matches the given options. This method is used internally by `#download`.
- `<info>#download(options?)`
- Downloads the track.
- `<info>#addToWatchHistory()`
- Adds the song to the watch history.
- `<info>#page`
- Returns the original InnerTube response(s), parsed and sanitized.
</p>
</details>
<a name="search"></a>
### search(query, filters?)
Searches on YouTube Music.
**Returns:** `Promise.<Search>`
| Param | Type | Description |
| --- | --- | --- |
| query | `string` | Search query |
| filters? | `MusicSearchFilters` | Search filters |
<details>
<summary>Search Filters</summary>
| Filter | Type | Value | Description |
| --- | --- | --- | --- |
| type | `string` | `all`, `song`, `video`, `album`, `playlist`, `artist` | Search type |
</details>
<details>
<summary>Methods & Getters</summary>
<p>
- `<search>#getMore(shelf)`
- Equivalent to clicking on the shelf to load more items.
- `<search>#getContinuation()`
- Retrieves continuation, only works for individual sections or filtered results.
- `<search>#selectFilter(name)`
- Applies given filter to the search.
- `<search>#has_continuation`
- Checks if continuation is available.
- `<search>#filters`
- Returns available filters.
- `<search>#songs`
- Returns songs shelf.
- `<search>#videos`
- Returns videos shelf.
- `<search>#albums`
- Returns albums shelf.
- `<search>#artists`
- Returns artists shelf.
- `<search>#playlists`
- Returns songs shelf.
- `<search>#page`
- Returns the original InnerTube response(s), parsed and sanitized.
</p>
</details>
<a name="gethomefeed"></a>
### getHomeFeed()
Retrieves home feed.
**Returns:** `Promise.<HomeFeed>`
<details>
<summary>Methods & Getters</summary>
<p>
- `<homefeed>#getContinuation()`
- Retrieves continuation, only works for individual sections or filtered results.
- `<homefeed>#has_continuation`
- Checks if continuation is available.
- `<homefeed>#page`
- Returns original InnerTube response (sanitized).
- `<homefeed>#page`
- Returns the original InnerTube response(s), parsed and sanitized.
</p>
</details>
<a name="getexplore"></a>
### getExplore()
Retrieves “Explore” feed.
**Returns:** `Promise.<Explore>`
<details>
<summary>Methods & Getters</summary>
<p>
- `<explore>#page`
- Returns the original InnerTube response(s), parsed and sanitized.
</p>
</details>
<a name="getlibrary"></a>
### getLibrary()
Retrieves library.
**Returns:** `Library`
<details>
<summary>Methods & Getters</summary>
<p>
- `<library>#applyFilter(filter)`
- Applies given filter to the library.
- `<library>#applySort(sort_by)`
- Applies given sort option to the library items.
- `<library>#getContinuation()`
- Retrieves continuation of the library items.
- `<library>#has_continuation`
- Checks if continuation is available.
- `<library>#filters`
- Returns available filters.
- `<library>#sort_options`
- Returns available sort options.
- `<library>#page`
- Returns the original InnerTube response(s), parsed and sanitized.
</p>
</details>
<a name="getartist"></a>
### getArtist(artist_id)
Retrieves artist's info & content.
**Returns:** `Promise.<Artist>`
| Param | Type | Description |
| --- | --- | --- |
| artist_id | `string` | Artist id |
<details>
<summary>Methods & Getters</summary>
<p>
- `<artist>#page`
- Returns the original InnerTube response(s), parsed and sanitized.
</p>
</details>
<a name="getalbum"></a>
### getAlbum(album_id)
Retrieves given album.
**Returns:** `Promise.<Album>`
| Param | Type | Description |
| --- | --- | --- |
| album_id | `string` | Album id |
<details>
<summary>Methods & Getters</summary>
<p>
- `<album>#page`
- Returns the original InnerTube response(s), parsed and sanitized.
</p>
</details>
<a name="getplaylist"></a>
### getPlaylist(playlist_id)
Retrieves given playlist.
**Returns:** `Promise.<Playlist>`
| Param | Type | Description |
| --- | --- | --- |
| playlist_id | `string` | Playlist id |
<details>
<summary>Methods & Getters</summary>
<p>
- `<playlist>#getRelated()`
- Retrieves related playlists.
- `<playlist>#getSuggestions()`
- Retrieves playlist suggestions.
- `<playlist>#getContinuation()`
- Retrieves continuation.
- `<playlist>#has_continuation`
- Checks if continuation is available.
- `<playlist>#page`
- Returns the original InnerTube response(s), parsed and sanitized.
</p>
</details>
<a name="getlyrics"></a>
### getLyrics(video_id)
Retrieves song lyrics.
**Returns:** `Promise.<MusicDescriptionShelf | undefined>`
| Param | Type | Description |
| --- | --- | --- |
| video_id | `string` | Video id |
<a name="getupnext"></a>
### getUpNext(video_id, automix?)
Retrieves up next content.
**Returns:** `Promise.<PlaylistPanel>`
| Param | Type | Description |
| --- | --- | --- |
| video_id | `string` | Video id |
| automix? | `boolean` | if automix should be fetched |
<a name="getrelated"></a>
### getRelated(video_id)
Retrieves related content.
**Returns:** `Promise.<Array.<MusicCarouselShelf | MusicDescriptionShelf>>`
| Param | Type | Description |
| --- | --- | --- |
| video_id | `string` | Video id |
<a name="getrecap"></a>
### getRecap()
Retrieves your YouTube Music recap.
**Returns:** `Promise.<Recap>`
<details>
<summary>Methods & Getters</summary>
<p>
- `<recap>#getPlaylist()`
- Retrieves recap playlist.
- `<recap>#page`
- Returns the original InnerTube response(s), parsed and sanitized.
</p>
</details>
<a name="getsearchsuggestions"></a>
### getSearchSuggestions(query)
Retrieves search suggestions.
**Returns:** `Promise.<Array.<SearchSuggestion | HistorySuggestion>>`
| Param | Type | Description |
| --- | --- | --- |
| query | `string` | Search query |

View File

@@ -1,72 +0,0 @@
# PlaylistManager
Playlist management class.
## API
* PlaylistManager
* [.create(title, video_ids)](#create)
* [.delete(playlist_id)](#delete)
* [.addVideos(playlist_id, video_ids)](#addvideos)
* [.removeVideos(playlist_id, video_ids)](#removevideos)
* [.moveVideo(playlist_id, moved_video_id, predecessor_video_id)](#movevideo)
<a name="create"></a>
### create(title, video_ids)
Creates a playlist.
**Returns:** `Promise.<ApiResponse>`
| Param | Type | Description |
| --- | --- | --- |
| title | `string` | Playlist name |
| video_ids | `string[]` | array of videos |
<a name="delete"></a>
### delete(playlist_id)
Deletes given playlist.
**Returns:** `Promise.<ApiResponse>`
| Param | Type | Description |
| --- | --- | --- |
| playlist_id | `string` | Playlist id |
<a name="addvideos"></a>
### addVideos(playlist_id, video_ids)
Adds videos to given playlist.
**Returns:** `Promise.<{ playlist_id: string; action_result: any[] }>`
| Param | Type | Description |
| --- | --- | --- |
| playlist_id | `string` | Playlist id |
| video_ids | `string` | array of videos |
<a name="removevideos"></a>
### removeVideos(playlist_id, video_ids)
Removes videos from given playlist.
**Returns:** `Promise.<{ playlist_id: string; action_result: any[] }>`
| Param | Type | Description |
| --- | --- | --- |
| playlist_id | `string` | Playlist id |
| video_ids | `string` | array of videos |
<a name="movevideo"></a>
### moveVideo(playlist_id, moved_video_id, predecessor_video_id)
Moves a video to a new position within a given playlist.
**Returns:** `Promise.<{ playlist_id: string; action_result: any[] }>`
| Param | Type | Description |
| --- | --- | --- |
| playlist_id | `string` | Playlist id |
| moved_video_id | `string` | the video to be moved |
| predecessor_video_id | `string` | the video present in the target position |

View File

@@ -1,83 +0,0 @@
# Session
Represents an InnerTube session.
## API
* Session
* [.signIn(credentials?)](#signin) ⇒ `function`
* [.signOut()](#signout) ⇒ `function`
* [.key](#key) ⇒ `getter`
* [.api_version](#api_version) ⇒ `getter`
* [.client_version](#client_version) ⇒ `getter`
* [.client_name](#client_name) ⇒ `getter`
* [.context](#context) ⇒ `getter`
* [.player](#player) ⇒ `getter`
* [.lang](#lang) ⇒ `getter`
<a name="signin"></a>
### signIn(credentials?)
Signs in with given credentials.
**Returns:** `Promise<void>`
| Param | Type | Description |
| --- | --- | --- |
| credentials? | `Credentials` | OAuth credentials |
<a name="signout"></a>
### signOut()
Signs out of the current account.
**Returns:** `Promise<ActionsResponse>`
<a name="key"></a>
### key
InnerTube API key.
**Returns:** `string`
<a name="api_version"></a>
### api_version
InnerTube API version.
**Returns:** `string`
<a name="client_version"></a>
### client_version
InnerTube client version.
**Returns:** `string`
<a name="client_name"></a>
### client_name
InnerTube client name.
**Returns:** `string`
<a name="context"></a>
### context
InnerTube context.
**Returns:** `Context`
<a name="player"></a>
### player
Player script object.
**Returns:** `Player`
<a name="lang"></a>
### lang
Client language.
**Returns:** `string`

View File

@@ -1,46 +0,0 @@
# Studio
YouTube Studio class (WIP).
## API
* Studio
* [.setThumbnail(video_id, buffer)](#setthumbnail)
* [.updateVideoMetadata(video_id, metadata)](#updatemetadata)
* [.upload(file, metadata)](#upload)
<a name="setthumbnail"></a>
### setThumbnail(video_id, buffer)
Uploads a custom thumbnail and sets it for a video.
**Returns:** `Promise.<ApiResponse>`
| Param | Type | Description |
| --- | --- | --- |
| video_id | `string` | Video id |
| buffer | `Uint8Array` | Thumbnail buffer |
<a name="updatemetadata"></a>
### updateVideoMetadata(video_id, metadata)
Updates given video's metadata.
**Returns:** `Promise.<ApiResponse>`
| Param | Type | Description |
| --- | --- | --- |
| video_id | `string` | Video id |
| metadata | `VideoMetadata` | Video metadata |
<a name="upload"></a>
### upload(file, metadata)
Uploads a video to YouTube.
**Returns:** `Promise.<ApiResponse>`
| Param | Type | Description |
| --- | --- | --- |
| file | `BodyInit` | Video file |
| metadata | `UploadedVideoMetadata` | Video metadata |

View File

@@ -1,62 +0,0 @@
# TabbedFeed
Represents a feed with tabs.
> **Note**
> This class extends the [Feed](feed.md) class.
## API
* TabbedFeed
* [.tabs](#tabs)
* [.getTabByName(title: string)](#gettabbyname)
* [.getTabByURL(url: string)](#gettabbyurl)
* [.hasTabWithURL(url: string)](#hastabwithurl)
* [.title](#title)
<a name="tabs"></a>
### tabs
Returns the feed's tabs as an array of strings.
**Returns:** `string[]`
<a name="gettabbyname"></a>
### getTabByName(title: string)
Fetches a tab by its title.
**Returns:** `Promise<TabbedFeed<T>>`
| Param | Type | Description |
| --- | --- | --- |
| title | `string` | The title of the tab to get |
<a name="gettabbyurl"></a>
### getTabByURL(url: string)
Fetches a tab by its URL.
**Returns:** `Promise<TabbedFeed<T>>`
| Param | Type | Description |
| --- | --- | --- |
| url | `string` | The URL of the tab to get |
<a name="hastabwithurl"></a>
### hasTabWithURL(url: string)
Returns whether the feed has a tab with the given URL.
**Returns:** `boolean`
| Param | Type | Description |
| --- | --- | --- |
| url | `string` | The URL to check |
<a name="title"></a>
### title
Returns the currently selected tab's title.
**Returns:** `string | undefined`

415
docs/api/README.md Normal file
View File

@@ -0,0 +1,415 @@
# youtubei.js
## References
### AddToPlaylistServiceRequest
Re-exports [AddToPlaylistServiceRequest](namespaces/APIResponseTypes/type-aliases/AddToPlaylistServiceRequest.md)
***
### AppendContinuationItemsAction
Re-exports [AppendContinuationItemsAction](namespaces/YTNodes/classes/AppendContinuationItemsAction.md)
***
### BrowseRequest
Re-exports [BrowseRequest](namespaces/APIResponseTypes/type-aliases/BrowseRequest.md)
***
### BrowseRequestSupportedMetadata
Re-exports [BrowseRequestSupportedMetadata](namespaces/APIResponseTypes/type-aliases/BrowseRequestSupportedMetadata.md)
***
### ContinuationRequest
Re-exports [ContinuationRequest](namespaces/APIResponseTypes/type-aliases/ContinuationRequest.md)
***
### CpnSource
Re-exports [CpnSource](namespaces/APIResponseTypes/type-aliases/CpnSource.md)
***
### CreateCommentRequest
Re-exports [CreateCommentRequest](namespaces/APIResponseTypes/type-aliases/CreateCommentRequest.md)
***
### CreatePlaylistServiceRequest
Re-exports [CreatePlaylistServiceRequest](namespaces/APIResponseTypes/type-aliases/CreatePlaylistServiceRequest.md)
***
### default
Renames and re-exports [Innertube](classes/Innertube.md)
***
### DeletePlaylistServiceRequest
Re-exports [DeletePlaylistServiceRequest](namespaces/APIResponseTypes/type-aliases/DeletePlaylistServiceRequest.md)
***
### FeedbackContext
Re-exports [FeedbackContext](namespaces/APIResponseTypes/type-aliases/FeedbackContext.md)
***
### FeedbackRequest
Re-exports [FeedbackRequest](namespaces/APIResponseTypes/type-aliases/FeedbackRequest.md)
***
### FormData
Re-exports [FormData](namespaces/APIResponseTypes/type-aliases/FormData.md)
***
### GetAccountsListInnertubeRequest
Re-exports [GetAccountsListInnertubeRequest](namespaces/APIResponseTypes/type-aliases/GetAccountsListInnertubeRequest.md)
***
### GetKidsBlocklistPickerRequest
Re-exports [GetKidsBlocklistPickerRequest](namespaces/APIResponseTypes/type-aliases/GetKidsBlocklistPickerRequest.md)
***
### IBotguardChallenge
Re-exports [IBotguardChallenge](namespaces/APIResponseTypes/interfaces/IBotguardChallenge.md)
***
### IBrowseResponse
Re-exports [IBrowseResponse](namespaces/APIResponseTypes/type-aliases/IBrowseResponse.md)
***
### IEndpoint
Re-exports [IEndpoint](namespaces/APIResponseTypes/interfaces/IEndpoint.md)
***
### IGetChallengeResponse
Re-exports [IGetChallengeResponse](namespaces/APIResponseTypes/type-aliases/IGetChallengeResponse.md)
***
### IGetNotificationsMenuResponse
Re-exports [IGetNotificationsMenuResponse](namespaces/APIResponseTypes/type-aliases/IGetNotificationsMenuResponse.md)
***
### IGetTranscriptResponse
Re-exports [IGetTranscriptResponse](namespaces/APIResponseTypes/type-aliases/IGetTranscriptResponse.md)
***
### IGuideResponse
Re-exports [IGuideResponse](namespaces/APIResponseTypes/type-aliases/IGuideResponse.md)
***
### INextResponse
Re-exports [INextResponse](namespaces/APIResponseTypes/type-aliases/INextResponse.md)
***
### InlineSettingStatus
Re-exports [InlineSettingStatus](namespaces/APIResponseTypes/type-aliases/InlineSettingStatus.md)
***
### IParsedResponse
Re-exports [IParsedResponse](namespaces/APIResponseTypes/interfaces/IParsedResponse.md)
***
### IPlayabilityStatus
Re-exports [IPlayabilityStatus](namespaces/APIResponseTypes/interfaces/IPlayabilityStatus.md)
***
### IPlaybackTracking
Re-exports [IPlaybackTracking](namespaces/APIResponseTypes/interfaces/IPlaybackTracking.md)
***
### IPlayerConfig
Re-exports [IPlayerConfig](namespaces/APIResponseTypes/interfaces/IPlayerConfig.md)
***
### IPlayerResponse
Re-exports [IPlayerResponse](namespaces/APIResponseTypes/type-aliases/IPlayerResponse.md)
***
### IRawBotguardChallenge
Re-exports [IRawBotguardChallenge](namespaces/APIResponseTypes/interfaces/IRawBotguardChallenge.md)
***
### IRawPlayerConfig
Re-exports [IRawPlayerConfig](namespaces/APIResponseTypes/interfaces/IRawPlayerConfig.md)
***
### IRawResponse
Re-exports [IRawResponse](namespaces/APIResponseTypes/interfaces/IRawResponse.md)
***
### IRawTrustedResource
Re-exports [IRawTrustedResource](namespaces/APIResponseTypes/interfaces/IRawTrustedResource.md)
***
### IResolveURLResponse
Re-exports [IResolveURLResponse](namespaces/APIResponseTypes/type-aliases/IResolveURLResponse.md)
***
### IResponseContext
Re-exports [IResponseContext](namespaces/APIResponseTypes/interfaces/IResponseContext.md)
***
### ISearchResponse
Re-exports [ISearchResponse](namespaces/APIResponseTypes/type-aliases/ISearchResponse.md)
***
### IServiceTrackingParams
Re-exports [IServiceTrackingParams](namespaces/APIResponseTypes/interfaces/IServiceTrackingParams.md)
***
### IStreamingData
Re-exports [IStreamingData](namespaces/APIResponseTypes/interfaces/IStreamingData.md)
***
### ITrustedResource
Re-exports [ITrustedResource](namespaces/APIResponseTypes/interfaces/ITrustedResource.md)
***
### IUpdatedMetadataResponse
Re-exports [IUpdatedMetadataResponse](namespaces/APIResponseTypes/type-aliases/IUpdatedMetadataResponse.md)
***
### LikeRequest
Re-exports [LikeRequest](namespaces/APIResponseTypes/type-aliases/LikeRequest.md)
***
### LikeTarget
Re-exports [LikeTarget](namespaces/APIResponseTypes/type-aliases/LikeTarget.md)
***
### LiveChatItemContextMenuRequest
Re-exports [LiveChatItemContextMenuRequest](namespaces/APIResponseTypes/type-aliases/LiveChatItemContextMenuRequest.md)
***
### ModifyChannelNotificationPreferenceRequest
Re-exports [ModifyChannelNotificationPreferenceRequest](namespaces/APIResponseTypes/type-aliases/ModifyChannelNotificationPreferenceRequest.md)
***
### NextNavendpoint
Re-exports [NextNavendpoint](namespaces/APIResponseTypes/type-aliases/NextNavendpoint.md)
***
### PerformCommentActionRequest
Re-exports [PerformCommentActionRequest](namespaces/APIResponseTypes/type-aliases/PerformCommentActionRequest.md)
***
### PlaylistEditRequest
Re-exports [PlaylistEditRequest](namespaces/APIResponseTypes/type-aliases/PlaylistEditRequest.md)
***
### PlaylistPrivacyStatus
Re-exports [PlaylistPrivacyStatus](namespaces/APIResponseTypes/type-aliases/PlaylistPrivacyStatus.md)
***
### RawData
Re-exports [RawData](namespaces/APIResponseTypes/type-aliases/RawData.md)
***
### RawNode
Re-exports [RawNode](namespaces/APIResponseTypes/type-aliases/RawNode.md)
***
### ReelWatchRequest
Re-exports [ReelWatchRequest](namespaces/APIResponseTypes/type-aliases/ReelWatchRequest.md)
***
### SearchRequest
Re-exports [SearchRequest](namespaces/APIResponseTypes/type-aliases/SearchRequest.md)
***
### ShareEntityServiceRequest
Re-exports [ShareEntityServiceRequest](namespaces/APIResponseTypes/type-aliases/ShareEntityServiceRequest.md)
***
### SubscribeRequest
Re-exports [SubscribeRequest](namespaces/APIResponseTypes/type-aliases/SubscribeRequest.md)
***
### UnsubscribeRequest
Re-exports [UnsubscribeRequest](namespaces/APIResponseTypes/type-aliases/UnsubscribeRequest.md)
***
### WatchNextRequest
Re-exports [WatchNextRequest](namespaces/APIResponseTypes/type-aliases/WatchNextRequest.md)
***
### WatchRequest
Re-exports [WatchRequest](namespaces/APIResponseTypes/type-aliases/WatchRequest.md)
## Namespaces
- [APIResponseTypes](namespaces/APIResponseTypes/README.md)
- [Clients](namespaces/Clients/README.md)
- [Constants](namespaces/Constants/README.md)
- [FormatUtils](namespaces/FormatUtils/README.md)
- [Generator](namespaces/Generator/README.md)
- [Helpers](namespaces/Helpers/README.md)
- [Log](namespaces/Log/README.md)
- [LZW](namespaces/LZW/README.md)
- [Managers](namespaces/Managers/README.md)
- [Misc](namespaces/Misc/README.md)
- [Mixins](namespaces/Mixins/README.md)
- [Parser](namespaces/Parser/README.md)
- [ProtoUtils](namespaces/ProtoUtils/README.md)
- [Types](namespaces/Types/README.md)
- [Utils](namespaces/Utils/README.md)
- [YT](namespaces/YT/README.md)
- [YTKids](namespaces/YTKids/README.md)
- [YTMusic](namespaces/YTMusic/README.md)
- [YTNodes](namespaces/YTNodes/README.md)
- [YTShorts](namespaces/YTShorts/README.md)
## Enumerations
- [ClientType](enumerations/ClientType.md)
## Classes
- [Actions](classes/Actions.md)
- [Continuation](classes/Continuation.md)
- [ContinuationCommand](classes/ContinuationCommand.md)
- [EventEmitter](classes/EventEmitter.md)
- [GridContinuation](classes/GridContinuation.md)
- [HTTPClient](classes/HTTPClient.md)
- [Innertube](classes/Innertube.md)
- [ItemSectionContinuation](classes/ItemSectionContinuation.md)
- [LiveChatContinuation](classes/LiveChatContinuation.md)
- [MusicPlaylistShelfContinuation](classes/MusicPlaylistShelfContinuation.md)
- [MusicShelfContinuation](classes/MusicShelfContinuation.md)
- [NavigateAction](classes/NavigateAction.md)
- [OAuth2](classes/OAuth2.md)
- [Platform](classes/Platform.md)
- [Player](classes/Player.md)
- [PlaylistPanelContinuation](classes/PlaylistPanelContinuation.md)
- [ReloadContinuationItemsCommand](classes/ReloadContinuationItemsCommand.md)
- [SectionListContinuation](classes/SectionListContinuation.md)
- [Session](classes/Session.md)
- [ShowMiniplayerCommand](classes/ShowMiniplayerCommand.md)
- [UniversalCache](classes/UniversalCache.md)
## Interfaces
- [ApiResponse](interfaces/ApiResponse.md)
- [HTTPClientInit](interfaces/HTTPClientInit.md)
## Type Aliases
- [Context](type-aliases/Context.md)
- [DeviceAndUserCode](type-aliases/DeviceAndUserCode.md)
- [InnertubeEndpoint](type-aliases/InnertubeEndpoint.md)
- [OAuth2AuthErrorEventHandler](type-aliases/OAuth2AuthErrorEventHandler.md)
- [OAuth2AuthEventHandler](type-aliases/OAuth2AuthEventHandler.md)
- [OAuth2AuthPendingEventHandler](type-aliases/OAuth2AuthPendingEventHandler.md)
- [OAuth2ClientID](type-aliases/OAuth2ClientID.md)
- [OAuth2Tokens](type-aliases/OAuth2Tokens.md)
- [ParsedResponse](type-aliases/ParsedResponse.md)
- [SessionArgs](type-aliases/SessionArgs.md)
- [SessionData](type-aliases/SessionData.md)
- [SessionOptions](type-aliases/SessionOptions.md)
- [SWSessionData](type-aliases/SWSessionData.md)

135
docs/api/classes/Actions.md Normal file
View File

@@ -0,0 +1,135 @@
[youtubei.js](../README.md) / Actions
# Class: Actions
## Constructors
### new Actions()
> **new Actions**(`session`): [`Actions`](Actions.md)
#### Parameters
**session**: [`Session`](Session.md)
#### Returns
[`Actions`](Actions.md)
#### Defined in
[src/core/Actions.ts:49](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/core/Actions.ts#L49)
## Properties
### session
> **session**: [`Session`](Session.md)
#### Defined in
[src/core/Actions.ts:47](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/core/Actions.ts#L47)
## Methods
### execute()
#### execute(endpoint, args)
> **execute**\<`T`\>(`endpoint`, `args`): `Promise`\<[`ParsedResponse`](../type-aliases/ParsedResponse.md)\<`T`\>\>
Executes an API call.
##### Type Parameters
**T** *extends* `string`
##### Parameters
**endpoint**: `T`
The endpoint to call.
**args**
Call arguments
**args.parse**: `true`
**args.protobuf?**: `false`
**args.serialized\_data?**: `any`
**args.skip\_auth\_check?**: `boolean`
##### Returns
`Promise`\<[`ParsedResponse`](../type-aliases/ParsedResponse.md)\<`T`\>\>
##### Defined in
[src/core/Actions.ts:93](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/core/Actions.ts#L93)
#### execute(endpoint, args)
> **execute**\<`T`\>(`endpoint`, `args`?): `Promise`\<[`ApiResponse`](../interfaces/ApiResponse.md)\>
##### Type Parameters
**T** *extends* `string`
##### Parameters
**endpoint**: `T`
**args?**
**args.parse?**: `false`
**args.protobuf?**: `true`
**args.serialized\_data?**: `any`
**args.skip\_auth\_check?**: `boolean`
##### Returns
`Promise`\<[`ApiResponse`](../interfaces/ApiResponse.md)\>
##### Defined in
[src/core/Actions.ts:100](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/core/Actions.ts#L100)
***
### stats()
> **stats**(`url`, `client`, `params`): `Promise`\<`Response`\>
Makes calls to the playback tracking API.
#### Parameters
**url**: `string`
The URL to call.
**client**
The client to use.
**client.client\_name**: `string`
**client.client\_version**: `string`
**params**
Call parameters.
#### Returns
`Promise`\<`Response`\>
#### Defined in
[src/core/Actions.ts:71](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/core/Actions.ts#L71)

View File

@@ -0,0 +1,241 @@
[youtubei.js](../README.md) / Continuation
# Class: Continuation
## Extends
- [`YTNode`](../namespaces/Helpers/classes/YTNode.md)
## Constructors
### new Continuation()
> **new Continuation**(`data`): [`Continuation`](Continuation.md)
#### Parameters
**data**: [`RawNode`](../namespaces/APIResponseTypes/type-aliases/RawNode.md)
#### Returns
[`Continuation`](Continuation.md)
#### Overrides
[`YTNode`](../namespaces/Helpers/classes/YTNode.md).[`constructor`](../namespaces/Helpers/classes/YTNode.md#constructors)
#### Defined in
[src/parser/continuations.ts:147](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/continuations.ts#L147)
## Properties
### continuation\_type
> **continuation\_type**: `string`
#### Defined in
[src/parser/continuations.ts:142](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/continuations.ts#L142)
***
### time\_until\_last\_message\_ms?
> `optional` **time\_until\_last\_message\_ms**: `number`
#### Defined in
[src/parser/continuations.ts:144](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/continuations.ts#L144)
***
### timeout\_ms?
> `optional` **timeout\_ms**: `number`
#### Defined in
[src/parser/continuations.ts:143](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/continuations.ts#L143)
***
### token
> **token**: `string`
#### Defined in
[src/parser/continuations.ts:145](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/continuations.ts#L145)
***
### type
> `readonly` **type**: `string`
#### Inherited from
[`YTNode`](../namespaces/Helpers/classes/YTNode.md).[`type`](../namespaces/Helpers/classes/YTNode.md#type)
#### Defined in
[src/parser/helpers.ts:8](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/helpers.ts#L8)
***
### type
> `readonly` `static` **type**: `"continuation"` = `'continuation'`
#### Overrides
[`YTNode`](../namespaces/Helpers/classes/YTNode.md).[`type`](../namespaces/Helpers/classes/YTNode.md#type-1)
#### Defined in
[src/parser/continuations.ts:140](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/continuations.ts#L140)
## Methods
### as()
> **as**\<`T`, `K`\>(...`types`): `InstanceType`\<`K`\[`number`\]\>
Cast to one of the given types.
#### Type Parameters
**T** *extends* [`YTNode`](../namespaces/Helpers/classes/YTNode.md)
**K** *extends* [`YTNodeConstructor`](../namespaces/Helpers/interfaces/YTNodeConstructor.md)\<`T`\>[]
#### Parameters
• ...**types**: `K`
The types to cast to
#### Returns
`InstanceType`\<`K`\[`number`\]\>
The node cast to one of the given types
#### Throws
If the node is not of the given type
#### Inherited from
[`YTNode`](../namespaces/Helpers/classes/YTNode.md).[`as`](../namespaces/Helpers/classes/YTNode.md#as)
#### Defined in
[src/parser/helpers.ts:38](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/helpers.ts#L38)
***
### hasKey()
> **hasKey**\<`T`, `R`\>(`key`): `this is Continuation & { [k in string]: R }`
Check for a key without asserting the type.
#### Type Parameters
**T** *extends* `string`
**R** = `any`
#### Parameters
**key**: `T`
The key to check
#### Returns
`this is Continuation & { [k in string]: R }`
Whether the node has the key
#### Inherited from
[`YTNode`](../namespaces/Helpers/classes/YTNode.md).[`hasKey`](../namespaces/Helpers/classes/YTNode.md#haskey)
#### Defined in
[src/parser/helpers.ts:50](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/helpers.ts#L50)
***
### is()
> **is**\<`T`, `K`\>(...`types`): `this is InstanceType<K[number]>`
Check if the node is of the given type.
#### Type Parameters
**T** *extends* [`YTNode`](../namespaces/Helpers/classes/YTNode.md)
**K** *extends* [`YTNodeConstructor`](../namespaces/Helpers/interfaces/YTNodeConstructor.md)\<`T`\>[]
#### Parameters
• ...**types**: `K`
The type to check
#### Returns
`this is InstanceType<K[number]>`
whether the node is of the given type
#### Inherited from
[`YTNode`](../namespaces/Helpers/classes/YTNode.md).[`is`](../namespaces/Helpers/classes/YTNode.md#is)
#### Defined in
[src/parser/helpers.ts:28](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/helpers.ts#L28)
***
### key()
> **key**\<`T`, `R`\>(`key`): [`Maybe`](../namespaces/Helpers/classes/Maybe.md)
Assert that the node has the given key and return it.
#### Type Parameters
**T** *extends* `string`
**R** = `any`
#### Parameters
**key**: `T`
The key to check
#### Returns
[`Maybe`](../namespaces/Helpers/classes/Maybe.md)
The value of the key wrapped in a Maybe
#### Throws
If the node does not have the key
#### Inherited from
[`YTNode`](../namespaces/Helpers/classes/YTNode.md).[`key`](../namespaces/Helpers/classes/YTNode.md#key)
#### Defined in
[src/parser/helpers.ts:60](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/helpers.ts#L60)

View File

@@ -0,0 +1,221 @@
[youtubei.js](../README.md) / ContinuationCommand
# Class: ContinuationCommand
## Extends
- [`YTNode`](../namespaces/Helpers/classes/YTNode.md)
## Constructors
### new ContinuationCommand()
> **new ContinuationCommand**(`data`): [`ContinuationCommand`](ContinuationCommand.md)
#### Parameters
**data**: [`RawNode`](../namespaces/APIResponseTypes/type-aliases/RawNode.md)
#### Returns
[`ContinuationCommand`](ContinuationCommand.md)
#### Overrides
[`YTNode`](../namespaces/Helpers/classes/YTNode.md).[`constructor`](../namespaces/Helpers/classes/YTNode.md#constructors)
#### Defined in
[src/parser/continuations.ts:220](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/continuations.ts#L220)
## Properties
### request
> **request**: `string`
#### Defined in
[src/parser/continuations.ts:217](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/continuations.ts#L217)
***
### token
> **token**: `string`
#### Defined in
[src/parser/continuations.ts:218](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/continuations.ts#L218)
***
### type
> `readonly` **type**: `string`
#### Inherited from
[`YTNode`](../namespaces/Helpers/classes/YTNode.md).[`type`](../namespaces/Helpers/classes/YTNode.md#type)
#### Defined in
[src/parser/helpers.ts:8](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/helpers.ts#L8)
***
### type
> `readonly` `static` **type**: `"ContinuationCommand"` = `'ContinuationCommand'`
#### Overrides
[`YTNode`](../namespaces/Helpers/classes/YTNode.md).[`type`](../namespaces/Helpers/classes/YTNode.md#type-1)
#### Defined in
[src/parser/continuations.ts:215](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/continuations.ts#L215)
## Methods
### as()
> **as**\<`T`, `K`\>(...`types`): `InstanceType`\<`K`\[`number`\]\>
Cast to one of the given types.
#### Type Parameters
**T** *extends* [`YTNode`](../namespaces/Helpers/classes/YTNode.md)
**K** *extends* [`YTNodeConstructor`](../namespaces/Helpers/interfaces/YTNodeConstructor.md)\<`T`\>[]
#### Parameters
• ...**types**: `K`
The types to cast to
#### Returns
`InstanceType`\<`K`\[`number`\]\>
The node cast to one of the given types
#### Throws
If the node is not of the given type
#### Inherited from
[`YTNode`](../namespaces/Helpers/classes/YTNode.md).[`as`](../namespaces/Helpers/classes/YTNode.md#as)
#### Defined in
[src/parser/helpers.ts:38](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/helpers.ts#L38)
***
### hasKey()
> **hasKey**\<`T`, `R`\>(`key`): `this is ContinuationCommand & { [k in string]: R }`
Check for a key without asserting the type.
#### Type Parameters
**T** *extends* `string`
**R** = `any`
#### Parameters
**key**: `T`
The key to check
#### Returns
`this is ContinuationCommand & { [k in string]: R }`
Whether the node has the key
#### Inherited from
[`YTNode`](../namespaces/Helpers/classes/YTNode.md).[`hasKey`](../namespaces/Helpers/classes/YTNode.md#haskey)
#### Defined in
[src/parser/helpers.ts:50](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/helpers.ts#L50)
***
### is()
> **is**\<`T`, `K`\>(...`types`): `this is InstanceType<K[number]>`
Check if the node is of the given type.
#### Type Parameters
**T** *extends* [`YTNode`](../namespaces/Helpers/classes/YTNode.md)
**K** *extends* [`YTNodeConstructor`](../namespaces/Helpers/interfaces/YTNodeConstructor.md)\<`T`\>[]
#### Parameters
• ...**types**: `K`
The type to check
#### Returns
`this is InstanceType<K[number]>`
whether the node is of the given type
#### Inherited from
[`YTNode`](../namespaces/Helpers/classes/YTNode.md).[`is`](../namespaces/Helpers/classes/YTNode.md#is)
#### Defined in
[src/parser/helpers.ts:28](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/helpers.ts#L28)
***
### key()
> **key**\<`T`, `R`\>(`key`): [`Maybe`](../namespaces/Helpers/classes/Maybe.md)
Assert that the node has the given key and return it.
#### Type Parameters
**T** *extends* `string`
**R** = `any`
#### Parameters
**key**: `T`
The key to check
#### Returns
[`Maybe`](../namespaces/Helpers/classes/Maybe.md)
The value of the key wrapped in a Maybe
#### Throws
If the node does not have the key
#### Inherited from
[`YTNode`](../namespaces/Helpers/classes/YTNode.md).[`key`](../namespaces/Helpers/classes/YTNode.md#key)
#### Defined in
[src/parser/helpers.ts:60](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/helpers.ts#L60)

View File

@@ -0,0 +1,208 @@
[youtubei.js](../README.md) / EventEmitter
# Class: EventEmitter
## Extends
- `EventTarget`
## Extended by
- [`Session`](Session.md)
- [`LiveChat`](../namespaces/YT/classes/LiveChat.md)
## Constructors
### new EventEmitter()
> **new EventEmitter**(): [`EventEmitter`](EventEmitter.md)
#### Returns
[`EventEmitter`](EventEmitter.md)
#### Overrides
`EventTarget.constructor`
#### Defined in
[src/utils/EventEmitterLike.ts:6](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/utils/EventEmitterLike.ts#L6)
## Methods
### addEventListener()
> **addEventListener**(`type`, `callback`, `options`?): `void`
Appends an event listener for events whose type attribute value is type. The callback argument sets the callback that will be invoked when the event is dispatched.
The options argument sets listener-specific options. For compatibility this can be a boolean, in which case the method behaves exactly as if the value was specified as options's capture.
When set to true, options's capture prevents callback from being invoked when the event's eventPhase attribute value is BUBBLING_PHASE. When false (or not present), callback will not be invoked when event's eventPhase attribute value is CAPTURING_PHASE. Either way, callback will be invoked if event's eventPhase attribute value is AT_TARGET.
When set to true, options's passive indicates that the callback will not cancel the event by invoking preventDefault(). This is used to enable performance optimizations described in § 2.8 Observing event listeners.
When set to true, options's once indicates that the callback will only be invoked once after which the event listener will be removed.
If an AbortSignal is passed for options's signal, then the event listener will be removed when signal is aborted.
The event listener is appended to target's event listener list and is not appended if it has the same type, callback, and capture.
[MDN Reference](https://developer.mozilla.org/docs/Web/API/EventTarget/addEventListener)
#### Parameters
**type**: `string`
**callback**: `null` \| `EventListenerOrEventListenerObject`
**options?**: `boolean` \| `AddEventListenerOptions`
#### Returns
`void`
#### Inherited from
`EventTarget.addEventListener`
#### Defined in
node\_modules/typescript/lib/lib.dom.d.ts:8256
***
### dispatchEvent()
> **dispatchEvent**(`event`): `boolean`
Dispatches a synthetic event event to target and returns true if either event's cancelable attribute value is false or its preventDefault() method was not invoked, and false otherwise.
[MDN Reference](https://developer.mozilla.org/docs/Web/API/EventTarget/dispatchEvent)
#### Parameters
**event**: `Event`
#### Returns
`boolean`
#### Inherited from
`EventTarget.dispatchEvent`
#### Defined in
node\_modules/typescript/lib/lib.dom.d.ts:8262
***
### emit()
> **emit**(`type`, ...`args`): `void`
#### Parameters
**type**: `string`
• ...**args**: `any`[]
#### Returns
`void`
#### Defined in
[src/utils/EventEmitterLike.ts:10](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/utils/EventEmitterLike.ts#L10)
***
### off()
> **off**(`type`, `listener`): `void`
#### Parameters
**type**: `string`
**listener**
#### Returns
`void`
#### Defined in
[src/utils/EventEmitterLike.ts:40](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/utils/EventEmitterLike.ts#L40)
***
### on()
> **on**(`type`, `listener`): `void`
#### Parameters
**type**: `string`
**listener**
#### Returns
`void`
#### Defined in
[src/utils/EventEmitterLike.ts:15](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/utils/EventEmitterLike.ts#L15)
***
### once()
> **once**(`type`, `listener`): `void`
#### Parameters
**type**: `string`
**listener**
#### Returns
`void`
#### Defined in
[src/utils/EventEmitterLike.ts:27](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/utils/EventEmitterLike.ts#L27)
***
### removeEventListener()
> **removeEventListener**(`type`, `callback`, `options`?): `void`
Removes the event listener in target's event listener list with the same type, callback, and options.
[MDN Reference](https://developer.mozilla.org/docs/Web/API/EventTarget/removeEventListener)
#### Parameters
**type**: `string`
**callback**: `null` \| `EventListenerOrEventListenerObject`
**options?**: `boolean` \| `EventListenerOptions`
#### Returns
`void`
#### Inherited from
`EventTarget.removeEventListener`
#### Defined in
node\_modules/typescript/lib/lib.dom.d.ts:8268

View File

@@ -0,0 +1,235 @@
[youtubei.js](../README.md) / GridContinuation
# Class: GridContinuation
## Extends
- [`YTNode`](../namespaces/Helpers/classes/YTNode.md)
## Constructors
### new GridContinuation()
> **new GridContinuation**(`data`): [`GridContinuation`](GridContinuation.md)
#### Parameters
**data**: [`RawNode`](../namespaces/APIResponseTypes/type-aliases/RawNode.md)
#### Returns
[`GridContinuation`](GridContinuation.md)
#### Overrides
[`YTNode`](../namespaces/Helpers/classes/YTNode.md).[`constructor`](../namespaces/Helpers/classes/YTNode.md#constructors)
#### Defined in
[src/parser/continuations.ts:114](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/continuations.ts#L114)
## Properties
### continuation
> **continuation**: `string`
#### Defined in
[src/parser/continuations.ts:111](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/continuations.ts#L111)
***
### items
> **items**: `null` \| [`ObservedArray`](../namespaces/Helpers/type-aliases/ObservedArray.md)\<[`YTNode`](../namespaces/Helpers/classes/YTNode.md)\>
#### Defined in
[src/parser/continuations.ts:112](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/continuations.ts#L112)
***
### type
> `readonly` **type**: `string`
#### Inherited from
[`YTNode`](../namespaces/Helpers/classes/YTNode.md).[`type`](../namespaces/Helpers/classes/YTNode.md#type)
#### Defined in
[src/parser/helpers.ts:8](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/helpers.ts#L8)
***
### type
> `readonly` `static` **type**: `"gridContinuation"` = `'gridContinuation'`
#### Overrides
[`YTNode`](../namespaces/Helpers/classes/YTNode.md).[`type`](../namespaces/Helpers/classes/YTNode.md#type-1)
#### Defined in
[src/parser/continuations.ts:109](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/continuations.ts#L109)
## Accessors
### contents
> `get` **contents**(): `null` \| [`ObservedArray`](../namespaces/Helpers/type-aliases/ObservedArray.md)\<[`YTNode`](../namespaces/Helpers/classes/YTNode.md)\>
#### Returns
`null` \| [`ObservedArray`](../namespaces/Helpers/type-aliases/ObservedArray.md)\<[`YTNode`](../namespaces/Helpers/classes/YTNode.md)\>
#### Defined in
[src/parser/continuations.ts:120](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/continuations.ts#L120)
## Methods
### as()
> **as**\<`T`, `K`\>(...`types`): `InstanceType`\<`K`\[`number`\]\>
Cast to one of the given types.
#### Type Parameters
**T** *extends* [`YTNode`](../namespaces/Helpers/classes/YTNode.md)
**K** *extends* [`YTNodeConstructor`](../namespaces/Helpers/interfaces/YTNodeConstructor.md)\<`T`\>[]
#### Parameters
• ...**types**: `K`
The types to cast to
#### Returns
`InstanceType`\<`K`\[`number`\]\>
The node cast to one of the given types
#### Throws
If the node is not of the given type
#### Inherited from
[`YTNode`](../namespaces/Helpers/classes/YTNode.md).[`as`](../namespaces/Helpers/classes/YTNode.md#as)
#### Defined in
[src/parser/helpers.ts:38](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/helpers.ts#L38)
***
### hasKey()
> **hasKey**\<`T`, `R`\>(`key`): `this is GridContinuation & { [k in string]: R }`
Check for a key without asserting the type.
#### Type Parameters
**T** *extends* `string`
**R** = `any`
#### Parameters
**key**: `T`
The key to check
#### Returns
`this is GridContinuation & { [k in string]: R }`
Whether the node has the key
#### Inherited from
[`YTNode`](../namespaces/Helpers/classes/YTNode.md).[`hasKey`](../namespaces/Helpers/classes/YTNode.md#haskey)
#### Defined in
[src/parser/helpers.ts:50](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/helpers.ts#L50)
***
### is()
> **is**\<`T`, `K`\>(...`types`): `this is InstanceType<K[number]>`
Check if the node is of the given type.
#### Type Parameters
**T** *extends* [`YTNode`](../namespaces/Helpers/classes/YTNode.md)
**K** *extends* [`YTNodeConstructor`](../namespaces/Helpers/interfaces/YTNodeConstructor.md)\<`T`\>[]
#### Parameters
• ...**types**: `K`
The type to check
#### Returns
`this is InstanceType<K[number]>`
whether the node is of the given type
#### Inherited from
[`YTNode`](../namespaces/Helpers/classes/YTNode.md).[`is`](../namespaces/Helpers/classes/YTNode.md#is)
#### Defined in
[src/parser/helpers.ts:28](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/helpers.ts#L28)
***
### key()
> **key**\<`T`, `R`\>(`key`): [`Maybe`](../namespaces/Helpers/classes/Maybe.md)
Assert that the node has the given key and return it.
#### Type Parameters
**T** *extends* `string`
**R** = `any`
#### Parameters
**key**: `T`
The key to check
#### Returns
[`Maybe`](../namespaces/Helpers/classes/Maybe.md)
The value of the key wrapped in a Maybe
#### Throws
If the node does not have the key
#### Inherited from
[`YTNode`](../namespaces/Helpers/classes/YTNode.md).[`key`](../namespaces/Helpers/classes/YTNode.md#key)
#### Defined in
[src/parser/helpers.ts:60](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/helpers.ts#L60)

View File

@@ -0,0 +1,71 @@
[youtubei.js](../README.md) / HTTPClient
# Class: HTTPClient
## Constructors
### new HTTPClient()
> **new HTTPClient**(`session`, `cookie`?, `fetch`?): [`HTTPClient`](HTTPClient.md)
#### Parameters
**session**: [`Session`](Session.md)
**cookie?**: `string`
**fetch?**
#### Returns
[`HTTPClient`](HTTPClient.md)
#### Defined in
[src/utils/HTTPClient.ts:22](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/utils/HTTPClient.ts#L22)
## Accessors
### fetch\_function
> `get` **fetch\_function**(): (`input`, `init`?) => `Promise`\<`Response`\>
#### Returns
`Function`
[MDN Reference](https://developer.mozilla.org/docs/Web/API/fetch)
##### Parameters
**input**: `URL` \| `RequestInfo`
**init?**: `RequestInit`
##### Returns
`Promise`\<`Response`\>
#### Defined in
[src/utils/HTTPClient.ts:28](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/utils/HTTPClient.ts#L28)
## Methods
### fetch()
> **fetch**(`input`, `init`?): `Promise`\<`Response`\>
#### Parameters
**input**: `string` \| `URL` \| `Request`
**init?**: `RequestInit` & [`HTTPClientInit`](../interfaces/HTTPClientInit.md)
#### Returns
`Promise`\<`Response`\>
#### Defined in
[src/utils/HTTPClient.ts:32](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/utils/HTTPClient.ts#L32)

View File

@@ -0,0 +1,702 @@
[youtubei.js](../README.md) / Innertube
# Class: Innertube
Provides access to various services and modules in the YouTube API.
## Example
```ts
import { Innertube, UniversalCache } from 'youtubei.js';
const innertube = await Innertube.create({ cache: new UniversalCache(true)});
```
## Constructors
### new Innertube()
> **new Innertube**(`session`): [`Innertube`](Innertube.md)
#### Parameters
**session**: [`Session`](Session.md)
#### Returns
[`Innertube`](Innertube.md)
#### Defined in
[src/Innertube.ts:65](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/Innertube.ts#L65)
## Accessors
### account
> `get` **account**(): [`AccountManager`](../namespaces/Managers/classes/AccountManager.md)
An interface for managing and retrieving account information.
#### Returns
[`AccountManager`](../namespaces/Managers/classes/AccountManager.md)
#### Defined in
[src/Innertube.ts:588](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/Innertube.ts#L588)
***
### actions
> `get` **actions**(): [`Actions`](Actions.md)
An internal class used to dispatch requests.
#### Returns
[`Actions`](Actions.md)
#### Defined in
[src/Innertube.ts:609](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/Innertube.ts#L609)
***
### interact
> `get` **interact**(): [`InteractionManager`](../namespaces/Managers/classes/InteractionManager.md)
An interface for directly interacting with certain YouTube features.
#### Returns
[`InteractionManager`](../namespaces/Managers/classes/InteractionManager.md)
#### Defined in
[src/Innertube.ts:602](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/Innertube.ts#L602)
***
### kids
> `get` **kids**(): [`Kids`](../namespaces/Clients/classes/Kids.md)
An interface for interacting with YouTube Kids.
#### Returns
[`Kids`](../namespaces/Clients/classes/Kids.md)
#### Defined in
[src/Innertube.ts:581](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/Innertube.ts#L581)
***
### music
> `get` **music**(): [`Music`](../namespaces/Clients/classes/Music.md)
An interface for interacting with YouTube Music.
#### Returns
[`Music`](../namespaces/Clients/classes/Music.md)
#### Defined in
[src/Innertube.ts:567](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/Innertube.ts#L567)
***
### playlist
> `get` **playlist**(): [`PlaylistManager`](../namespaces/Managers/classes/PlaylistManager.md)
An interface for managing playlists.
#### Returns
[`PlaylistManager`](../namespaces/Managers/classes/PlaylistManager.md)
#### Defined in
[src/Innertube.ts:595](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/Innertube.ts#L595)
***
### session
> `get` **session**(): [`Session`](Session.md)
The session used by this instance.
#### Returns
[`Session`](Session.md)
#### Defined in
[src/Innertube.ts:616](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/Innertube.ts#L616)
***
### studio
> `get` **studio**(): [`Studio`](../namespaces/Clients/classes/Studio.md)
An interface for interacting with YouTube Studio.
#### Returns
[`Studio`](../namespaces/Clients/classes/Studio.md)
#### Defined in
[src/Innertube.ts:574](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/Innertube.ts#L574)
## Methods
### call()
#### call(endpoint, args)
> **call**\<`T`\>(`endpoint`, `args`): `Promise`\<`T`\>
Utility method to call an endpoint without having to use [Actions](Actions.md).
##### Type Parameters
**T** *extends* [`IParsedResponse`](../namespaces/APIResponseTypes/interfaces/IParsedResponse.md)
##### Parameters
**endpoint**: [`NavigationEndpoint`](../namespaces/YTNodes/classes/NavigationEndpoint.md)
**args**
**args.parse**: `true`
##### Returns
`Promise`\<`T`\>
##### Defined in
[src/Innertube.ts:558](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/Innertube.ts#L558)
#### call(endpoint, args)
> **call**(`endpoint`, `args`?): `Promise`\<[`ApiResponse`](../interfaces/ApiResponse.md)\>
##### Parameters
**endpoint**: [`NavigationEndpoint`](../namespaces/YTNodes/classes/NavigationEndpoint.md)
**args?**
**args.parse?**: `false`
##### Returns
`Promise`\<[`ApiResponse`](../interfaces/ApiResponse.md)\>
##### Defined in
[src/Innertube.ts:559](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/Innertube.ts#L559)
***
### download()
> **download**(`video_id`, `options`?): `Promise`\<`ReadableStream`\<`Uint8Array`\>\>
Downloads a given video. If all you need the direct download link, see [getStreamingData](Innertube.md#getstreamingdata).
If you wish to retrieve the video info too, have a look at [getBasicInfo](Innertube.md#getbasicinfo) or [getInfo](Innertube.md#getinfo).
#### Parameters
**video\_id**: `string`
The video id.
**options?**: [`DownloadOptions`](../namespaces/Types/interfaces/DownloadOptions.md)
Download options.
#### Returns
`Promise`\<`ReadableStream`\<`Uint8Array`\>\>
#### Defined in
[src/Innertube.ts:448](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/Innertube.ts#L448)
***
### getAttestationChallenge()
> **getAttestationChallenge**(`engagement_type`, `ids`?): `Promise`\<[`IGetChallengeResponse`](../namespaces/APIResponseTypes/type-aliases/IGetChallengeResponse.md)\>
Fetches an attestation challenge.
#### Parameters
**engagement\_type**: [`EngagementType`](../namespaces/Types/type-aliases/EngagementType.md)
**ids?**: `Record`\<`string`, `any`\>[]
#### Returns
`Promise`\<[`IGetChallengeResponse`](../namespaces/APIResponseTypes/type-aliases/IGetChallengeResponse.md)\>
#### Defined in
[src/Innertube.ts:544](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/Innertube.ts#L544)
***
### getBasicInfo()
> **getBasicInfo**(`video_id`, `client`?): `Promise`\<[`VideoInfo`](../namespaces/YT/classes/VideoInfo.md)\>
#### Parameters
**video\_id**: `string`
**client?**: [`InnerTubeClient`](../namespaces/Types/type-aliases/InnerTubeClient.md)
#### Returns
`Promise`\<[`VideoInfo`](../namespaces/YT/classes/VideoInfo.md)\>
#### Defined in
[src/Innertube.ts:116](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/Innertube.ts#L116)
***
### getChannel()
> **getChannel**(`id`): `Promise`\<[`Channel`](../namespaces/YT/classes/Channel.md)\>
#### Parameters
**id**: `string`
#### Returns
`Promise`\<[`Channel`](../namespaces/YT/classes/Channel.md)\>
#### Defined in
[src/Innertube.ts:367](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/Innertube.ts#L367)
***
### getChannelsFeed()
> **getChannelsFeed**(): `Promise`\<[`Feed`](../namespaces/Mixins/classes/Feed.md)\<[`IBrowseResponse`](../namespaces/APIResponseTypes/type-aliases/IBrowseResponse.md)\>\>
#### Returns
`Promise`\<[`Feed`](../namespaces/Mixins/classes/Feed.md)\<[`IBrowseResponse`](../namespaces/APIResponseTypes/type-aliases/IBrowseResponse.md)\>\>
#### Defined in
[src/Innertube.ts:361](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/Innertube.ts#L361)
***
### getComments()
> **getComments**(`video_id`, `sort_by`?, `comment_id`?): `Promise`\<[`Comments`](../namespaces/YT/classes/Comments.md)\>
#### Parameters
**video\_id**: `string`
**sort\_by?**: `"TOP_COMMENTS"` \| `"NEWEST_FIRST"`
**comment\_id?**: `string`
#### Returns
`Promise`\<[`Comments`](../namespaces/YT/classes/Comments.md)\>
#### Defined in
[src/Innertube.ts:282](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/Innertube.ts#L282)
***
### getCourses()
> **getCourses**(): `Promise`\<[`Feed`](../namespaces/Mixins/classes/Feed.md)\<[`IBrowseResponse`](../namespaces/APIResponseTypes/type-aliases/IBrowseResponse.md)\>\>
#### Returns
`Promise`\<[`Feed`](../namespaces/Mixins/classes/Feed.md)\<[`IBrowseResponse`](../namespaces/APIResponseTypes/type-aliases/IBrowseResponse.md)\>\>
#### Defined in
[src/Innertube.ts:349](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/Innertube.ts#L349)
***
### getGuide()
> **getGuide**(): `Promise`\<[`Guide`](../namespaces/YT/classes/Guide.md)\>
#### Returns
`Promise`\<[`Guide`](../namespaces/YT/classes/Guide.md)\>
#### Defined in
[src/Innertube.ts:326](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/Innertube.ts#L326)
***
### getHashtag()
> **getHashtag**(`hashtag`): `Promise`\<[`HashtagFeed`](../namespaces/YT/classes/HashtagFeed.md)\>
#### Parameters
**hashtag**: `string`
#### Returns
`Promise`\<[`HashtagFeed`](../namespaces/YT/classes/HashtagFeed.md)\>
#### Defined in
[src/Innertube.ts:407](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/Innertube.ts#L407)
***
### getHistory()
> **getHistory**(): `Promise`\<[`History`](../namespaces/YT/classes/History.md)\>
#### Returns
`Promise`\<[`History`](../namespaces/YT/classes/History.md)\>
#### Defined in
[src/Innertube.ts:337](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/Innertube.ts#L337)
***
### getHomeFeed()
> **getHomeFeed**(): `Promise`\<[`HomeFeed`](../namespaces/YT/classes/HomeFeed.md)\>
#### Returns
`Promise`\<[`HomeFeed`](../namespaces/YT/classes/HomeFeed.md)\>
#### Defined in
[src/Innertube.ts:320](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/Innertube.ts#L320)
***
### getInfo()
> **getInfo**(`target`, `client`?): `Promise`\<[`VideoInfo`](../namespaces/YT/classes/VideoInfo.md)\>
#### Parameters
**target**: `string` \| [`NavigationEndpoint`](../namespaces/YTNodes/classes/NavigationEndpoint.md)
**client?**: [`InnerTubeClient`](../namespaces/Types/type-aliases/InnerTubeClient.md)
#### Returns
`Promise`\<[`VideoInfo`](../namespaces/YT/classes/VideoInfo.md)\>
#### Defined in
[src/Innertube.ts:73](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/Innertube.ts#L73)
***
### getLibrary()
> **getLibrary**(): `Promise`\<[`Library`](../namespaces/YT/classes/Library.md)\>
#### Returns
`Promise`\<[`Library`](../namespaces/YT/classes/Library.md)\>
#### Defined in
[src/Innertube.ts:331](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/Innertube.ts#L331)
***
### getNotifications()
> **getNotifications**(): `Promise`\<[`NotificationsMenu`](../namespaces/YT/classes/NotificationsMenu.md)\>
#### Returns
`Promise`\<[`NotificationsMenu`](../namespaces/YT/classes/NotificationsMenu.md)\>
#### Defined in
[src/Innertube.ts:374](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/Innertube.ts#L374)
***
### getPlaylist()
> **getPlaylist**(`id`): `Promise`\<[`Playlist`](../namespaces/YT/classes/Playlist.md)\>
#### Parameters
**id**: `string`
#### Returns
`Promise`\<[`Playlist`](../namespaces/YT/classes/Playlist.md)\>
#### Defined in
[src/Innertube.ts:394](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/Innertube.ts#L394)
***
### getPlaylists()
> **getPlaylists**(): `Promise`\<[`Feed`](../namespaces/Mixins/classes/Feed.md)\<[`IBrowseResponse`](../namespaces/APIResponseTypes/type-aliases/IBrowseResponse.md)\>\>
Retrieves the user's playlists.
#### Returns
`Promise`\<[`Feed`](../namespaces/Mixins/classes/Feed.md)\<[`IBrowseResponse`](../namespaces/APIResponseTypes/type-aliases/IBrowseResponse.md)\>\>
#### Defined in
[src/Innertube.ts:388](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/Innertube.ts#L388)
***
### getPost()
> **getPost**(`post_id`, `channel_id`): `Promise`\<[`Feed`](../namespaces/Mixins/classes/Feed.md)\<[`IBrowseResponse`](../namespaces/APIResponseTypes/type-aliases/IBrowseResponse.md)\>\>
Gets a post page given a post id and the channel id
#### Parameters
**post\_id**: `string`
**channel\_id**: `string`
#### Returns
`Promise`\<[`Feed`](../namespaces/Mixins/classes/Feed.md)\<[`IBrowseResponse`](../namespaces/APIResponseTypes/type-aliases/IBrowseResponse.md)\>\>
#### Defined in
[src/Innertube.ts:468](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/Innertube.ts#L468)
***
### getPostComments()
> **getPostComments**(`post_id`, `channel_id`, `sort_by`?): `Promise`\<[`Comments`](../namespaces/YT/classes/Comments.md)\>
Gets the comments of a post.
#### Parameters
**post\_id**: `string`
**channel\_id**: `string`
**sort\_by?**: `"TOP_COMMENTS"` \| `"NEWEST_FIRST"`
#### Returns
`Promise`\<[`Comments`](../namespaces/YT/classes/Comments.md)\>
#### Defined in
[src/Innertube.ts:492](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/Innertube.ts#L492)
***
### getSearchSuggestions()
> **getSearchSuggestions**(`query`, `previous_query`?): `Promise`\<`string`[]\>
#### Parameters
**query**: `string`
**previous\_query?**: `string`
#### Returns
`Promise`\<`string`[]\>
#### Defined in
[src/Innertube.ts:255](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/Innertube.ts#L255)
***
### getShortsVideoInfo()
> **getShortsVideoInfo**(`video_id`, `client`?): `Promise`\<[`ShortFormVideoInfo`](../namespaces/YTShorts/classes/ShortFormVideoInfo.md)\>
#### Parameters
**video\_id**: `string`
**client?**: [`InnerTubeClient`](../namespaces/Types/type-aliases/InnerTubeClient.md)
#### Returns
`Promise`\<[`ShortFormVideoInfo`](../namespaces/YTShorts/classes/ShortFormVideoInfo.md)\>
#### Defined in
[src/Innertube.ts:146](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/Innertube.ts#L146)
***
### getStreamingData()
> **getStreamingData**(`video_id`, `options`): `Promise`\<[`Format`](../namespaces/Misc/classes/Format.md)\>
An alternative to [download](Innertube.md#download).
Returns deciphered streaming data.
If you wish to retrieve the video info too, have a look at [getBasicInfo](Innertube.md#getbasicinfo) or [getInfo](Innertube.md#getinfo).
#### Parameters
**video\_id**: `string`
The video id.
**options**: [`FormatOptions`](../namespaces/Types/interfaces/FormatOptions.md) = `{}`
Format options.
#### Returns
`Promise`\<[`Format`](../namespaces/Misc/classes/Format.md)\>
#### Defined in
[src/Innertube.ts:433](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/Innertube.ts#L433)
***
### getSubscriptionsFeed()
> **getSubscriptionsFeed**(): `Promise`\<[`Feed`](../namespaces/Mixins/classes/Feed.md)\<[`IBrowseResponse`](../namespaces/APIResponseTypes/type-aliases/IBrowseResponse.md)\>\>
#### Returns
`Promise`\<[`Feed`](../namespaces/Mixins/classes/Feed.md)\<[`IBrowseResponse`](../namespaces/APIResponseTypes/type-aliases/IBrowseResponse.md)\>\>
#### Defined in
[src/Innertube.ts:355](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/Innertube.ts#L355)
***
### getTrending()
> **getTrending**(): `Promise`\<[`TabbedFeed`](../namespaces/Mixins/classes/TabbedFeed.md)\<[`IBrowseResponse`](../namespaces/APIResponseTypes/type-aliases/IBrowseResponse.md)\>\>
#### Returns
`Promise`\<[`TabbedFeed`](../namespaces/Mixins/classes/TabbedFeed.md)\<[`IBrowseResponse`](../namespaces/APIResponseTypes/type-aliases/IBrowseResponse.md)\>\>
#### Defined in
[src/Innertube.ts:343](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/Innertube.ts#L343)
***
### getUnseenNotificationsCount()
> **getUnseenNotificationsCount**(): `Promise`\<`number`\>
#### Returns
`Promise`\<`number`\>
#### Defined in
[src/Innertube.ts:379](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/Innertube.ts#L379)
***
### resolveURL()
> **resolveURL**(`url`): `Promise`\<[`NavigationEndpoint`](../namespaces/YTNodes/classes/NavigationEndpoint.md)\>
Resolves the given URL.
#### Parameters
**url**: `string`
#### Returns
`Promise`\<[`NavigationEndpoint`](../namespaces/YTNodes/classes/NavigationEndpoint.md)\>
#### Defined in
[src/Innertube.ts:456](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/Innertube.ts#L456)
***
### search()
> **search**(`query`, `filters`): `Promise`\<[`Search`](../namespaces/YT/classes/Search.md)\>
#### Parameters
**query**: `string`
**filters**: [`SearchFilters`](../namespaces/Types/type-aliases/SearchFilters.md) = `{}`
#### Returns
`Promise`\<[`Search`](../namespaces/YT/classes/Search.md)\>
#### Defined in
[src/Innertube.ts:179](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/Innertube.ts#L179)
***
### create()
> `static` **create**(`config`): `Promise`\<[`Innertube`](Innertube.md)\>
#### Parameters
**config**: [`SessionOptions`](../type-aliases/SessionOptions.md) = `{}`
#### Returns
`Promise`\<[`Innertube`](Innertube.md)\>
#### Defined in
[src/Innertube.ts:69](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/Innertube.ts#L69)

View File

@@ -0,0 +1,221 @@
[youtubei.js](../README.md) / ItemSectionContinuation
# Class: ItemSectionContinuation
## Extends
- [`YTNode`](../namespaces/Helpers/classes/YTNode.md)
## Constructors
### new ItemSectionContinuation()
> **new ItemSectionContinuation**(`data`): [`ItemSectionContinuation`](ItemSectionContinuation.md)
#### Parameters
**data**: [`RawNode`](../namespaces/APIResponseTypes/type-aliases/RawNode.md)
#### Returns
[`ItemSectionContinuation`](ItemSectionContinuation.md)
#### Overrides
[`YTNode`](../namespaces/Helpers/classes/YTNode.md).[`constructor`](../namespaces/Helpers/classes/YTNode.md#constructors)
#### Defined in
[src/parser/continuations.ts:15](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/continuations.ts#L15)
## Properties
### contents
> **contents**: `null` \| [`ObservedArray`](../namespaces/Helpers/type-aliases/ObservedArray.md)\<[`YTNode`](../namespaces/Helpers/classes/YTNode.md)\>
#### Defined in
[src/parser/continuations.ts:12](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/continuations.ts#L12)
***
### continuation?
> `optional` **continuation**: `string`
#### Defined in
[src/parser/continuations.ts:13](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/continuations.ts#L13)
***
### type
> `readonly` **type**: `string`
#### Inherited from
[`YTNode`](../namespaces/Helpers/classes/YTNode.md).[`type`](../namespaces/Helpers/classes/YTNode.md#type)
#### Defined in
[src/parser/helpers.ts:8](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/helpers.ts#L8)
***
### type
> `readonly` `static` **type**: `"itemSectionContinuation"` = `'itemSectionContinuation'`
#### Overrides
[`YTNode`](../namespaces/Helpers/classes/YTNode.md).[`type`](../namespaces/Helpers/classes/YTNode.md#type-1)
#### Defined in
[src/parser/continuations.ts:10](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/continuations.ts#L10)
## Methods
### as()
> **as**\<`T`, `K`\>(...`types`): `InstanceType`\<`K`\[`number`\]\>
Cast to one of the given types.
#### Type Parameters
**T** *extends* [`YTNode`](../namespaces/Helpers/classes/YTNode.md)
**K** *extends* [`YTNodeConstructor`](../namespaces/Helpers/interfaces/YTNodeConstructor.md)\<`T`\>[]
#### Parameters
• ...**types**: `K`
The types to cast to
#### Returns
`InstanceType`\<`K`\[`number`\]\>
The node cast to one of the given types
#### Throws
If the node is not of the given type
#### Inherited from
[`YTNode`](../namespaces/Helpers/classes/YTNode.md).[`as`](../namespaces/Helpers/classes/YTNode.md#as)
#### Defined in
[src/parser/helpers.ts:38](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/helpers.ts#L38)
***
### hasKey()
> **hasKey**\<`T`, `R`\>(`key`): `this is ItemSectionContinuation & { [k in string]: R }`
Check for a key without asserting the type.
#### Type Parameters
**T** *extends* `string`
**R** = `any`
#### Parameters
**key**: `T`
The key to check
#### Returns
`this is ItemSectionContinuation & { [k in string]: R }`
Whether the node has the key
#### Inherited from
[`YTNode`](../namespaces/Helpers/classes/YTNode.md).[`hasKey`](../namespaces/Helpers/classes/YTNode.md#haskey)
#### Defined in
[src/parser/helpers.ts:50](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/helpers.ts#L50)
***
### is()
> **is**\<`T`, `K`\>(...`types`): `this is InstanceType<K[number]>`
Check if the node is of the given type.
#### Type Parameters
**T** *extends* [`YTNode`](../namespaces/Helpers/classes/YTNode.md)
**K** *extends* [`YTNodeConstructor`](../namespaces/Helpers/interfaces/YTNodeConstructor.md)\<`T`\>[]
#### Parameters
• ...**types**: `K`
The type to check
#### Returns
`this is InstanceType<K[number]>`
whether the node is of the given type
#### Inherited from
[`YTNode`](../namespaces/Helpers/classes/YTNode.md).[`is`](../namespaces/Helpers/classes/YTNode.md#is)
#### Defined in
[src/parser/helpers.ts:28](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/helpers.ts#L28)
***
### key()
> **key**\<`T`, `R`\>(`key`): [`Maybe`](../namespaces/Helpers/classes/Maybe.md)
Assert that the node has the given key and return it.
#### Type Parameters
**T** *extends* `string`
**R** = `any`
#### Parameters
**key**: `T`
The key to check
#### Returns
[`Maybe`](../namespaces/Helpers/classes/Maybe.md)
The value of the key wrapped in a Maybe
#### Throws
If the node does not have the key
#### Inherited from
[`YTNode`](../namespaces/Helpers/classes/YTNode.md).[`key`](../namespaces/Helpers/classes/YTNode.md#key)
#### Defined in
[src/parser/helpers.ts:60](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/helpers.ts#L60)

View File

@@ -0,0 +1,291 @@
[youtubei.js](../README.md) / LiveChatContinuation
# Class: LiveChatContinuation
## Extends
- [`YTNode`](../namespaces/Helpers/classes/YTNode.md)
## Constructors
### new LiveChatContinuation()
> **new LiveChatContinuation**(`data`): [`LiveChatContinuation`](LiveChatContinuation.md)
#### Parameters
**data**: [`RawNode`](../namespaces/APIResponseTypes/type-aliases/RawNode.md)
#### Returns
[`LiveChatContinuation`](LiveChatContinuation.md)
#### Overrides
[`YTNode`](../namespaces/Helpers/classes/YTNode.md).[`constructor`](../namespaces/Helpers/classes/YTNode.md#constructors)
#### Defined in
[src/parser/continuations.ts:174](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/continuations.ts#L174)
## Properties
### action\_panel
> **action\_panel**: `null` \| [`YTNode`](../namespaces/Helpers/classes/YTNode.md)
#### Defined in
[src/parser/continuations.ts:160](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/continuations.ts#L160)
***
### actions
> **actions**: [`ObservedArray`](../namespaces/Helpers/type-aliases/ObservedArray.md)\<[`YTNode`](../namespaces/Helpers/classes/YTNode.md)\>
#### Defined in
[src/parser/continuations.ts:159](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/continuations.ts#L159)
***
### continuation
> **continuation**: [`Continuation`](Continuation.md)
#### Defined in
[src/parser/continuations.ts:171](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/continuations.ts#L171)
***
### emojis
> **emojis**: `object`[]
#### Defined in
[src/parser/continuations.ts:165](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/continuations.ts#L165)
***
### header
> **header**: `null` \| [`LiveChatHeader`](../namespaces/YTNodes/classes/LiveChatHeader.md)
#### Defined in
[src/parser/continuations.ts:162](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/continuations.ts#L162)
***
### item\_list
> **item\_list**: `null` \| [`LiveChatItemList`](../namespaces/YTNodes/classes/LiveChatItemList.md)
#### Defined in
[src/parser/continuations.ts:161](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/continuations.ts#L161)
***
### participants\_list
> **participants\_list**: `null` \| [`LiveChatParticipantsList`](../namespaces/YTNodes/classes/LiveChatParticipantsList.md)
#### Defined in
[src/parser/continuations.ts:163](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/continuations.ts#L163)
***
### popout\_message
> **popout\_message**: `null` \| [`Message`](../namespaces/YTNodes/classes/Message.md)
#### Defined in
[src/parser/continuations.ts:164](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/continuations.ts#L164)
***
### type
> `readonly` **type**: `string`
#### Inherited from
[`YTNode`](../namespaces/Helpers/classes/YTNode.md).[`type`](../namespaces/Helpers/classes/YTNode.md#type)
#### Defined in
[src/parser/helpers.ts:8](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/helpers.ts#L8)
***
### viewer\_name
> **viewer\_name**: `string`
#### Defined in
[src/parser/continuations.ts:172](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/continuations.ts#L172)
***
### type
> `readonly` `static` **type**: `"liveChatContinuation"` = `'liveChatContinuation'`
#### Overrides
[`YTNode`](../namespaces/Helpers/classes/YTNode.md).[`type`](../namespaces/Helpers/classes/YTNode.md#type-1)
#### Defined in
[src/parser/continuations.ts:157](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/continuations.ts#L157)
## Methods
### as()
> **as**\<`T`, `K`\>(...`types`): `InstanceType`\<`K`\[`number`\]\>
Cast to one of the given types.
#### Type Parameters
**T** *extends* [`YTNode`](../namespaces/Helpers/classes/YTNode.md)
**K** *extends* [`YTNodeConstructor`](../namespaces/Helpers/interfaces/YTNodeConstructor.md)\<`T`\>[]
#### Parameters
• ...**types**: `K`
The types to cast to
#### Returns
`InstanceType`\<`K`\[`number`\]\>
The node cast to one of the given types
#### Throws
If the node is not of the given type
#### Inherited from
[`YTNode`](../namespaces/Helpers/classes/YTNode.md).[`as`](../namespaces/Helpers/classes/YTNode.md#as)
#### Defined in
[src/parser/helpers.ts:38](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/helpers.ts#L38)
***
### hasKey()
> **hasKey**\<`T`, `R`\>(`key`): `this is LiveChatContinuation & { [k in string]: R }`
Check for a key without asserting the type.
#### Type Parameters
**T** *extends* `string`
**R** = `any`
#### Parameters
**key**: `T`
The key to check
#### Returns
`this is LiveChatContinuation & { [k in string]: R }`
Whether the node has the key
#### Inherited from
[`YTNode`](../namespaces/Helpers/classes/YTNode.md).[`hasKey`](../namespaces/Helpers/classes/YTNode.md#haskey)
#### Defined in
[src/parser/helpers.ts:50](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/helpers.ts#L50)
***
### is()
> **is**\<`T`, `K`\>(...`types`): `this is InstanceType<K[number]>`
Check if the node is of the given type.
#### Type Parameters
**T** *extends* [`YTNode`](../namespaces/Helpers/classes/YTNode.md)
**K** *extends* [`YTNodeConstructor`](../namespaces/Helpers/interfaces/YTNodeConstructor.md)\<`T`\>[]
#### Parameters
• ...**types**: `K`
The type to check
#### Returns
`this is InstanceType<K[number]>`
whether the node is of the given type
#### Inherited from
[`YTNode`](../namespaces/Helpers/classes/YTNode.md).[`is`](../namespaces/Helpers/classes/YTNode.md#is)
#### Defined in
[src/parser/helpers.ts:28](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/helpers.ts#L28)
***
### key()
> **key**\<`T`, `R`\>(`key`): [`Maybe`](../namespaces/Helpers/classes/Maybe.md)
Assert that the node has the given key and return it.
#### Type Parameters
**T** *extends* `string`
**R** = `any`
#### Parameters
**key**: `T`
The key to check
#### Returns
[`Maybe`](../namespaces/Helpers/classes/Maybe.md)
The value of the key wrapped in a Maybe
#### Throws
If the node does not have the key
#### Inherited from
[`YTNode`](../namespaces/Helpers/classes/YTNode.md).[`key`](../namespaces/Helpers/classes/YTNode.md#key)
#### Defined in
[src/parser/helpers.ts:60](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/helpers.ts#L60)

View File

@@ -0,0 +1,221 @@
[youtubei.js](../README.md) / MusicPlaylistShelfContinuation
# Class: MusicPlaylistShelfContinuation
## Extends
- [`YTNode`](../namespaces/Helpers/classes/YTNode.md)
## Constructors
### new MusicPlaylistShelfContinuation()
> **new MusicPlaylistShelfContinuation**(`data`): [`MusicPlaylistShelfContinuation`](MusicPlaylistShelfContinuation.md)
#### Parameters
**data**: [`RawNode`](../namespaces/APIResponseTypes/type-aliases/RawNode.md)
#### Returns
[`MusicPlaylistShelfContinuation`](MusicPlaylistShelfContinuation.md)
#### Overrides
[`YTNode`](../namespaces/Helpers/classes/YTNode.md).[`constructor`](../namespaces/Helpers/classes/YTNode.md#constructors)
#### Defined in
[src/parser/continuations.ts:86](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/continuations.ts#L86)
## Properties
### contents
> **contents**: `null` \| [`ObservedArray`](../namespaces/Helpers/type-aliases/ObservedArray.md)\<[`YTNode`](../namespaces/Helpers/classes/YTNode.md)\>
#### Defined in
[src/parser/continuations.ts:84](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/continuations.ts#L84)
***
### continuation
> **continuation**: `string`
#### Defined in
[src/parser/continuations.ts:83](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/continuations.ts#L83)
***
### type
> `readonly` **type**: `string`
#### Inherited from
[`YTNode`](../namespaces/Helpers/classes/YTNode.md).[`type`](../namespaces/Helpers/classes/YTNode.md#type)
#### Defined in
[src/parser/helpers.ts:8](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/helpers.ts#L8)
***
### type
> `readonly` `static` **type**: `"musicPlaylistShelfContinuation"` = `'musicPlaylistShelfContinuation'`
#### Overrides
[`YTNode`](../namespaces/Helpers/classes/YTNode.md).[`type`](../namespaces/Helpers/classes/YTNode.md#type-1)
#### Defined in
[src/parser/continuations.ts:81](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/continuations.ts#L81)
## Methods
### as()
> **as**\<`T`, `K`\>(...`types`): `InstanceType`\<`K`\[`number`\]\>
Cast to one of the given types.
#### Type Parameters
**T** *extends* [`YTNode`](../namespaces/Helpers/classes/YTNode.md)
**K** *extends* [`YTNodeConstructor`](../namespaces/Helpers/interfaces/YTNodeConstructor.md)\<`T`\>[]
#### Parameters
• ...**types**: `K`
The types to cast to
#### Returns
`InstanceType`\<`K`\[`number`\]\>
The node cast to one of the given types
#### Throws
If the node is not of the given type
#### Inherited from
[`YTNode`](../namespaces/Helpers/classes/YTNode.md).[`as`](../namespaces/Helpers/classes/YTNode.md#as)
#### Defined in
[src/parser/helpers.ts:38](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/helpers.ts#L38)
***
### hasKey()
> **hasKey**\<`T`, `R`\>(`key`): `this is MusicPlaylistShelfContinuation & { [k in string]: R }`
Check for a key without asserting the type.
#### Type Parameters
**T** *extends* `string`
**R** = `any`
#### Parameters
**key**: `T`
The key to check
#### Returns
`this is MusicPlaylistShelfContinuation & { [k in string]: R }`
Whether the node has the key
#### Inherited from
[`YTNode`](../namespaces/Helpers/classes/YTNode.md).[`hasKey`](../namespaces/Helpers/classes/YTNode.md#haskey)
#### Defined in
[src/parser/helpers.ts:50](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/helpers.ts#L50)
***
### is()
> **is**\<`T`, `K`\>(...`types`): `this is InstanceType<K[number]>`
Check if the node is of the given type.
#### Type Parameters
**T** *extends* [`YTNode`](../namespaces/Helpers/classes/YTNode.md)
**K** *extends* [`YTNodeConstructor`](../namespaces/Helpers/interfaces/YTNodeConstructor.md)\<`T`\>[]
#### Parameters
• ...**types**: `K`
The type to check
#### Returns
`this is InstanceType<K[number]>`
whether the node is of the given type
#### Inherited from
[`YTNode`](../namespaces/Helpers/classes/YTNode.md).[`is`](../namespaces/Helpers/classes/YTNode.md#is)
#### Defined in
[src/parser/helpers.ts:28](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/helpers.ts#L28)
***
### key()
> **key**\<`T`, `R`\>(`key`): [`Maybe`](../namespaces/Helpers/classes/Maybe.md)
Assert that the node has the given key and return it.
#### Type Parameters
**T** *extends* `string`
**R** = `any`
#### Parameters
**key**: `T`
The key to check
#### Returns
[`Maybe`](../namespaces/Helpers/classes/Maybe.md)
The value of the key wrapped in a Maybe
#### Throws
If the node does not have the key
#### Inherited from
[`YTNode`](../namespaces/Helpers/classes/YTNode.md).[`key`](../namespaces/Helpers/classes/YTNode.md#key)
#### Defined in
[src/parser/helpers.ts:60](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/helpers.ts#L60)

View File

@@ -0,0 +1,221 @@
[youtubei.js](../README.md) / MusicShelfContinuation
# Class: MusicShelfContinuation
## Extends
- [`YTNode`](../namespaces/Helpers/classes/YTNode.md)
## Constructors
### new MusicShelfContinuation()
> **new MusicShelfContinuation**(`data`): [`MusicShelfContinuation`](MusicShelfContinuation.md)
#### Parameters
**data**: [`RawNode`](../namespaces/APIResponseTypes/type-aliases/RawNode.md)
#### Returns
[`MusicShelfContinuation`](MusicShelfContinuation.md)
#### Overrides
[`YTNode`](../namespaces/Helpers/classes/YTNode.md).[`constructor`](../namespaces/Helpers/classes/YTNode.md#constructors)
#### Defined in
[src/parser/continuations.ts:99](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/continuations.ts#L99)
## Properties
### contents
> **contents**: `null` \| [`ObservedArray`](../namespaces/Helpers/type-aliases/ObservedArray.md)\<[`YTNode`](../namespaces/Helpers/classes/YTNode.md)\>
#### Defined in
[src/parser/continuations.ts:97](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/continuations.ts#L97)
***
### continuation
> **continuation**: `string`
#### Defined in
[src/parser/continuations.ts:96](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/continuations.ts#L96)
***
### type
> `readonly` **type**: `string`
#### Inherited from
[`YTNode`](../namespaces/Helpers/classes/YTNode.md).[`type`](../namespaces/Helpers/classes/YTNode.md#type)
#### Defined in
[src/parser/helpers.ts:8](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/helpers.ts#L8)
***
### type
> `readonly` `static` **type**: `"musicShelfContinuation"` = `'musicShelfContinuation'`
#### Overrides
[`YTNode`](../namespaces/Helpers/classes/YTNode.md).[`type`](../namespaces/Helpers/classes/YTNode.md#type-1)
#### Defined in
[src/parser/continuations.ts:94](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/continuations.ts#L94)
## Methods
### as()
> **as**\<`T`, `K`\>(...`types`): `InstanceType`\<`K`\[`number`\]\>
Cast to one of the given types.
#### Type Parameters
**T** *extends* [`YTNode`](../namespaces/Helpers/classes/YTNode.md)
**K** *extends* [`YTNodeConstructor`](../namespaces/Helpers/interfaces/YTNodeConstructor.md)\<`T`\>[]
#### Parameters
• ...**types**: `K`
The types to cast to
#### Returns
`InstanceType`\<`K`\[`number`\]\>
The node cast to one of the given types
#### Throws
If the node is not of the given type
#### Inherited from
[`YTNode`](../namespaces/Helpers/classes/YTNode.md).[`as`](../namespaces/Helpers/classes/YTNode.md#as)
#### Defined in
[src/parser/helpers.ts:38](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/helpers.ts#L38)
***
### hasKey()
> **hasKey**\<`T`, `R`\>(`key`): `this is MusicShelfContinuation & { [k in string]: R }`
Check for a key without asserting the type.
#### Type Parameters
**T** *extends* `string`
**R** = `any`
#### Parameters
**key**: `T`
The key to check
#### Returns
`this is MusicShelfContinuation & { [k in string]: R }`
Whether the node has the key
#### Inherited from
[`YTNode`](../namespaces/Helpers/classes/YTNode.md).[`hasKey`](../namespaces/Helpers/classes/YTNode.md#haskey)
#### Defined in
[src/parser/helpers.ts:50](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/helpers.ts#L50)
***
### is()
> **is**\<`T`, `K`\>(...`types`): `this is InstanceType<K[number]>`
Check if the node is of the given type.
#### Type Parameters
**T** *extends* [`YTNode`](../namespaces/Helpers/classes/YTNode.md)
**K** *extends* [`YTNodeConstructor`](../namespaces/Helpers/interfaces/YTNodeConstructor.md)\<`T`\>[]
#### Parameters
• ...**types**: `K`
The type to check
#### Returns
`this is InstanceType<K[number]>`
whether the node is of the given type
#### Inherited from
[`YTNode`](../namespaces/Helpers/classes/YTNode.md).[`is`](../namespaces/Helpers/classes/YTNode.md#is)
#### Defined in
[src/parser/helpers.ts:28](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/helpers.ts#L28)
***
### key()
> **key**\<`T`, `R`\>(`key`): [`Maybe`](../namespaces/Helpers/classes/Maybe.md)
Assert that the node has the given key and return it.
#### Type Parameters
**T** *extends* `string`
**R** = `any`
#### Parameters
**key**: `T`
The key to check
#### Returns
[`Maybe`](../namespaces/Helpers/classes/Maybe.md)
The value of the key wrapped in a Maybe
#### Throws
If the node does not have the key
#### Inherited from
[`YTNode`](../namespaces/Helpers/classes/YTNode.md).[`key`](../namespaces/Helpers/classes/YTNode.md#key)
#### Defined in
[src/parser/helpers.ts:60](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/helpers.ts#L60)

View File

@@ -0,0 +1,211 @@
[youtubei.js](../README.md) / NavigateAction
# Class: NavigateAction
## Extends
- [`YTNode`](../namespaces/Helpers/classes/YTNode.md)
## Constructors
### new NavigateAction()
> **new NavigateAction**(`data`): [`NavigateAction`](NavigateAction.md)
#### Parameters
**data**: [`RawNode`](../namespaces/APIResponseTypes/type-aliases/RawNode.md)
#### Returns
[`NavigateAction`](NavigateAction.md)
#### Overrides
[`YTNode`](../namespaces/Helpers/classes/YTNode.md).[`constructor`](../namespaces/Helpers/classes/YTNode.md#constructors)
#### Defined in
[src/parser/continuations.ts:29](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/continuations.ts#L29)
## Properties
### endpoint
> **endpoint**: [`NavigationEndpoint`](../namespaces/YTNodes/classes/NavigationEndpoint.md)
#### Defined in
[src/parser/continuations.ts:27](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/continuations.ts#L27)
***
### type
> `readonly` **type**: `string`
#### Inherited from
[`YTNode`](../namespaces/Helpers/classes/YTNode.md).[`type`](../namespaces/Helpers/classes/YTNode.md#type)
#### Defined in
[src/parser/helpers.ts:8](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/helpers.ts#L8)
***
### type
> `readonly` `static` **type**: `"navigateAction"` = `'navigateAction'`
#### Overrides
[`YTNode`](../namespaces/Helpers/classes/YTNode.md).[`type`](../namespaces/Helpers/classes/YTNode.md#type-1)
#### Defined in
[src/parser/continuations.ts:25](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/continuations.ts#L25)
## Methods
### as()
> **as**\<`T`, `K`\>(...`types`): `InstanceType`\<`K`\[`number`\]\>
Cast to one of the given types.
#### Type Parameters
**T** *extends* [`YTNode`](../namespaces/Helpers/classes/YTNode.md)
**K** *extends* [`YTNodeConstructor`](../namespaces/Helpers/interfaces/YTNodeConstructor.md)\<`T`\>[]
#### Parameters
• ...**types**: `K`
The types to cast to
#### Returns
`InstanceType`\<`K`\[`number`\]\>
The node cast to one of the given types
#### Throws
If the node is not of the given type
#### Inherited from
[`YTNode`](../namespaces/Helpers/classes/YTNode.md).[`as`](../namespaces/Helpers/classes/YTNode.md#as)
#### Defined in
[src/parser/helpers.ts:38](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/helpers.ts#L38)
***
### hasKey()
> **hasKey**\<`T`, `R`\>(`key`): `this is NavigateAction & { [k in string]: R }`
Check for a key without asserting the type.
#### Type Parameters
**T** *extends* `string`
**R** = `any`
#### Parameters
**key**: `T`
The key to check
#### Returns
`this is NavigateAction & { [k in string]: R }`
Whether the node has the key
#### Inherited from
[`YTNode`](../namespaces/Helpers/classes/YTNode.md).[`hasKey`](../namespaces/Helpers/classes/YTNode.md#haskey)
#### Defined in
[src/parser/helpers.ts:50](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/helpers.ts#L50)
***
### is()
> **is**\<`T`, `K`\>(...`types`): `this is InstanceType<K[number]>`
Check if the node is of the given type.
#### Type Parameters
**T** *extends* [`YTNode`](../namespaces/Helpers/classes/YTNode.md)
**K** *extends* [`YTNodeConstructor`](../namespaces/Helpers/interfaces/YTNodeConstructor.md)\<`T`\>[]
#### Parameters
• ...**types**: `K`
The type to check
#### Returns
`this is InstanceType<K[number]>`
whether the node is of the given type
#### Inherited from
[`YTNode`](../namespaces/Helpers/classes/YTNode.md).[`is`](../namespaces/Helpers/classes/YTNode.md#is)
#### Defined in
[src/parser/helpers.ts:28](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/helpers.ts#L28)
***
### key()
> **key**\<`T`, `R`\>(`key`): [`Maybe`](../namespaces/Helpers/classes/Maybe.md)
Assert that the node has the given key and return it.
#### Type Parameters
**T** *extends* `string`
**R** = `any`
#### Parameters
**key**: `T`
The key to check
#### Returns
[`Maybe`](../namespaces/Helpers/classes/Maybe.md)
The value of the key wrapped in a Maybe
#### Throws
If the node does not have the key
#### Inherited from
[`YTNode`](../namespaces/Helpers/classes/YTNode.md).[`key`](../namespaces/Helpers/classes/YTNode.md#key)
#### Defined in
[src/parser/helpers.ts:60](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/helpers.ts#L60)

251
docs/api/classes/OAuth2.md Normal file
View File

@@ -0,0 +1,251 @@
[youtubei.js](../README.md) / OAuth2
# Class: OAuth2
## Constructors
### new OAuth2()
> **new OAuth2**(`session`): [`OAuth2`](OAuth2.md)
#### Parameters
**session**: [`Session`](Session.md)
#### Returns
[`OAuth2`](OAuth2.md)
#### Defined in
[src/core/OAuth2.ts:46](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/core/OAuth2.ts#L46)
## Properties
### AUTH\_SERVER\_CODE\_URL
> **AUTH\_SERVER\_CODE\_URL**: `URL`
#### Defined in
[src/core/OAuth2.ts:39](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/core/OAuth2.ts#L39)
***
### AUTH\_SERVER\_REVOKE\_TOKEN\_URL
> **AUTH\_SERVER\_REVOKE\_TOKEN\_URL**: `URL`
#### Defined in
[src/core/OAuth2.ts:41](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/core/OAuth2.ts#L41)
***
### AUTH\_SERVER\_TOKEN\_URL
> **AUTH\_SERVER\_TOKEN\_URL**: `URL`
#### Defined in
[src/core/OAuth2.ts:40](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/core/OAuth2.ts#L40)
***
### client\_id
> **client\_id**: `undefined` \| [`OAuth2ClientID`](../type-aliases/OAuth2ClientID.md)
#### Defined in
[src/core/OAuth2.ts:43](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/core/OAuth2.ts#L43)
***
### oauth2\_tokens
> **oauth2\_tokens**: `undefined` \| [`OAuth2Tokens`](../type-aliases/OAuth2Tokens.md)
#### Defined in
[src/core/OAuth2.ts:44](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/core/OAuth2.ts#L44)
***
### YTTV\_URL
> **YTTV\_URL**: `URL`
#### Defined in
[src/core/OAuth2.ts:38](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/core/OAuth2.ts#L38)
## Methods
### cacheCredentials()
> **cacheCredentials**(): `Promise`\<`void`\>
#### Returns
`Promise`\<`void`\>
#### Defined in
[src/core/OAuth2.ts:105](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/core/OAuth2.ts#L105)
***
### getClientID()
> **getClientID**(): `Promise`\<[`OAuth2ClientID`](../type-aliases/OAuth2ClientID.md)\>
#### Returns
`Promise`\<[`OAuth2ClientID`](../type-aliases/OAuth2ClientID.md)\>
#### Defined in
[src/core/OAuth2.ts:268](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/core/OAuth2.ts#L268)
***
### getDeviceAndUserCode()
> **getDeviceAndUserCode**(): `Promise`\<[`DeviceAndUserCode`](../type-aliases/DeviceAndUserCode.md)\>
#### Returns
`Promise`\<[`DeviceAndUserCode`](../type-aliases/DeviceAndUserCode.md)\>
#### Defined in
[src/core/OAuth2.ts:236](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/core/OAuth2.ts#L236)
***
### init()
> **init**(`tokens`?): `Promise`\<`void`\>
#### Parameters
**tokens?**: [`OAuth2Tokens`](../type-aliases/OAuth2Tokens.md)
#### Returns
`Promise`\<`void`\>
#### Defined in
[src/core/OAuth2.ts:54](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/core/OAuth2.ts#L54)
***
### pollForAccessToken()
> **pollForAccessToken**(`device_and_user_code`): `void`
#### Parameters
**device\_and\_user\_code**: [`DeviceAndUserCode`](../type-aliases/DeviceAndUserCode.md)
#### Returns
`void`
#### Defined in
[src/core/OAuth2.ts:130](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/core/OAuth2.ts#L130)
***
### refreshAccessToken()
> **refreshAccessToken**(): `Promise`\<`void`\>
#### Returns
`Promise`\<`void`\>
#### Defined in
[src/core/OAuth2.ts:197](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/core/OAuth2.ts#L197)
***
### removeCache()
> **removeCache**(): `Promise`\<`void`\>
#### Returns
`Promise`\<`void`\>
#### Defined in
[src/core/OAuth2.ts:126](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/core/OAuth2.ts#L126)
***
### revokeCredentials()
> **revokeCredentials**(): `Promise`\<`undefined` \| `Response`\>
#### Returns
`Promise`\<`undefined` \| `Response`\>
#### Defined in
[src/core/OAuth2.ts:185](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/core/OAuth2.ts#L185)
***
### setTokens()
> **setTokens**(`tokens`): `void`
#### Parameters
**tokens**: [`OAuth2Tokens`](../type-aliases/OAuth2Tokens.md)
#### Returns
`void`
#### Defined in
[src/core/OAuth2.ts:85](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/core/OAuth2.ts#L85)
***
### shouldRefreshToken()
> **shouldRefreshToken**(): `boolean`
#### Returns
`boolean`
#### Defined in
[src/core/OAuth2.ts:313](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/core/OAuth2.ts#L313)
***
### validateTokens()
> **validateTokens**(`tokens`): `boolean`
#### Parameters
**tokens**: [`OAuth2Tokens`](../type-aliases/OAuth2Tokens.md)
#### Returns
`boolean`
#### Defined in
[src/core/OAuth2.ts:319](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/core/OAuth2.ts#L319)

View File

@@ -0,0 +1,45 @@
[youtubei.js](../README.md) / Platform
# Class: Platform
## Constructors
### new Platform()
> **new Platform**(): [`Platform`](Platform.md)
#### Returns
[`Platform`](Platform.md)
## Accessors
### shim
> `get` `static` **shim**(): [`PlatformShim`](../namespaces/Types/interfaces/PlatformShim.md)
#### Returns
[`PlatformShim`](../namespaces/Types/interfaces/PlatformShim.md)
#### Defined in
[src/utils/Utils.ts:19](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/utils/Utils.ts#L19)
## Methods
### load()
> `static` **load**(`platform`): `void`
#### Parameters
**platform**: [`PlatformShim`](../namespaces/Types/interfaces/PlatformShim.md)
#### Returns
`void`
#### Defined in
[src/utils/Utils.ts:16](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/utils/Utils.ts#L16)

271
docs/api/classes/Player.md Normal file
View File

@@ -0,0 +1,271 @@
[youtubei.js](../README.md) / Player
# Class: Player
Represents YouTube's player script. This is required to decipher signatures.
## Constructors
### new Player()
> **new Player**(`player_id`, `signature_timestamp`, `sig_sc`?, `nsig_sc`?): [`Player`](Player.md)
#### Parameters
**player\_id**: `string`
**signature\_timestamp**: `number`
**sig\_sc?**: `string`
**nsig\_sc?**: `string`
#### Returns
[`Player`](Player.md)
#### Defined in
[src/core/Player.ts:17](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/core/Player.ts#L17)
## Properties
### nsig\_sc?
> `optional` **nsig\_sc**: `string`
#### Defined in
[src/core/Player.ts:13](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/core/Player.ts#L13)
***
### player\_id
> **player\_id**: `string`
#### Defined in
[src/core/Player.ts:11](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/core/Player.ts#L11)
***
### po\_token?
> `optional` **po\_token**: `string`
#### Defined in
[src/core/Player.ts:15](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/core/Player.ts#L15)
***
### sig\_sc?
> `optional` **sig\_sc**: `string`
#### Defined in
[src/core/Player.ts:14](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/core/Player.ts#L14)
***
### sts
> **sts**: `number`
#### Defined in
[src/core/Player.ts:12](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/core/Player.ts#L12)
## Accessors
### url
> `get` **url**(): `string`
#### Returns
`string`
#### Defined in
[src/core/Player.ts:261](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/core/Player.ts#L261)
***
### LIBRARY\_VERSION
> `get` `static` **LIBRARY\_VERSION**(): `number`
#### Returns
`number`
#### Defined in
[src/core/Player.ts:265](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/core/Player.ts#L265)
## Methods
### cache()
> **cache**(`cache`?): `Promise`\<`void`\>
#### Parameters
**cache?**: [`ICache`](../namespaces/Types/interfaces/ICache.md)
#### Returns
`Promise`\<`void`\>
#### Defined in
[src/core/Player.ts:200](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/core/Player.ts#L200)
***
### decipher()
> **decipher**(`url`?, `signature_cipher`?, `cipher`?, `this_response_nsig_cache`?): `string`
#### Parameters
**url?**: `string`
**signature\_cipher?**: `string`
**cipher?**: `string`
**this\_response\_nsig\_cache?**: `Map`\<`string`, `string`\>
#### Returns
`string`
#### Defined in
[src/core/Player.ts:78](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/core/Player.ts#L78)
***
### create()
> `static` **create**(`cache`, `fetch`, `po_token`?): `Promise`\<[`Player`](Player.md)\>
#### Parameters
**cache**: `undefined` \| [`ICache`](../namespaces/Types/interfaces/ICache.md)
**fetch** = `Platform.shim.fetch`
**po\_token?**: `string`
#### Returns
`Promise`\<[`Player`](Player.md)\>
#### Defined in
[src/core/Player.ts:24](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/core/Player.ts#L24)
***
### extractNSigSourceCode()
> `static` **extractNSigSourceCode**(`data`): `undefined` \| `string`
#### Parameters
**data**: `string`
#### Returns
`undefined` \| `string`
#### Defined in
[src/core/Player.ts:245](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/core/Player.ts#L245)
***
### extractSigSourceCode()
> `static` **extractSigSourceCode**(`data`): `undefined` \| `string`
#### Parameters
**data**: `string`
#### Returns
`undefined` \| `string`
#### Defined in
[src/core/Player.ts:226](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/core/Player.ts#L226)
***
### extractSigTimestamp()
> `static` **extractSigTimestamp**(`data`): `number`
#### Parameters
**data**: `string`
#### Returns
`number`
#### Defined in
[src/core/Player.ts:222](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/core/Player.ts#L222)
***
### fromCache()
> `static` **fromCache**(`cache`, `player_id`): `Promise`\<`null` \| [`Player`](Player.md)\>
#### Parameters
**cache**: [`ICache`](../namespaces/Types/interfaces/ICache.md)
**player\_id**: `string`
#### Returns
`Promise`\<`null` \| [`Player`](Player.md)\>
#### Defined in
[src/core/Player.ts:170](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/core/Player.ts#L170)
***
### fromSource()
> `static` **fromSource**(`player_id`, `sig_timestamp`, `cache`?, `sig_sc`?, `nsig_sc`?): `Promise`\<[`Player`](Player.md)\>
#### Parameters
**player\_id**: `string`
**sig\_timestamp**: `number`
**cache?**: [`ICache`](../namespaces/Types/interfaces/ICache.md)
**sig\_sc?**: `string`
**nsig\_sc?**: `string`
#### Returns
`Promise`\<[`Player`](Player.md)\>
#### Defined in
[src/core/Player.ts:194](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/core/Player.ts#L194)

View File

@@ -0,0 +1,221 @@
[youtubei.js](../README.md) / PlaylistPanelContinuation
# Class: PlaylistPanelContinuation
## Extends
- [`YTNode`](../namespaces/Helpers/classes/YTNode.md)
## Constructors
### new PlaylistPanelContinuation()
> **new PlaylistPanelContinuation**(`data`): [`PlaylistPanelContinuation`](PlaylistPanelContinuation.md)
#### Parameters
**data**: [`RawNode`](../namespaces/APIResponseTypes/type-aliases/RawNode.md)
#### Returns
[`PlaylistPanelContinuation`](PlaylistPanelContinuation.md)
#### Overrides
[`YTNode`](../namespaces/Helpers/classes/YTNode.md).[`constructor`](../namespaces/Helpers/classes/YTNode.md#constructors)
#### Defined in
[src/parser/continuations.ts:131](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/continuations.ts#L131)
## Properties
### contents
> **contents**: `null` \| [`ObservedArray`](../namespaces/Helpers/type-aliases/ObservedArray.md)\<[`YTNode`](../namespaces/Helpers/classes/YTNode.md)\>
#### Defined in
[src/parser/continuations.ts:129](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/continuations.ts#L129)
***
### continuation
> **continuation**: `string`
#### Defined in
[src/parser/continuations.ts:128](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/continuations.ts#L128)
***
### type
> `readonly` **type**: `string`
#### Inherited from
[`YTNode`](../namespaces/Helpers/classes/YTNode.md).[`type`](../namespaces/Helpers/classes/YTNode.md#type)
#### Defined in
[src/parser/helpers.ts:8](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/helpers.ts#L8)
***
### type
> `readonly` `static` **type**: `"playlistPanelContinuation"` = `'playlistPanelContinuation'`
#### Overrides
[`YTNode`](../namespaces/Helpers/classes/YTNode.md).[`type`](../namespaces/Helpers/classes/YTNode.md#type-1)
#### Defined in
[src/parser/continuations.ts:126](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/continuations.ts#L126)
## Methods
### as()
> **as**\<`T`, `K`\>(...`types`): `InstanceType`\<`K`\[`number`\]\>
Cast to one of the given types.
#### Type Parameters
**T** *extends* [`YTNode`](../namespaces/Helpers/classes/YTNode.md)
**K** *extends* [`YTNodeConstructor`](../namespaces/Helpers/interfaces/YTNodeConstructor.md)\<`T`\>[]
#### Parameters
• ...**types**: `K`
The types to cast to
#### Returns
`InstanceType`\<`K`\[`number`\]\>
The node cast to one of the given types
#### Throws
If the node is not of the given type
#### Inherited from
[`YTNode`](../namespaces/Helpers/classes/YTNode.md).[`as`](../namespaces/Helpers/classes/YTNode.md#as)
#### Defined in
[src/parser/helpers.ts:38](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/helpers.ts#L38)
***
### hasKey()
> **hasKey**\<`T`, `R`\>(`key`): `this is PlaylistPanelContinuation & { [k in string]: R }`
Check for a key without asserting the type.
#### Type Parameters
**T** *extends* `string`
**R** = `any`
#### Parameters
**key**: `T`
The key to check
#### Returns
`this is PlaylistPanelContinuation & { [k in string]: R }`
Whether the node has the key
#### Inherited from
[`YTNode`](../namespaces/Helpers/classes/YTNode.md).[`hasKey`](../namespaces/Helpers/classes/YTNode.md#haskey)
#### Defined in
[src/parser/helpers.ts:50](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/helpers.ts#L50)
***
### is()
> **is**\<`T`, `K`\>(...`types`): `this is InstanceType<K[number]>`
Check if the node is of the given type.
#### Type Parameters
**T** *extends* [`YTNode`](../namespaces/Helpers/classes/YTNode.md)
**K** *extends* [`YTNodeConstructor`](../namespaces/Helpers/interfaces/YTNodeConstructor.md)\<`T`\>[]
#### Parameters
• ...**types**: `K`
The type to check
#### Returns
`this is InstanceType<K[number]>`
whether the node is of the given type
#### Inherited from
[`YTNode`](../namespaces/Helpers/classes/YTNode.md).[`is`](../namespaces/Helpers/classes/YTNode.md#is)
#### Defined in
[src/parser/helpers.ts:28](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/helpers.ts#L28)
***
### key()
> **key**\<`T`, `R`\>(`key`): [`Maybe`](../namespaces/Helpers/classes/Maybe.md)
Assert that the node has the given key and return it.
#### Type Parameters
**T** *extends* `string`
**R** = `any`
#### Parameters
**key**: `T`
The key to check
#### Returns
[`Maybe`](../namespaces/Helpers/classes/Maybe.md)
The value of the key wrapped in a Maybe
#### Throws
If the node does not have the key
#### Inherited from
[`YTNode`](../namespaces/Helpers/classes/YTNode.md).[`key`](../namespaces/Helpers/classes/YTNode.md#key)
#### Defined in
[src/parser/helpers.ts:60](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/helpers.ts#L60)

View File

@@ -0,0 +1,231 @@
[youtubei.js](../README.md) / ReloadContinuationItemsCommand
# Class: ReloadContinuationItemsCommand
## Extends
- [`YTNode`](../namespaces/Helpers/classes/YTNode.md)
## Constructors
### new ReloadContinuationItemsCommand()
> **new ReloadContinuationItemsCommand**(`data`): [`ReloadContinuationItemsCommand`](ReloadContinuationItemsCommand.md)
#### Parameters
**data**: [`RawNode`](../namespaces/APIResponseTypes/type-aliases/RawNode.md)
#### Returns
[`ReloadContinuationItemsCommand`](ReloadContinuationItemsCommand.md)
#### Overrides
[`YTNode`](../namespaces/Helpers/classes/YTNode.md).[`constructor`](../namespaces/Helpers/classes/YTNode.md#constructors)
#### Defined in
[src/parser/continuations.ts:57](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/continuations.ts#L57)
## Properties
### contents
> **contents**: `null` \| [`ObservedArray`](../namespaces/Helpers/type-aliases/ObservedArray.md)\<[`YTNode`](../namespaces/Helpers/classes/YTNode.md)\>
#### Defined in
[src/parser/continuations.ts:54](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/continuations.ts#L54)
***
### slot?
> `optional` **slot**: `string`
#### Defined in
[src/parser/continuations.ts:55](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/continuations.ts#L55)
***
### target\_id
> **target\_id**: `string`
#### Defined in
[src/parser/continuations.ts:53](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/continuations.ts#L53)
***
### type
> `readonly` **type**: `string`
#### Inherited from
[`YTNode`](../namespaces/Helpers/classes/YTNode.md).[`type`](../namespaces/Helpers/classes/YTNode.md#type)
#### Defined in
[src/parser/helpers.ts:8](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/helpers.ts#L8)
***
### type
> `readonly` `static` **type**: `"reloadContinuationItemsCommand"` = `'reloadContinuationItemsCommand'`
#### Overrides
[`YTNode`](../namespaces/Helpers/classes/YTNode.md).[`type`](../namespaces/Helpers/classes/YTNode.md#type-1)
#### Defined in
[src/parser/continuations.ts:51](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/continuations.ts#L51)
## Methods
### as()
> **as**\<`T`, `K`\>(...`types`): `InstanceType`\<`K`\[`number`\]\>
Cast to one of the given types.
#### Type Parameters
**T** *extends* [`YTNode`](../namespaces/Helpers/classes/YTNode.md)
**K** *extends* [`YTNodeConstructor`](../namespaces/Helpers/interfaces/YTNodeConstructor.md)\<`T`\>[]
#### Parameters
• ...**types**: `K`
The types to cast to
#### Returns
`InstanceType`\<`K`\[`number`\]\>
The node cast to one of the given types
#### Throws
If the node is not of the given type
#### Inherited from
[`YTNode`](../namespaces/Helpers/classes/YTNode.md).[`as`](../namespaces/Helpers/classes/YTNode.md#as)
#### Defined in
[src/parser/helpers.ts:38](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/helpers.ts#L38)
***
### hasKey()
> **hasKey**\<`T`, `R`\>(`key`): `this is ReloadContinuationItemsCommand & { [k in string]: R }`
Check for a key without asserting the type.
#### Type Parameters
**T** *extends* `string`
**R** = `any`
#### Parameters
**key**: `T`
The key to check
#### Returns
`this is ReloadContinuationItemsCommand & { [k in string]: R }`
Whether the node has the key
#### Inherited from
[`YTNode`](../namespaces/Helpers/classes/YTNode.md).[`hasKey`](../namespaces/Helpers/classes/YTNode.md#haskey)
#### Defined in
[src/parser/helpers.ts:50](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/helpers.ts#L50)
***
### is()
> **is**\<`T`, `K`\>(...`types`): `this is InstanceType<K[number]>`
Check if the node is of the given type.
#### Type Parameters
**T** *extends* [`YTNode`](../namespaces/Helpers/classes/YTNode.md)
**K** *extends* [`YTNodeConstructor`](../namespaces/Helpers/interfaces/YTNodeConstructor.md)\<`T`\>[]
#### Parameters
• ...**types**: `K`
The type to check
#### Returns
`this is InstanceType<K[number]>`
whether the node is of the given type
#### Inherited from
[`YTNode`](../namespaces/Helpers/classes/YTNode.md).[`is`](../namespaces/Helpers/classes/YTNode.md#is)
#### Defined in
[src/parser/helpers.ts:28](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/helpers.ts#L28)
***
### key()
> **key**\<`T`, `R`\>(`key`): [`Maybe`](../namespaces/Helpers/classes/Maybe.md)
Assert that the node has the given key and return it.
#### Type Parameters
**T** *extends* `string`
**R** = `any`
#### Parameters
**key**: `T`
The key to check
#### Returns
[`Maybe`](../namespaces/Helpers/classes/Maybe.md)
The value of the key wrapped in a Maybe
#### Throws
If the node does not have the key
#### Inherited from
[`YTNode`](../namespaces/Helpers/classes/YTNode.md).[`key`](../namespaces/Helpers/classes/YTNode.md#key)
#### Defined in
[src/parser/helpers.ts:60](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/helpers.ts#L60)

View File

@@ -0,0 +1,221 @@
[youtubei.js](../README.md) / SectionListContinuation
# Class: SectionListContinuation
## Extends
- [`YTNode`](../namespaces/Helpers/classes/YTNode.md)
## Constructors
### new SectionListContinuation()
> **new SectionListContinuation**(`data`): [`SectionListContinuation`](SectionListContinuation.md)
#### Parameters
**data**: [`RawNode`](../namespaces/APIResponseTypes/type-aliases/RawNode.md)
#### Returns
[`SectionListContinuation`](SectionListContinuation.md)
#### Overrides
[`YTNode`](../namespaces/Helpers/classes/YTNode.md).[`constructor`](../namespaces/Helpers/classes/YTNode.md#constructors)
#### Defined in
[src/parser/continuations.ts:71](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/continuations.ts#L71)
## Properties
### contents
> **contents**: `null` \| [`ObservedArray`](../namespaces/Helpers/type-aliases/ObservedArray.md)\<[`YTNode`](../namespaces/Helpers/classes/YTNode.md)\>
#### Defined in
[src/parser/continuations.ts:69](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/continuations.ts#L69)
***
### continuation
> **continuation**: `string`
#### Defined in
[src/parser/continuations.ts:68](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/continuations.ts#L68)
***
### type
> `readonly` **type**: `string`
#### Inherited from
[`YTNode`](../namespaces/Helpers/classes/YTNode.md).[`type`](../namespaces/Helpers/classes/YTNode.md#type)
#### Defined in
[src/parser/helpers.ts:8](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/helpers.ts#L8)
***
### type
> `readonly` `static` **type**: `"sectionListContinuation"` = `'sectionListContinuation'`
#### Overrides
[`YTNode`](../namespaces/Helpers/classes/YTNode.md).[`type`](../namespaces/Helpers/classes/YTNode.md#type-1)
#### Defined in
[src/parser/continuations.ts:66](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/continuations.ts#L66)
## Methods
### as()
> **as**\<`T`, `K`\>(...`types`): `InstanceType`\<`K`\[`number`\]\>
Cast to one of the given types.
#### Type Parameters
**T** *extends* [`YTNode`](../namespaces/Helpers/classes/YTNode.md)
**K** *extends* [`YTNodeConstructor`](../namespaces/Helpers/interfaces/YTNodeConstructor.md)\<`T`\>[]
#### Parameters
• ...**types**: `K`
The types to cast to
#### Returns
`InstanceType`\<`K`\[`number`\]\>
The node cast to one of the given types
#### Throws
If the node is not of the given type
#### Inherited from
[`YTNode`](../namespaces/Helpers/classes/YTNode.md).[`as`](../namespaces/Helpers/classes/YTNode.md#as)
#### Defined in
[src/parser/helpers.ts:38](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/helpers.ts#L38)
***
### hasKey()
> **hasKey**\<`T`, `R`\>(`key`): `this is SectionListContinuation & { [k in string]: R }`
Check for a key without asserting the type.
#### Type Parameters
**T** *extends* `string`
**R** = `any`
#### Parameters
**key**: `T`
The key to check
#### Returns
`this is SectionListContinuation & { [k in string]: R }`
Whether the node has the key
#### Inherited from
[`YTNode`](../namespaces/Helpers/classes/YTNode.md).[`hasKey`](../namespaces/Helpers/classes/YTNode.md#haskey)
#### Defined in
[src/parser/helpers.ts:50](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/helpers.ts#L50)
***
### is()
> **is**\<`T`, `K`\>(...`types`): `this is InstanceType<K[number]>`
Check if the node is of the given type.
#### Type Parameters
**T** *extends* [`YTNode`](../namespaces/Helpers/classes/YTNode.md)
**K** *extends* [`YTNodeConstructor`](../namespaces/Helpers/interfaces/YTNodeConstructor.md)\<`T`\>[]
#### Parameters
• ...**types**: `K`
The type to check
#### Returns
`this is InstanceType<K[number]>`
whether the node is of the given type
#### Inherited from
[`YTNode`](../namespaces/Helpers/classes/YTNode.md).[`is`](../namespaces/Helpers/classes/YTNode.md#is)
#### Defined in
[src/parser/helpers.ts:28](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/helpers.ts#L28)
***
### key()
> **key**\<`T`, `R`\>(`key`): [`Maybe`](../namespaces/Helpers/classes/Maybe.md)
Assert that the node has the given key and return it.
#### Type Parameters
**T** *extends* `string`
**R** = `any`
#### Parameters
**key**: `T`
The key to check
#### Returns
[`Maybe`](../namespaces/Helpers/classes/Maybe.md)
The value of the key wrapped in a Maybe
#### Throws
If the node does not have the key
#### Inherited from
[`YTNode`](../namespaces/Helpers/classes/YTNode.md).[`key`](../namespaces/Helpers/classes/YTNode.md#key)
#### Defined in
[src/parser/helpers.ts:60](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/helpers.ts#L60)

667
docs/api/classes/Session.md Normal file
View File

@@ -0,0 +1,667 @@
[youtubei.js](../README.md) / Session
# Class: Session
Represents an InnerTube session. This holds all the data needed to make requests to YouTube.
## Extends
- [`EventEmitter`](EventEmitter.md)
## Constructors
### new Session()
> **new Session**(`context`, `api_key`, `api_version`, `account_index`, `player`?, `cookie`?, `fetch`?, `cache`?, `po_token`?): [`Session`](Session.md)
#### Parameters
**context**: [`Context`](../type-aliases/Context.md)
**api\_key**: `string`
**api\_version**: `string`
**account\_index**: `number`
**player?**: [`Player`](Player.md)
**cookie?**: `string`
**fetch?**
**cache?**: [`ICache`](../namespaces/Types/interfaces/ICache.md)
**po\_token?**: `string`
#### Returns
[`Session`](Session.md)
#### Overrides
[`EventEmitter`](EventEmitter.md).[`constructor`](EventEmitter.md#constructors)
#### Defined in
[src/core/Session.ts:237](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/core/Session.ts#L237)
## Properties
### account\_index
> **account\_index**: `number`
#### Defined in
[src/core/Session.ts:232](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/core/Session.ts#L232)
***
### actions
> **actions**: [`Actions`](Actions.md)
#### Defined in
[src/core/Session.ts:228](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/core/Session.ts#L228)
***
### api\_version
> **api\_version**: `string`
#### Defined in
[src/core/Session.ts:231](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/core/Session.ts#L231)
***
### cache?
> `optional` **cache**: [`ICache`](../namespaces/Types/interfaces/ICache.md)
#### Defined in
[src/core/Session.ts:229](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/core/Session.ts#L229)
***
### context
> **context**: [`Context`](../type-aliases/Context.md)
#### Defined in
[src/core/Session.ts:223](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/core/Session.ts#L223)
***
### cookie?
> `optional` **cookie**: `string`
#### Defined in
[src/core/Session.ts:234](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/core/Session.ts#L234)
***
### http
> **http**: [`HTTPClient`](HTTPClient.md)
#### Defined in
[src/core/Session.ts:226](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/core/Session.ts#L226)
***
### key
> **key**: `string`
#### Defined in
[src/core/Session.ts:230](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/core/Session.ts#L230)
***
### logged\_in
> **logged\_in**: `boolean`
#### Defined in
[src/core/Session.ts:227](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/core/Session.ts#L227)
***
### oauth
> **oauth**: [`OAuth2`](OAuth2.md)
#### Defined in
[src/core/Session.ts:225](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/core/Session.ts#L225)
***
### player?
> `optional` **player**: [`Player`](Player.md)
#### Defined in
[src/core/Session.ts:224](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/core/Session.ts#L224)
***
### po\_token?
> `optional` **po\_token**: `string`
#### Defined in
[src/core/Session.ts:233](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/core/Session.ts#L233)
***
### user\_agent?
> `optional` **user\_agent**: `string`
#### Defined in
[src/core/Session.ts:235](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/core/Session.ts#L235)
## Accessors
### client\_name
> `get` **client\_name**(): `string`
#### Returns
`string`
#### Defined in
[src/core/Session.ts:594](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/core/Session.ts#L594)
***
### client\_version
> `get` **client\_version**(): `string`
#### Returns
`string`
#### Defined in
[src/core/Session.ts:590](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/core/Session.ts#L590)
***
### lang
> `get` **lang**(): `string`
#### Returns
`string`
#### Defined in
[src/core/Session.ts:598](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/core/Session.ts#L598)
## Methods
### addEventListener()
> **addEventListener**(`type`, `callback`, `options`?): `void`
Appends an event listener for events whose type attribute value is type. The callback argument sets the callback that will be invoked when the event is dispatched.
The options argument sets listener-specific options. For compatibility this can be a boolean, in which case the method behaves exactly as if the value was specified as options's capture.
When set to true, options's capture prevents callback from being invoked when the event's eventPhase attribute value is BUBBLING_PHASE. When false (or not present), callback will not be invoked when event's eventPhase attribute value is CAPTURING_PHASE. Either way, callback will be invoked if event's eventPhase attribute value is AT_TARGET.
When set to true, options's passive indicates that the callback will not cancel the event by invoking preventDefault(). This is used to enable performance optimizations described in § 2.8 Observing event listeners.
When set to true, options's once indicates that the callback will only be invoked once after which the event listener will be removed.
If an AbortSignal is passed for options's signal, then the event listener will be removed when signal is aborted.
The event listener is appended to target's event listener list and is not appended if it has the same type, callback, and capture.
[MDN Reference](https://developer.mozilla.org/docs/Web/API/EventTarget/addEventListener)
#### Parameters
**type**: `string`
**callback**: `null` \| `EventListenerOrEventListenerObject`
**options?**: `boolean` \| `AddEventListenerOptions`
#### Returns
`void`
#### Inherited from
[`EventEmitter`](EventEmitter.md).[`addEventListener`](EventEmitter.md#addeventlistener)
#### Defined in
node\_modules/typescript/lib/lib.dom.d.ts:8256
***
### dispatchEvent()
> **dispatchEvent**(`event`): `boolean`
Dispatches a synthetic event event to target and returns true if either event's cancelable attribute value is false or its preventDefault() method was not invoked, and false otherwise.
[MDN Reference](https://developer.mozilla.org/docs/Web/API/EventTarget/dispatchEvent)
#### Parameters
**event**: `Event`
#### Returns
`boolean`
#### Inherited from
[`EventEmitter`](EventEmitter.md).[`dispatchEvent`](EventEmitter.md#dispatchevent)
#### Defined in
node\_modules/typescript/lib/lib.dom.d.ts:8262
***
### emit()
> **emit**(`type`, ...`args`): `void`
#### Parameters
**type**: `string`
• ...**args**: `any`[]
#### Returns
`void`
#### Inherited from
[`EventEmitter`](EventEmitter.md).[`emit`](EventEmitter.md#emit)
#### Defined in
[src/utils/EventEmitterLike.ts:10](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/utils/EventEmitterLike.ts#L10)
***
### off()
> **off**(`type`, `listener`): `void`
#### Parameters
**type**: `string`
**listener**
#### Returns
`void`
#### Inherited from
[`EventEmitter`](EventEmitter.md).[`off`](EventEmitter.md#off)
#### Defined in
[src/utils/EventEmitterLike.ts:40](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/utils/EventEmitterLike.ts#L40)
***
### on()
#### on(type, listener)
> **on**(`type`, `listener`): `void`
##### Parameters
**type**: `"auth"`
**listener**: [`OAuth2AuthEventHandler`](../type-aliases/OAuth2AuthEventHandler.md)
##### Returns
`void`
##### Overrides
[`EventEmitter`](EventEmitter.md).[`on`](EventEmitter.md#on)
##### Defined in
[src/core/Session.ts:254](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/core/Session.ts#L254)
#### on(type, listener)
> **on**(`type`, `listener`): `void`
##### Parameters
**type**: `"auth-pending"`
**listener**: [`OAuth2AuthPendingEventHandler`](../type-aliases/OAuth2AuthPendingEventHandler.md)
##### Returns
`void`
##### Overrides
`EventEmitter.on`
##### Defined in
[src/core/Session.ts:255](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/core/Session.ts#L255)
#### on(type, listener)
> **on**(`type`, `listener`): `void`
##### Parameters
**type**: `"auth-error"`
**listener**: [`OAuth2AuthErrorEventHandler`](../type-aliases/OAuth2AuthErrorEventHandler.md)
##### Returns
`void`
##### Overrides
`EventEmitter.on`
##### Defined in
[src/core/Session.ts:256](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/core/Session.ts#L256)
#### on(type, listener)
> **on**(`type`, `listener`): `void`
##### Parameters
**type**: `"update-credentials"`
**listener**: [`OAuth2AuthEventHandler`](../type-aliases/OAuth2AuthEventHandler.md)
##### Returns
`void`
##### Overrides
`EventEmitter.on`
##### Defined in
[src/core/Session.ts:257](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/core/Session.ts#L257)
***
### once()
#### once(type, listener)
> **once**(`type`, `listener`): `void`
##### Parameters
**type**: `"auth"`
**listener**: [`OAuth2AuthEventHandler`](../type-aliases/OAuth2AuthEventHandler.md)
##### Returns
`void`
##### Overrides
[`EventEmitter`](EventEmitter.md).[`once`](EventEmitter.md#once)
##### Defined in
[src/core/Session.ts:263](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/core/Session.ts#L263)
#### once(type, listener)
> **once**(`type`, `listener`): `void`
##### Parameters
**type**: `"auth-pending"`
**listener**: [`OAuth2AuthPendingEventHandler`](../type-aliases/OAuth2AuthPendingEventHandler.md)
##### Returns
`void`
##### Overrides
`EventEmitter.once`
##### Defined in
[src/core/Session.ts:264](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/core/Session.ts#L264)
#### once(type, listener)
> **once**(`type`, `listener`): `void`
##### Parameters
**type**: `"auth-error"`
**listener**: [`OAuth2AuthErrorEventHandler`](../type-aliases/OAuth2AuthErrorEventHandler.md)
##### Returns
`void`
##### Overrides
`EventEmitter.once`
##### Defined in
[src/core/Session.ts:265](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/core/Session.ts#L265)
***
### removeEventListener()
> **removeEventListener**(`type`, `callback`, `options`?): `void`
Removes the event listener in target's event listener list with the same type, callback, and options.
[MDN Reference](https://developer.mozilla.org/docs/Web/API/EventTarget/removeEventListener)
#### Parameters
**type**: `string`
**callback**: `null` \| `EventListenerOrEventListenerObject`
**options?**: `boolean` \| `EventListenerOptions`
#### Returns
`void`
#### Inherited from
[`EventEmitter`](EventEmitter.md).[`removeEventListener`](EventEmitter.md#removeeventlistener)
#### Defined in
node\_modules/typescript/lib/lib.dom.d.ts:8268
***
### signIn()
> **signIn**(`credentials`?): `Promise`\<`void`\>
#### Parameters
**credentials?**: [`OAuth2Tokens`](../type-aliases/OAuth2Tokens.md)
#### Returns
`Promise`\<`void`\>
#### Defined in
[src/core/Session.ts:557](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/core/Session.ts#L557)
***
### signOut()
> **signOut**(): `Promise`\<`undefined` \| `Response`\>
Signs out of the current account and revokes the credentials.
#### Returns
`Promise`\<`undefined` \| `Response`\>
#### Defined in
[src/core/Session.ts:580](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/core/Session.ts#L580)
***
### create()
> `static` **create**(`options`): `Promise`\<[`Session`](Session.md)\>
#### Parameters
**options**: [`SessionOptions`](../type-aliases/SessionOptions.md) = `{}`
#### Returns
`Promise`\<[`Session`](Session.md)\>
#### Defined in
[src/core/Session.ts:271](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/core/Session.ts#L271)
***
### fromCache()
> `static` **fromCache**(`cache`, `session_args`): `Promise`\<`null` \| [`SessionData`](../type-aliases/SessionData.md)\>
Retrieves session data from cache.
#### Parameters
**cache**: [`ICache`](../namespaces/Types/interfaces/ICache.md)
A valid cache implementation.
**session\_args**: [`SessionArgs`](../type-aliases/SessionArgs.md)
User provided session arguments.
#### Returns
`Promise`\<`null` \| [`SessionData`](../type-aliases/SessionData.md)\>
#### Defined in
[src/core/Session.ts:302](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/core/Session.ts#L302)
***
### getSessionData()
> `static` **getSessionData**(`lang`, `location`, `account_index`, `visitor_data`, `user_agent`, `enable_safety_mode`, `generate_session_locally`, `device_category`, `client_name`, `tz`, `fetch`, `on_behalf_of_user`?, `cache`?, `enable_session_cache`?, `po_token`?): `Promise`\<`object`\>
#### Parameters
**lang**: `string` = `''`
**location**: `string` = `''`
**account\_index**: `number` = `0`
**visitor\_data**: `string` = `''`
**user\_agent**: `string` = `...`
**enable\_safety\_mode**: `boolean` = `false`
**generate\_session\_locally**: `boolean` = `false`
**device\_category**: [`DeviceCategory`](../namespaces/Utils/type-aliases/DeviceCategory.md) = `'desktop'`
**client\_name**: [`ClientType`](../enumerations/ClientType.md) = `ClientType.WEB`
**tz**: `string` = `...`
**fetch** = `Platform.shim.fetch`
**on\_behalf\_of\_user?**: `string`
**cache?**: [`ICache`](../namespaces/Types/interfaces/ICache.md)
**enable\_session\_cache?**: `boolean` = `true`
**po\_token?**: `string`
#### Returns
`Promise`\<`object`\>
##### account\_index
> **account\_index**: `number`
##### api\_key
> **api\_key**: `string`
##### api\_version
> **api\_version**: `string`
##### context
> **context**: [`Context`](../type-aliases/Context.md)
#### Defined in
[src/core/Session.ts:341](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/core/Session.ts#L341)

View File

@@ -0,0 +1,221 @@
[youtubei.js](../README.md) / ShowMiniplayerCommand
# Class: ShowMiniplayerCommand
## Extends
- [`YTNode`](../namespaces/Helpers/classes/YTNode.md)
## Constructors
### new ShowMiniplayerCommand()
> **new ShowMiniplayerCommand**(`data`): [`ShowMiniplayerCommand`](ShowMiniplayerCommand.md)
#### Parameters
**data**: [`RawNode`](../namespaces/APIResponseTypes/type-aliases/RawNode.md)
#### Returns
[`ShowMiniplayerCommand`](ShowMiniplayerCommand.md)
#### Overrides
[`YTNode`](../namespaces/Helpers/classes/YTNode.md).[`constructor`](../namespaces/Helpers/classes/YTNode.md#constructors)
#### Defined in
[src/parser/continuations.ts:41](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/continuations.ts#L41)
## Properties
### miniplayer\_command
> **miniplayer\_command**: [`NavigationEndpoint`](../namespaces/YTNodes/classes/NavigationEndpoint.md)
#### Defined in
[src/parser/continuations.ts:38](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/continuations.ts#L38)
***
### show\_premium\_branding
> **show\_premium\_branding**: `boolean`
#### Defined in
[src/parser/continuations.ts:39](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/continuations.ts#L39)
***
### type
> `readonly` **type**: `string`
#### Inherited from
[`YTNode`](../namespaces/Helpers/classes/YTNode.md).[`type`](../namespaces/Helpers/classes/YTNode.md#type)
#### Defined in
[src/parser/helpers.ts:8](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/helpers.ts#L8)
***
### type
> `readonly` `static` **type**: `"showMiniplayerCommand"` = `'showMiniplayerCommand'`
#### Overrides
[`YTNode`](../namespaces/Helpers/classes/YTNode.md).[`type`](../namespaces/Helpers/classes/YTNode.md#type-1)
#### Defined in
[src/parser/continuations.ts:36](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/continuations.ts#L36)
## Methods
### as()
> **as**\<`T`, `K`\>(...`types`): `InstanceType`\<`K`\[`number`\]\>
Cast to one of the given types.
#### Type Parameters
**T** *extends* [`YTNode`](../namespaces/Helpers/classes/YTNode.md)
**K** *extends* [`YTNodeConstructor`](../namespaces/Helpers/interfaces/YTNodeConstructor.md)\<`T`\>[]
#### Parameters
• ...**types**: `K`
The types to cast to
#### Returns
`InstanceType`\<`K`\[`number`\]\>
The node cast to one of the given types
#### Throws
If the node is not of the given type
#### Inherited from
[`YTNode`](../namespaces/Helpers/classes/YTNode.md).[`as`](../namespaces/Helpers/classes/YTNode.md#as)
#### Defined in
[src/parser/helpers.ts:38](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/helpers.ts#L38)
***
### hasKey()
> **hasKey**\<`T`, `R`\>(`key`): `this is ShowMiniplayerCommand & { [k in string]: R }`
Check for a key without asserting the type.
#### Type Parameters
**T** *extends* `string`
**R** = `any`
#### Parameters
**key**: `T`
The key to check
#### Returns
`this is ShowMiniplayerCommand & { [k in string]: R }`
Whether the node has the key
#### Inherited from
[`YTNode`](../namespaces/Helpers/classes/YTNode.md).[`hasKey`](../namespaces/Helpers/classes/YTNode.md#haskey)
#### Defined in
[src/parser/helpers.ts:50](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/helpers.ts#L50)
***
### is()
> **is**\<`T`, `K`\>(...`types`): `this is InstanceType<K[number]>`
Check if the node is of the given type.
#### Type Parameters
**T** *extends* [`YTNode`](../namespaces/Helpers/classes/YTNode.md)
**K** *extends* [`YTNodeConstructor`](../namespaces/Helpers/interfaces/YTNodeConstructor.md)\<`T`\>[]
#### Parameters
• ...**types**: `K`
The type to check
#### Returns
`this is InstanceType<K[number]>`
whether the node is of the given type
#### Inherited from
[`YTNode`](../namespaces/Helpers/classes/YTNode.md).[`is`](../namespaces/Helpers/classes/YTNode.md#is)
#### Defined in
[src/parser/helpers.ts:28](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/helpers.ts#L28)
***
### key()
> **key**\<`T`, `R`\>(`key`): [`Maybe`](../namespaces/Helpers/classes/Maybe.md)
Assert that the node has the given key and return it.
#### Type Parameters
**T** *extends* `string`
**R** = `any`
#### Parameters
**key**: `T`
The key to check
#### Returns
[`Maybe`](../namespaces/Helpers/classes/Maybe.md)
The value of the key wrapped in a Maybe
#### Throws
If the node does not have the key
#### Inherited from
[`YTNode`](../namespaces/Helpers/classes/YTNode.md).[`key`](../namespaces/Helpers/classes/YTNode.md#key)
#### Defined in
[src/parser/helpers.ts:60](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/helpers.ts#L60)

View File

@@ -0,0 +1,113 @@
[youtubei.js](../README.md) / UniversalCache
# Class: UniversalCache
## Implements
- [`ICache`](../namespaces/Types/interfaces/ICache.md)
## Constructors
### new UniversalCache()
> **new UniversalCache**(`persistent`, `persistent_directory`?): [`UniversalCache`](UniversalCache.md)
#### Parameters
**persistent**: `boolean`
**persistent\_directory?**: `string`
#### Returns
[`UniversalCache`](UniversalCache.md)
#### Defined in
[src/utils/Cache.ts:6](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/utils/Cache.ts#L6)
## Accessors
### cache\_dir
> `get` **cache\_dir**(): `string`
#### Returns
`string`
#### Implementation of
[`ICache`](../namespaces/Types/interfaces/ICache.md).[`cache_dir`](../namespaces/Types/interfaces/ICache.md#cache_dir)
#### Defined in
[src/utils/Cache.ts:9](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/utils/Cache.ts#L9)
## Methods
### get()
> **get**(`key`): `Promise`\<`undefined` \| `ArrayBuffer`\>
#### Parameters
**key**: `string`
#### Returns
`Promise`\<`undefined` \| `ArrayBuffer`\>
#### Implementation of
[`ICache`](../namespaces/Types/interfaces/ICache.md).[`get`](../namespaces/Types/interfaces/ICache.md#get)
#### Defined in
[src/utils/Cache.ts:12](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/utils/Cache.ts#L12)
***
### remove()
> **remove**(`key`): `Promise`\<`void`\>
#### Parameters
**key**: `string`
#### Returns
`Promise`\<`void`\>
#### Implementation of
[`ICache`](../namespaces/Types/interfaces/ICache.md).[`remove`](../namespaces/Types/interfaces/ICache.md#remove)
#### Defined in
[src/utils/Cache.ts:18](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/utils/Cache.ts#L18)
***
### set()
> **set**(`key`, `value`): `Promise`\<`void`\>
#### Parameters
**key**: `string`
**value**: `ArrayBuffer`
#### Returns
`Promise`\<`void`\>
#### Implementation of
[`ICache`](../namespaces/Types/interfaces/ICache.md).[`set`](../namespaces/Types/interfaces/ICache.md#set)
#### Defined in
[src/utils/Cache.ts:15](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/utils/Cache.ts#L15)

View File

@@ -0,0 +1,123 @@
[youtubei.js](../README.md) / ClientType
# Enumeration: ClientType
## Enumeration Members
### ANDROID
> **ANDROID**: `"ANDROID"`
#### Defined in
[src/core/Session.ts:22](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/core/Session.ts#L22)
***
### ANDROID\_CREATOR
> **ANDROID\_CREATOR**: `"ANDROID_CREATOR"`
#### Defined in
[src/core/Session.ts:24](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/core/Session.ts#L24)
***
### ANDROID\_MUSIC
> **ANDROID\_MUSIC**: `"ANDROID_MUSIC"`
#### Defined in
[src/core/Session.ts:23](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/core/Session.ts#L23)
***
### IOS
> **IOS**: `"iOS"`
#### Defined in
[src/core/Session.ts:21](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/core/Session.ts#L21)
***
### KIDS
> **KIDS**: `"WEB_KIDS"`
#### Defined in
[src/core/Session.ts:19](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/core/Session.ts#L19)
***
### MUSIC
> **MUSIC**: `"WEB_REMIX"`
#### Defined in
[src/core/Session.ts:20](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/core/Session.ts#L20)
***
### MWEB
> **MWEB**: `"MWEB"`
#### Defined in
[src/core/Session.ts:18](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/core/Session.ts#L18)
***
### TV
> **TV**: `"TVHTML5"`
#### Defined in
[src/core/Session.ts:25](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/core/Session.ts#L25)
***
### TV\_EMBEDDED
> **TV\_EMBEDDED**: `"TVHTML5_SIMPLY_EMBEDDED_PLAYER"`
#### Defined in
[src/core/Session.ts:26](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/core/Session.ts#L26)
***
### WEB
> **WEB**: `"WEB"`
#### Defined in
[src/core/Session.ts:17](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/core/Session.ts#L17)
***
### WEB\_CREATOR
> **WEB\_CREATOR**: `"WEB_CREATOR"`
#### Defined in
[src/core/Session.ts:28](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/core/Session.ts#L28)
***
### WEB\_EMBEDDED
> **WEB\_EMBEDDED**: `"WEB_EMBEDDED_PLAYER"`
#### Defined in
[src/core/Session.ts:27](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/core/Session.ts#L27)

View File

@@ -0,0 +1,33 @@
[youtubei.js](../README.md) / ApiResponse
# Interface: ApiResponse
## Properties
### data
> **data**: [`IRawResponse`](../namespaces/APIResponseTypes/interfaces/IRawResponse.md)
#### Defined in
[src/core/Actions.ts:21](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/core/Actions.ts#L21)
***
### status\_code
> **status\_code**: `number`
#### Defined in
[src/core/Actions.ts:20](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/core/Actions.ts#L20)
***
### success
> **success**: `boolean`
#### Defined in
[src/core/Actions.ts:19](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/core/Actions.ts#L19)

View File

@@ -0,0 +1,13 @@
[youtubei.js](../README.md) / HTTPClientInit
# Interface: HTTPClientInit
## Properties
### baseURL?
> `optional` **baseURL**: `string`
#### Defined in
[src/utils/HTTPClient.ts:14](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/utils/HTTPClient.ts#L14)

View File

@@ -0,0 +1,66 @@
[youtubei.js](../../README.md) / APIResponseTypes
# APIResponseTypes
## Index
### Interfaces
- [IBotguardChallenge](interfaces/IBotguardChallenge.md)
- [IEndpoint](interfaces/IEndpoint.md)
- [IParsedResponse](interfaces/IParsedResponse.md)
- [IPlayabilityStatus](interfaces/IPlayabilityStatus.md)
- [IPlaybackTracking](interfaces/IPlaybackTracking.md)
- [IPlayerConfig](interfaces/IPlayerConfig.md)
- [IRawBotguardChallenge](interfaces/IRawBotguardChallenge.md)
- [IRawPlayerConfig](interfaces/IRawPlayerConfig.md)
- [IRawResponse](interfaces/IRawResponse.md)
- [IRawTrustedResource](interfaces/IRawTrustedResource.md)
- [IResponseContext](interfaces/IResponseContext.md)
- [IServiceTrackingParams](interfaces/IServiceTrackingParams.md)
- [IStreamingData](interfaces/IStreamingData.md)
- [ITrustedResource](interfaces/ITrustedResource.md)
### Type Aliases
- [AddToPlaylistServiceRequest](type-aliases/AddToPlaylistServiceRequest.md)
- [BrowseRequest](type-aliases/BrowseRequest.md)
- [BrowseRequestSupportedMetadata](type-aliases/BrowseRequestSupportedMetadata.md)
- [ContinuationRequest](type-aliases/ContinuationRequest.md)
- [CpnSource](type-aliases/CpnSource.md)
- [CreateCommentRequest](type-aliases/CreateCommentRequest.md)
- [CreatePlaylistServiceRequest](type-aliases/CreatePlaylistServiceRequest.md)
- [DeletePlaylistServiceRequest](type-aliases/DeletePlaylistServiceRequest.md)
- [FeedbackContext](type-aliases/FeedbackContext.md)
- [FeedbackRequest](type-aliases/FeedbackRequest.md)
- [FormData](type-aliases/FormData.md)
- [GetAccountsListInnertubeRequest](type-aliases/GetAccountsListInnertubeRequest.md)
- [GetKidsBlocklistPickerRequest](type-aliases/GetKidsBlocklistPickerRequest.md)
- [IBrowseResponse](type-aliases/IBrowseResponse.md)
- [IGetChallengeResponse](type-aliases/IGetChallengeResponse.md)
- [IGetNotificationsMenuResponse](type-aliases/IGetNotificationsMenuResponse.md)
- [IGetTranscriptResponse](type-aliases/IGetTranscriptResponse.md)
- [IGuideResponse](type-aliases/IGuideResponse.md)
- [INextResponse](type-aliases/INextResponse.md)
- [InlineSettingStatus](type-aliases/InlineSettingStatus.md)
- [IPlayerResponse](type-aliases/IPlayerResponse.md)
- [IResolveURLResponse](type-aliases/IResolveURLResponse.md)
- [ISearchResponse](type-aliases/ISearchResponse.md)
- [IUpdatedMetadataResponse](type-aliases/IUpdatedMetadataResponse.md)
- [LikeRequest](type-aliases/LikeRequest.md)
- [LikeTarget](type-aliases/LikeTarget.md)
- [LiveChatItemContextMenuRequest](type-aliases/LiveChatItemContextMenuRequest.md)
- [ModifyChannelNotificationPreferenceRequest](type-aliases/ModifyChannelNotificationPreferenceRequest.md)
- [NextNavendpoint](type-aliases/NextNavendpoint.md)
- [PerformCommentActionRequest](type-aliases/PerformCommentActionRequest.md)
- [PlaylistEditRequest](type-aliases/PlaylistEditRequest.md)
- [PlaylistPrivacyStatus](type-aliases/PlaylistPrivacyStatus.md)
- [RawData](type-aliases/RawData.md)
- [RawNode](type-aliases/RawNode.md)
- [ReelWatchRequest](type-aliases/ReelWatchRequest.md)
- [SearchRequest](type-aliases/SearchRequest.md)
- [ShareEntityServiceRequest](type-aliases/ShareEntityServiceRequest.md)
- [SubscribeRequest](type-aliases/SubscribeRequest.md)
- [UnsubscribeRequest](type-aliases/UnsubscribeRequest.md)
- [WatchNextRequest](type-aliases/WatchNextRequest.md)
- [WatchRequest](type-aliases/WatchRequest.md)

View File

@@ -0,0 +1,53 @@
[youtubei.js](../../../README.md) / [APIResponseTypes](../README.md) / IBotguardChallenge
# Interface: IBotguardChallenge
## Properties
### client\_experiments\_state\_blob
> **client\_experiments\_state\_blob**: `string`
#### Defined in
[src/parser/types/ParsedResponse.ts:93](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/ParsedResponse.ts#L93)
***
### global\_name
> **global\_name**: `string`
#### Defined in
[src/parser/types/ParsedResponse.ts:92](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/ParsedResponse.ts#L92)
***
### interpreter\_hash
> **interpreter\_hash**: `string`
#### Defined in
[src/parser/types/ParsedResponse.ts:90](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/ParsedResponse.ts#L90)
***
### interpreter\_url
> **interpreter\_url**: [`ITrustedResource`](ITrustedResource.md)
#### Defined in
[src/parser/types/ParsedResponse.ts:89](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/ParsedResponse.ts#L89)
***
### program
> **program**: `string`
#### Defined in
[src/parser/types/ParsedResponse.ts:91](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/ParsedResponse.ts#L91)

View File

@@ -0,0 +1,35 @@
[youtubei.js](../../../README.md) / [APIResponseTypes](../README.md) / IEndpoint
# Interface: IEndpoint\<T\>
## Type Parameters
**T** = `any`
## Methods
### buildRequest()
> **buildRequest**(): `T`
#### Returns
`T`
#### Defined in
[src/parser/types/CommandEndpoints.ts:3](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/CommandEndpoints.ts#L3)
***
### getApiPath()
> **getApiPath**(): `string`
#### Returns
`string`
#### Defined in
[src/parser/types/CommandEndpoints.ts:2](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/CommandEndpoints.ts#L2)

View File

@@ -0,0 +1,511 @@
[youtubei.js](../../../README.md) / [APIResponseTypes](../README.md) / IParsedResponse
# Interface: IParsedResponse
## Properties
### actions?
> `optional` **actions**: [`SuperParsedResult`](../../Helpers/classes/SuperParsedResult.md)\<[`YTNode`](../../Helpers/classes/YTNode.md)\>
#### Defined in
[src/parser/types/ParsedResponse.ts:30](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/ParsedResponse.ts#L30)
***
### actions\_memo?
> `optional` **actions\_memo**: [`Memo`](../../Helpers/classes/Memo.md)
#### Defined in
[src/parser/types/ParsedResponse.ts:31](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/ParsedResponse.ts#L31)
***
### alerts?
> `optional` **alerts**: [`ObservedArray`](../../Helpers/type-aliases/ObservedArray.md)\<[`Alert`](../../YTNodes/classes/Alert.md) \| [`AlertWithButton`](../../YTNodes/classes/AlertWithButton.md)\>
#### Defined in
[src/parser/types/ParsedResponse.ts:54](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/ParsedResponse.ts#L54)
***
### annotations?
> `optional` **annotations**: [`ObservedArray`](../../Helpers/type-aliases/ObservedArray.md)\<[`PlayerAnnotationsExpanded`](../../YTNodes/classes/PlayerAnnotationsExpanded.md)\>
#### Defined in
[src/parser/types/ParsedResponse.ts:66](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/ParsedResponse.ts#L66)
***
### background?
> `optional` **background**: [`MusicThumbnail`](../../YTNodes/classes/MusicThumbnail.md)
#### Defined in
[src/parser/types/ParsedResponse.ts:27](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/ParsedResponse.ts#L27)
***
### bg\_challenge?
> `optional` **bg\_challenge**: [`IBotguardChallenge`](IBotguardChallenge.md)
#### Defined in
[src/parser/types/ParsedResponse.ts:29](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/ParsedResponse.ts#L29)
***
### captions?
> `optional` **captions**: [`PlayerCaptionsTracklist`](../../YTNodes/classes/PlayerCaptionsTracklist.md)
#### Defined in
[src/parser/types/ParsedResponse.ts:64](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/ParsedResponse.ts#L64)
***
### cards?
> `optional` **cards**: [`CardCollection`](../../YTNodes/classes/CardCollection.md)
#### Defined in
[src/parser/types/ParsedResponse.ts:69](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/ParsedResponse.ts#L69)
***
### challenge?
> `optional` **challenge**: `string`
#### Defined in
[src/parser/types/ParsedResponse.ts:28](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/ParsedResponse.ts#L28)
***
### contents?
> `optional` **contents**: [`SuperParsedResult`](../../Helpers/classes/SuperParsedResult.md)\<[`YTNode`](../../Helpers/classes/YTNode.md)\>
#### Defined in
[src/parser/types/ParsedResponse.ts:32](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/ParsedResponse.ts#L32)
***
### contents\_memo?
> `optional` **contents\_memo**: [`Memo`](../../Helpers/classes/Memo.md)
#### Defined in
[src/parser/types/ParsedResponse.ts:33](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/ParsedResponse.ts#L33)
***
### continuation?
> `optional` **continuation**: [`Continuation`](../../../classes/Continuation.md)
#### Defined in
[src/parser/types/ParsedResponse.ts:47](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/ParsedResponse.ts#L47)
***
### continuation\_contents?
> `optional` **continuation\_contents**: [`ItemSectionContinuation`](../../../classes/ItemSectionContinuation.md) \| [`SectionListContinuation`](../../../classes/SectionListContinuation.md) \| [`LiveChatContinuation`](../../../classes/LiveChatContinuation.md) \| [`MusicPlaylistShelfContinuation`](../../../classes/MusicPlaylistShelfContinuation.md) \| [`MusicShelfContinuation`](../../../classes/MusicShelfContinuation.md) \| [`GridContinuation`](../../../classes/GridContinuation.md) \| [`PlaylistPanelContinuation`](../../../classes/PlaylistPanelContinuation.md) \| [`ContinuationCommand`](../../../classes/ContinuationCommand.md)
#### Defined in
[src/parser/types/ParsedResponse.ts:48](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/ParsedResponse.ts#L48)
***
### continuation\_contents\_memo?
> `optional` **continuation\_contents\_memo**: [`Memo`](../../Helpers/classes/Memo.md)
#### Defined in
[src/parser/types/ParsedResponse.ts:50](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/ParsedResponse.ts#L50)
***
### continuation\_endpoint?
> `optional` **continuation\_endpoint**: [`YTNode`](../../Helpers/classes/YTNode.md)
#### Defined in
[src/parser/types/ParsedResponse.ts:78](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/ParsedResponse.ts#L78)
***
### cpn\_info?
> `optional` **cpn\_info**: `object`
#### cpn
> **cpn**: `string`
#### cpn\_source
> **cpn\_source**: [`CpnSource`](../type-aliases/CpnSource.md)
#### Defined in
[src/parser/types/ParsedResponse.ts:70](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/ParsedResponse.ts#L70)
***
### current\_video\_endpoint?
> `optional` **current\_video\_endpoint**: [`NavigationEndpoint`](../../YTNodes/classes/NavigationEndpoint.md)
#### Defined in
[src/parser/types/ParsedResponse.ts:62](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/ParsedResponse.ts#L62)
***
### endpoint?
> `optional` **endpoint**: [`NavigationEndpoint`](../../YTNodes/classes/NavigationEndpoint.md)
#### Defined in
[src/parser/types/ParsedResponse.ts:63](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/ParsedResponse.ts#L63)
***
### endscreen?
> `optional` **endscreen**: [`Endscreen`](../../YTNodes/classes/Endscreen.md)
#### Defined in
[src/parser/types/ParsedResponse.ts:68](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/ParsedResponse.ts#L68)
***
### engagement\_panels?
> `optional` **engagement\_panels**: [`ObservedArray`](../../Helpers/type-aliases/ObservedArray.md)\<[`EngagementPanelSectionList`](../../YTNodes/classes/EngagementPanelSectionList.md)\>
#### Defined in
[src/parser/types/ParsedResponse.ts:74](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/ParsedResponse.ts#L74)
***
### entries?
> `optional` **entries**: [`NavigationEndpoint`](../../YTNodes/classes/NavigationEndpoint.md)[]
#### Defined in
[src/parser/types/ParsedResponse.ts:76](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/ParsedResponse.ts#L76)
***
### entries\_memo?
> `optional` **entries\_memo**: [`Memo`](../../Helpers/classes/Memo.md)
#### Defined in
[src/parser/types/ParsedResponse.ts:77](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/ParsedResponse.ts#L77)
***
### estimated\_results?
> `optional` **estimated\_results**: `number`
#### Defined in
[src/parser/types/ParsedResponse.ts:56](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/ParsedResponse.ts#L56)
***
### header?
> `optional` **header**: [`SuperParsedResult`](../../Helpers/classes/SuperParsedResult.md)\<[`YTNode`](../../Helpers/classes/YTNode.md)\>
#### Defined in
[src/parser/types/ParsedResponse.ts:34](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/ParsedResponse.ts#L34)
***
### header\_memo?
> `optional` **header\_memo**: [`Memo`](../../Helpers/classes/Memo.md)
#### Defined in
[src/parser/types/ParsedResponse.ts:35](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/ParsedResponse.ts#L35)
***
### items?
> `optional` **items**: [`SuperParsedResult`](../../Helpers/classes/SuperParsedResult.md)\<[`YTNode`](../../Helpers/classes/YTNode.md)\>
#### Defined in
[src/parser/types/ParsedResponse.ts:75](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/ParsedResponse.ts#L75)
***
### items\_memo?
> `optional` **items\_memo**: [`Memo`](../../Helpers/classes/Memo.md)
#### Defined in
[src/parser/types/ParsedResponse.ts:40](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/ParsedResponse.ts#L40)
***
### live\_chat\_item\_context\_menu\_supported\_renderers?
> `optional` **live\_chat\_item\_context\_menu\_supported\_renderers**: [`YTNode`](../../Helpers/classes/YTNode.md)
#### Defined in
[src/parser/types/ParsedResponse.ts:38](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/ParsedResponse.ts#L38)
***
### live\_chat\_item\_context\_menu\_supported\_renderers\_memo?
> `optional` **live\_chat\_item\_context\_menu\_supported\_renderers\_memo**: [`Memo`](../../Helpers/classes/Memo.md)
#### Defined in
[src/parser/types/ParsedResponse.ts:39](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/ParsedResponse.ts#L39)
***
### metadata?
> `optional` **metadata**: [`SuperParsedResult`](../../Helpers/classes/SuperParsedResult.md)\<[`YTNode`](../../Helpers/classes/YTNode.md)\>
#### Defined in
[src/parser/types/ParsedResponse.ts:51](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/ParsedResponse.ts#L51)
***
### microformat?
> `optional` **microformat**: [`YTNode`](../../Helpers/classes/YTNode.md)
#### Defined in
[src/parser/types/ParsedResponse.ts:52](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/ParsedResponse.ts#L52)
***
### on\_response\_received\_actions?
> `optional` **on\_response\_received\_actions**: [`ObservedArray`](../../Helpers/type-aliases/ObservedArray.md)\<[`AppendContinuationItemsAction`](../../YTNodes/classes/AppendContinuationItemsAction.md) \| [`OpenPopupAction`](../../YTNodes/classes/OpenPopupAction.md) \| [`NavigateAction`](../../../classes/NavigateAction.md) \| [`ShowMiniplayerCommand`](../../../classes/ShowMiniplayerCommand.md) \| [`ReloadContinuationItemsCommand`](../../../classes/ReloadContinuationItemsCommand.md)\>
#### Defined in
[src/parser/types/ParsedResponse.ts:41](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/ParsedResponse.ts#L41)
***
### on\_response\_received\_actions\_memo?
> `optional` **on\_response\_received\_actions\_memo**: [`Memo`](../../Helpers/classes/Memo.md)
#### Defined in
[src/parser/types/ParsedResponse.ts:42](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/ParsedResponse.ts#L42)
***
### on\_response\_received\_commands?
> `optional` **on\_response\_received\_commands**: [`ObservedArray`](../../Helpers/type-aliases/ObservedArray.md)\<[`AppendContinuationItemsAction`](../../YTNodes/classes/AppendContinuationItemsAction.md) \| [`OpenPopupAction`](../../YTNodes/classes/OpenPopupAction.md) \| [`NavigateAction`](../../../classes/NavigateAction.md) \| [`ShowMiniplayerCommand`](../../../classes/ShowMiniplayerCommand.md) \| [`ReloadContinuationItemsCommand`](../../../classes/ReloadContinuationItemsCommand.md)\>
#### Defined in
[src/parser/types/ParsedResponse.ts:45](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/ParsedResponse.ts#L45)
***
### on\_response\_received\_commands\_memo?
> `optional` **on\_response\_received\_commands\_memo**: [`Memo`](../../Helpers/classes/Memo.md)
#### Defined in
[src/parser/types/ParsedResponse.ts:46](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/ParsedResponse.ts#L46)
***
### on\_response\_received\_endpoints?
> `optional` **on\_response\_received\_endpoints**: [`ObservedArray`](../../Helpers/type-aliases/ObservedArray.md)\<[`AppendContinuationItemsAction`](../../YTNodes/classes/AppendContinuationItemsAction.md) \| [`OpenPopupAction`](../../YTNodes/classes/OpenPopupAction.md) \| [`NavigateAction`](../../../classes/NavigateAction.md) \| [`ShowMiniplayerCommand`](../../../classes/ShowMiniplayerCommand.md) \| [`ReloadContinuationItemsCommand`](../../../classes/ReloadContinuationItemsCommand.md)\>
#### Defined in
[src/parser/types/ParsedResponse.ts:43](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/ParsedResponse.ts#L43)
***
### on\_response\_received\_endpoints\_memo?
> `optional` **on\_response\_received\_endpoints\_memo**: [`Memo`](../../Helpers/classes/Memo.md)
#### Defined in
[src/parser/types/ParsedResponse.ts:44](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/ParsedResponse.ts#L44)
***
### overlay?
> `optional` **overlay**: [`YTNode`](../../Helpers/classes/YTNode.md)
#### Defined in
[src/parser/types/ParsedResponse.ts:53](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/ParsedResponse.ts#L53)
***
### playability\_status?
> `optional` **playability\_status**: [`IPlayabilityStatus`](IPlayabilityStatus.md)
#### Defined in
[src/parser/types/ParsedResponse.ts:59](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/ParsedResponse.ts#L59)
***
### playback\_tracking?
> `optional` **playback\_tracking**: [`IPlaybackTracking`](IPlaybackTracking.md)
#### Defined in
[src/parser/types/ParsedResponse.ts:58](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/ParsedResponse.ts#L58)
***
### player\_config?
> `optional` **player\_config**: [`IPlayerConfig`](IPlayerConfig.md)
#### Defined in
[src/parser/types/ParsedResponse.ts:61](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/ParsedResponse.ts#L61)
***
### player\_overlays?
> `optional` **player\_overlays**: [`SuperParsedResult`](../../Helpers/classes/SuperParsedResult.md)\<[`YTNode`](../../Helpers/classes/YTNode.md)\>
#### Defined in
[src/parser/types/ParsedResponse.ts:57](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/ParsedResponse.ts#L57)
***
### player\_response?
> `optional` **player\_response**: [`IPlayerResponse`](../type-aliases/IPlayerResponse.md)
#### Defined in
[src/parser/types/ParsedResponse.ts:79](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/ParsedResponse.ts#L79)
***
### refinements?
> `optional` **refinements**: `string`[]
#### Defined in
[src/parser/types/ParsedResponse.ts:55](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/ParsedResponse.ts#L55)
***
### sidebar?
> `optional` **sidebar**: [`YTNode`](../../Helpers/classes/YTNode.md)
#### Defined in
[src/parser/types/ParsedResponse.ts:36](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/ParsedResponse.ts#L36)
***
### sidebar\_memo?
> `optional` **sidebar\_memo**: [`Memo`](../../Helpers/classes/Memo.md)
#### Defined in
[src/parser/types/ParsedResponse.ts:37](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/ParsedResponse.ts#L37)
***
### storyboards?
> `optional` **storyboards**: [`PlayerStoryboardSpec`](../../YTNodes/classes/PlayerStoryboardSpec.md) \| [`PlayerLiveStoryboardSpec`](../../YTNodes/classes/PlayerLiveStoryboardSpec.md)
#### Defined in
[src/parser/types/ParsedResponse.ts:67](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/ParsedResponse.ts#L67)
***
### streaming\_data?
> `optional` **streaming\_data**: [`IStreamingData`](IStreamingData.md)
#### Defined in
[src/parser/types/ParsedResponse.ts:60](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/ParsedResponse.ts#L60)
***
### video\_details?
> `optional` **video\_details**: [`VideoDetails`](../../Misc/classes/VideoDetails.md)
#### Defined in
[src/parser/types/ParsedResponse.ts:65](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/ParsedResponse.ts#L65)
***
### watch\_next\_response?
> `optional` **watch\_next\_response**: [`INextResponse`](../type-aliases/INextResponse.md)
#### Defined in
[src/parser/types/ParsedResponse.ts:80](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/ParsedResponse.ts#L80)

View File

@@ -0,0 +1,53 @@
[youtubei.js](../../../README.md) / [APIResponseTypes](../README.md) / IPlayabilityStatus
# Interface: IPlayabilityStatus
## Properties
### audio\_only\_playability
> **audio\_only\_playability**: `null` \| [`AudioOnlyPlayability`](../../YTNodes/classes/AudioOnlyPlayability.md)
#### Defined in
[src/parser/types/ParsedResponse.ts:103](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/ParsedResponse.ts#L103)
***
### embeddable
> **embeddable**: `boolean`
#### Defined in
[src/parser/types/ParsedResponse.ts:104](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/ParsedResponse.ts#L104)
***
### error\_screen
> **error\_screen**: `null` \| [`YTNode`](../../Helpers/classes/YTNode.md)
#### Defined in
[src/parser/types/ParsedResponse.ts:102](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/ParsedResponse.ts#L102)
***
### reason
> **reason**: `string`
#### Defined in
[src/parser/types/ParsedResponse.ts:105](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/ParsedResponse.ts#L105)
***
### status
> **status**: `string`
#### Defined in
[src/parser/types/ParsedResponse.ts:101](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/ParsedResponse.ts#L101)

View File

@@ -0,0 +1,23 @@
[youtubei.js](../../../README.md) / [APIResponseTypes](../README.md) / IPlaybackTracking
# Interface: IPlaybackTracking
## Properties
### videostats\_playback\_url
> **videostats\_playback\_url**: `string`
#### Defined in
[src/parser/types/ParsedResponse.ts:98](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/ParsedResponse.ts#L98)
***
### videostats\_watchtime\_url
> **videostats\_watchtime\_url**: `string`
#### Defined in
[src/parser/types/ParsedResponse.ts:97](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/ParsedResponse.ts#L97)

View File

@@ -0,0 +1,73 @@
[youtubei.js](../../../README.md) / [APIResponseTypes](../README.md) / IPlayerConfig
# Interface: IPlayerConfig
## Properties
### audio\_config
> **audio\_config**: `object`
#### enable\_per\_format\_loudness
> **enable\_per\_format\_loudness**: `boolean`
#### loudness\_db?
> `optional` **loudness\_db**: `number`
#### perceptual\_loudness\_db?
> `optional` **perceptual\_loudness\_db**: `number`
#### Defined in
[src/parser/types/ParsedResponse.ts:109](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/ParsedResponse.ts#L109)
***
### media\_common\_config
> **media\_common\_config**: `object`
#### dynamic\_readahead\_config
> **dynamic\_readahead\_config**: `object`
#### dynamic\_readahead\_config.max\_read\_ahead\_media\_time\_ms
> **max\_read\_ahead\_media\_time\_ms**: `number`
#### dynamic\_readahead\_config.min\_read\_ahead\_media\_time\_ms
> **min\_read\_ahead\_media\_time\_ms**: `number`
#### dynamic\_readahead\_config.read\_ahead\_growth\_rate\_ms
> **read\_ahead\_growth\_rate\_ms**: `number`
#### media\_ustreamer\_request\_config?
> `optional` **media\_ustreamer\_request\_config**: `object`
#### media\_ustreamer\_request\_config.video\_playback\_ustreamer\_config?
> `optional` **video\_playback\_ustreamer\_config**: `string`
#### Defined in
[src/parser/types/ParsedResponse.ts:117](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/ParsedResponse.ts#L117)
***
### stream\_selection\_config
> **stream\_selection\_config**: `object`
#### max\_bitrate
> **max\_bitrate**: `string`
#### Defined in
[src/parser/types/ParsedResponse.ts:114](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/ParsedResponse.ts#L114)

View File

@@ -0,0 +1,53 @@
[youtubei.js](../../../README.md) / [APIResponseTypes](../README.md) / IRawBotguardChallenge
# Interface: IRawBotguardChallenge
## Properties
### clientExperimentsStateBlob
> **clientExperimentsStateBlob**: `string`
#### Defined in
[src/parser/types/RawResponse.ts:50](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/RawResponse.ts#L50)
***
### globalName
> **globalName**: `string`
#### Defined in
[src/parser/types/RawResponse.ts:49](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/RawResponse.ts#L49)
***
### interpreterHash
> **interpreterHash**: `string`
#### Defined in
[src/parser/types/RawResponse.ts:47](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/RawResponse.ts#L47)
***
### interpreterUrl
> **interpreterUrl**: [`IRawTrustedResource`](IRawTrustedResource.md)
#### Defined in
[src/parser/types/RawResponse.ts:46](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/RawResponse.ts#L46)
***
### program
> **program**: `string`
#### Defined in
[src/parser/types/RawResponse.ts:48](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/RawResponse.ts#L48)

View File

@@ -0,0 +1,73 @@
[youtubei.js](../../../README.md) / [APIResponseTypes](../README.md) / IRawPlayerConfig
# Interface: IRawPlayerConfig
## Properties
### audioConfig
> **audioConfig**: `object`
#### enablePerFormatLoudness
> **enablePerFormatLoudness**: `boolean`
#### loudnessDb?
> `optional` **loudnessDb**: `number`
#### perceptualLoudnessDb?
> `optional` **perceptualLoudnessDb**: `number`
#### Defined in
[src/parser/types/RawResponse.ts:20](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/RawResponse.ts#L20)
***
### mediaCommonConfig
> **mediaCommonConfig**: `object`
#### dynamicReadaheadConfig?
> `optional` **dynamicReadaheadConfig**: `object`
#### dynamicReadaheadConfig.maxReadAheadMediaTimeMs
> **maxReadAheadMediaTimeMs**: `number`
#### dynamicReadaheadConfig.minReadAheadMediaTimeMs
> **minReadAheadMediaTimeMs**: `number`
#### dynamicReadaheadConfig.readAheadGrowthRateMs
> **readAheadGrowthRateMs**: `number`
#### mediaUstreamerRequestConfig?
> `optional` **mediaUstreamerRequestConfig**: `object`
#### mediaUstreamerRequestConfig.videoPlaybackUstreamerConfig
> **videoPlaybackUstreamerConfig**: `string`
#### Defined in
[src/parser/types/RawResponse.ts:28](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/RawResponse.ts#L28)
***
### streamSelectionConfig
> **streamSelectionConfig**: `object`
#### maxBitrate
> **maxBitrate**: `string`
#### Defined in
[src/parser/types/RawResponse.ts:25](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/RawResponse.ts#L25)

View File

@@ -0,0 +1,495 @@
[youtubei.js](../../../README.md) / [APIResponseTypes](../README.md) / IRawResponse
# Interface: IRawResponse
## Indexable
\[`key`: `string`\]: `any`
## Properties
### actions?
> `optional` **actions**: [`RawNode`](../type-aliases/RawNode.md)[]
#### Defined in
[src/parser/types/RawResponse.ts:63](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/RawResponse.ts#L63)
***
### alerts?
> `optional` **alerts**: [`RawNode`](../type-aliases/RawNode.md)[]
#### Defined in
[src/parser/types/RawResponse.ts:71](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/RawResponse.ts#L71)
***
### annotations?
> `optional` **annotations**: [`RawNode`](../type-aliases/RawNode.md)[]
#### Defined in
[src/parser/types/RawResponse.ts:107](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/RawResponse.ts#L107)
***
### background?
> `optional` **background**: [`RawNode`](../type-aliases/RawNode.md)
#### Defined in
[src/parser/types/RawResponse.ts:55](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/RawResponse.ts#L55)
***
### bgChallenge?
> `optional` **bgChallenge**: [`IRawBotguardChallenge`](IRawBotguardChallenge.md)
#### Defined in
[src/parser/types/RawResponse.ts:56](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/RawResponse.ts#L56)
***
### captions?
> `optional` **captions**: [`RawNode`](../type-aliases/RawNode.md)
#### Defined in
[src/parser/types/RawResponse.ts:105](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/RawResponse.ts#L105)
***
### cards?
> `optional` **cards**: [`RawNode`](../type-aliases/RawNode.md)
#### Defined in
[src/parser/types/RawResponse.ts:110](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/RawResponse.ts#L110)
***
### challenge?
> `optional` **challenge**: `string`
#### Defined in
[src/parser/types/RawResponse.ts:57](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/RawResponse.ts#L57)
***
### contents?
> `optional` **contents**: [`RawData`](../type-aliases/RawData.md)
#### Defined in
[src/parser/types/RawResponse.ts:58](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/RawResponse.ts#L58)
***
### continuation?
> `optional` **continuation**: [`RawNode`](../type-aliases/RawNode.md)
#### Defined in
[src/parser/types/RawResponse.ts:67](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/RawResponse.ts#L67)
***
### continuationContents?
> `optional` **continuationContents**: [`RawNode`](../type-aliases/RawNode.md)
#### Defined in
[src/parser/types/RawResponse.ts:62](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/RawResponse.ts#L62)
***
### cpnInfo?
> `optional` **cpnInfo**: `object`
#### cpn
> **cpn**: `string`
#### cpnSource
> **cpnSource**: [`CpnSource`](../type-aliases/CpnSource.md)
#### Defined in
[src/parser/types/RawResponse.ts:111](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/RawResponse.ts#L111)
***
### currentVideoEndpoint?
> `optional` **currentVideoEndpoint**: [`RawNode`](../type-aliases/RawNode.md)
#### Defined in
[src/parser/types/RawResponse.ts:101](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/RawResponse.ts#L101)
***
### endpoint?
> `optional` **endpoint**: [`RawNode`](../type-aliases/RawNode.md)
#### Defined in
[src/parser/types/RawResponse.ts:104](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/RawResponse.ts#L104)
***
### endscreen?
> `optional` **endscreen**: [`RawNode`](../type-aliases/RawNode.md)
#### Defined in
[src/parser/types/RawResponse.ts:109](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/RawResponse.ts#L109)
***
### engagementPanels?
> `optional` **engagementPanels**: [`RawNode`](../type-aliases/RawNode.md)[]
#### Defined in
[src/parser/types/RawResponse.ts:117](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/RawResponse.ts#L117)
***
### entries?
> `optional` **entries**: [`RawNode`](../type-aliases/RawNode.md)[]
#### Defined in
[src/parser/types/RawResponse.ts:118](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/RawResponse.ts#L118)
***
### estimatedResults?
> `optional` **estimatedResults**: `string`
#### Defined in
[src/parser/types/RawResponse.ts:73](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/RawResponse.ts#L73)
***
### frameworkUpdates?
> `optional` **frameworkUpdates**: `any`
#### Defined in
[src/parser/types/RawResponse.ts:116](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/RawResponse.ts#L116)
***
### header?
> `optional` **header**: [`RawNode`](../type-aliases/RawNode.md)
#### Defined in
[src/parser/types/RawResponse.ts:65](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/RawResponse.ts#L65)
***
### items?
> `optional` **items**: [`RawNode`](../type-aliases/RawNode.md)[]
#### Defined in
[src/parser/types/RawResponse.ts:115](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/RawResponse.ts#L115)
***
### liveChatItemContextMenuSupportedRenderers?
> `optional` **liveChatItemContextMenuSupportedRenderers**: [`RawNode`](../type-aliases/RawNode.md)
#### Defined in
[src/parser/types/RawResponse.ts:64](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/RawResponse.ts#L64)
***
### metadata?
> `optional` **metadata**: [`RawNode`](../type-aliases/RawNode.md)
#### Defined in
[src/parser/types/RawResponse.ts:68](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/RawResponse.ts#L68)
***
### microformat?
> `optional` **microformat**: [`RawNode`](../type-aliases/RawNode.md)
#### Defined in
[src/parser/types/RawResponse.ts:69](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/RawResponse.ts#L69)
***
### onResponseReceivedActions?
> `optional` **onResponseReceivedActions**: [`RawNode`](../type-aliases/RawNode.md)[]
#### Defined in
[src/parser/types/RawResponse.ts:59](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/RawResponse.ts#L59)
***
### onResponseReceivedCommands?
> `optional` **onResponseReceivedCommands**: [`RawNode`](../type-aliases/RawNode.md)[]
#### Defined in
[src/parser/types/RawResponse.ts:61](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/RawResponse.ts#L61)
***
### onResponseReceivedEndpoints?
> `optional` **onResponseReceivedEndpoints**: [`RawNode`](../type-aliases/RawNode.md)[]
#### Defined in
[src/parser/types/RawResponse.ts:60](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/RawResponse.ts#L60)
***
### overlay?
> `optional` **overlay**: [`RawNode`](../type-aliases/RawNode.md)
#### Defined in
[src/parser/types/RawResponse.ts:70](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/RawResponse.ts#L70)
***
### playabilityStatus?
> `optional` **playabilityStatus**: `object`
#### audioOnlyPlayability?
> `optional` **audioOnlyPlayability**: [`RawNode`](../type-aliases/RawNode.md)
#### errorScreen?
> `optional` **errorScreen**: [`RawNode`](../type-aliases/RawNode.md)
#### playableInEmbed?
> `optional` **playableInEmbed**: `boolean`
#### reason?
> `optional` **reason**: `string`
#### status
> **status**: `string`
#### Defined in
[src/parser/types/RawResponse.ts:83](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/RawResponse.ts#L83)
***
### playbackTracking?
> `optional` **playbackTracking**: `object`
#### videostatsPlaybackUrl
> **videostatsPlaybackUrl**: `object`
#### videostatsPlaybackUrl.baseUrl
> **baseUrl**: `string`
#### videostatsWatchtimeUrl
> **videostatsWatchtimeUrl**: `object`
#### videostatsWatchtimeUrl.baseUrl
> **baseUrl**: `string`
#### Defined in
[src/parser/types/RawResponse.ts:75](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/RawResponse.ts#L75)
***
### playerConfig?
> `optional` **playerConfig**: [`IRawPlayerConfig`](IRawPlayerConfig.md)
#### Defined in
[src/parser/types/RawResponse.ts:98](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/RawResponse.ts#L98)
***
### playerOverlays?
> `optional` **playerOverlays**: [`RawNode`](../type-aliases/RawNode.md)
#### Defined in
[src/parser/types/RawResponse.ts:74](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/RawResponse.ts#L74)
***
### playerResponse?
> `optional` **playerResponse**: [`IRawResponse`](IRawResponse.md)
#### Defined in
[src/parser/types/RawResponse.ts:99](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/RawResponse.ts#L99)
***
### playlistId?
> `optional` **playlistId**: `string`
#### Defined in
[src/parser/types/RawResponse.ts:103](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/RawResponse.ts#L103)
***
### refinements?
> `optional` **refinements**: `string`[]
#### Defined in
[src/parser/types/RawResponse.ts:72](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/RawResponse.ts#L72)
***
### responseContext?
> `optional` **responseContext**: [`IResponseContext`](IResponseContext.md)
#### Defined in
[src/parser/types/RawResponse.ts:54](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/RawResponse.ts#L54)
***
### sidebar?
> `optional` **sidebar**: [`RawNode`](../type-aliases/RawNode.md)
#### Defined in
[src/parser/types/RawResponse.ts:66](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/RawResponse.ts#L66)
***
### storyboards?
> `optional` **storyboards**: [`RawNode`](../type-aliases/RawNode.md)
#### Defined in
[src/parser/types/RawResponse.ts:108](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/RawResponse.ts#L108)
***
### streamingData?
> `optional` **streamingData**: `object`
#### adaptiveFormats
> **adaptiveFormats**: [`RawNode`](../type-aliases/RawNode.md)[]
#### dashManifestUrl?
> `optional` **dashManifestUrl**: `string`
#### expiresInSeconds
> **expiresInSeconds**: `string`
#### formats
> **formats**: [`RawNode`](../type-aliases/RawNode.md)[]
#### hlsManifestUrl?
> `optional` **hlsManifestUrl**: `string`
#### serverAbrStreamingUrl?
> `optional` **serverAbrStreamingUrl**: `string`
#### Defined in
[src/parser/types/RawResponse.ts:90](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/RawResponse.ts#L90)
***
### unseenCount?
> `optional` **unseenCount**: `number`
#### Defined in
[src/parser/types/RawResponse.ts:102](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/RawResponse.ts#L102)
***
### videoDetails?
> `optional` **videoDetails**: [`RawNode`](../type-aliases/RawNode.md)
#### Defined in
[src/parser/types/RawResponse.ts:106](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/RawResponse.ts#L106)
***
### watchNextResponse?
> `optional` **watchNextResponse**: [`IRawResponse`](IRawResponse.md)
#### Defined in
[src/parser/types/RawResponse.ts:100](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/RawResponse.ts#L100)

View File

@@ -0,0 +1,23 @@
[youtubei.js](../../../README.md) / [APIResponseTypes](../README.md) / IRawTrustedResource
# Interface: IRawTrustedResource
## Properties
### privateDoNotAccessOrElseSafeScriptWrappedValue?
> `optional` **privateDoNotAccessOrElseSafeScriptWrappedValue**: `string`
#### Defined in
[src/parser/types/RawResponse.ts:42](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/RawResponse.ts#L42)
***
### privateDoNotAccessOrElseTrustedResourceUrlWrappedValue?
> `optional` **privateDoNotAccessOrElseTrustedResourceUrlWrappedValue**: `string`
#### Defined in
[src/parser/types/RawResponse.ts:41](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/RawResponse.ts#L41)

View File

@@ -0,0 +1,23 @@
[youtubei.js](../../../README.md) / [APIResponseTypes](../README.md) / IResponseContext
# Interface: IResponseContext
## Properties
### maxAgeSeconds
> **maxAgeSeconds**: `number`
#### Defined in
[src/parser/types/RawResponse.ts:16](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/RawResponse.ts#L16)
***
### serviceTrackingParams
> **serviceTrackingParams**: [`IServiceTrackingParams`](IServiceTrackingParams.md)[]
#### Defined in
[src/parser/types/RawResponse.ts:15](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/RawResponse.ts#L15)

View File

@@ -0,0 +1,23 @@
[youtubei.js](../../../README.md) / [APIResponseTypes](../README.md) / IServiceTrackingParams
# Interface: IServiceTrackingParams
## Properties
### params?
> `optional` **params**: `object`[]
#### Defined in
[src/parser/types/RawResponse.ts:8](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/RawResponse.ts#L8)
***
### service
> **service**: `string`
#### Defined in
[src/parser/types/RawResponse.ts:7](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/RawResponse.ts#L7)

View File

@@ -0,0 +1,63 @@
[youtubei.js](../../../README.md) / [APIResponseTypes](../README.md) / IStreamingData
# Interface: IStreamingData
## Properties
### adaptive\_formats
> **adaptive\_formats**: [`Format`](../../Misc/classes/Format.md)[]
#### Defined in
[src/parser/types/ParsedResponse.ts:132](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/ParsedResponse.ts#L132)
***
### dash\_manifest\_url?
> `optional` **dash\_manifest\_url**: `string`
#### Defined in
[src/parser/types/ParsedResponse.ts:133](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/ParsedResponse.ts#L133)
***
### expires
> **expires**: `Date`
#### Defined in
[src/parser/types/ParsedResponse.ts:130](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/ParsedResponse.ts#L130)
***
### formats
> **formats**: [`Format`](../../Misc/classes/Format.md)[]
#### Defined in
[src/parser/types/ParsedResponse.ts:131](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/ParsedResponse.ts#L131)
***
### hls\_manifest\_url?
> `optional` **hls\_manifest\_url**: `string`
#### Defined in
[src/parser/types/ParsedResponse.ts:134](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/ParsedResponse.ts#L134)
***
### server\_abr\_streaming\_url?
> `optional` **server\_abr\_streaming\_url**: `string`
#### Defined in
[src/parser/types/ParsedResponse.ts:135](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/ParsedResponse.ts#L135)

View File

@@ -0,0 +1,23 @@
[youtubei.js](../../../README.md) / [APIResponseTypes](../README.md) / ITrustedResource
# Interface: ITrustedResource
## Properties
### private\_do\_not\_access\_or\_else\_safe\_script\_wrapped\_value?
> `optional` **private\_do\_not\_access\_or\_else\_safe\_script\_wrapped\_value**: `string`
#### Defined in
[src/parser/types/ParsedResponse.ts:85](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/ParsedResponse.ts#L85)
***
### private\_do\_not\_access\_or\_else\_trusted\_resource\_url\_wrapped\_value?
> `optional` **private\_do\_not\_access\_or\_else\_trusted\_resource\_url\_wrapped\_value**: `string`
#### Defined in
[src/parser/types/ParsedResponse.ts:84](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/ParsedResponse.ts#L84)

View File

@@ -0,0 +1,27 @@
[youtubei.js](../../../README.md) / [APIResponseTypes](../README.md) / AddToPlaylistServiceRequest
# Type Alias: AddToPlaylistServiceRequest
> **AddToPlaylistServiceRequest**: `object`
## Type declaration
### excludeWatchLater?
> `optional` **excludeWatchLater**: `boolean`
### params?
> `optional` **params**: `string`
### playlistId?
> `optional` **playlistId**: `string`
### videoIds?
> `optional` **videoIds**: `string`[]
## Defined in
[src/parser/types/CommandEndpoints.ts:55](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/CommandEndpoints.ts#L55)

View File

@@ -0,0 +1,39 @@
[youtubei.js](../../../README.md) / [APIResponseTypes](../README.md) / BrowseRequest
# Type Alias: BrowseRequest
> **BrowseRequest**: `object`
## Type declaration
### browseId?
> `optional` **browseId**: `string`
### browseRequestSupportedMetadata?
> `optional` **browseRequestSupportedMetadata**: [`BrowseRequestSupportedMetadata`](BrowseRequestSupportedMetadata.md)
### formData?
> `optional` **formData**: [`FormData`](FormData.md)
### inlineSettingStatus?
> `optional` **inlineSettingStatus**: [`InlineSettingStatus`](InlineSettingStatus.md)
### params?
> `optional` **params**: `string`
### query?
> `optional` **query**: `string`
### subscriptionSettingsState?
> `optional` **subscriptionSettingsState**: `string`
## Defined in
[src/parser/types/CommandEndpoints.ts:6](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/CommandEndpoints.ts#L6)

View File

@@ -0,0 +1,23 @@
[youtubei.js](../../../README.md) / [APIResponseTypes](../README.md) / BrowseRequestSupportedMetadata
# Type Alias: BrowseRequestSupportedMetadata
> **BrowseRequestSupportedMetadata**: `object`
## Type declaration
### downloadsBrowseParams
> **downloadsBrowseParams**: `object`
### downloadsBrowseParams.offlineFeatureSettingState
> **offlineFeatureSettingState**: `object`
### downloadsBrowseParams.offlineFeatureSettingState.isSdEnabled
> **isSdEnabled**: `boolean`
## Defined in
[src/parser/types/CommandEndpoints.ts:25](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/CommandEndpoints.ts#L25)

View File

@@ -0,0 +1,31 @@
[youtubei.js](../../../README.md) / [APIResponseTypes](../README.md) / ContinuationRequest
# Type Alias: ContinuationRequest
> **ContinuationRequest**: `object`
## Type declaration
### continuation?
> `optional` **continuation**: `string`
### fetchCommentsParams?
> `optional` **fetchCommentsParams**: `object`
### fetchCommentsParams.continuation
> **continuation**: `string`
### formData?
> `optional` **formData**: [`FormData`](FormData.md)
### notificationsMenuRequestType?
> `optional` **notificationsMenuRequestType**: `string`
## Defined in
[src/parser/types/CommandEndpoints.ts:143](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/CommandEndpoints.ts#L143)

View File

@@ -0,0 +1,9 @@
[youtubei.js](../../../README.md) / [APIResponseTypes](../README.md) / CpnSource
# Type Alias: CpnSource
> **CpnSource**: `"CPN_SOURCE_TYPE_CLIENT"` \| `"CPN_SOURCE_TYPE_WATCH_SERVER"`
## Defined in
[src/parser/types/RawResponse.ts:4](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/RawResponse.ts#L4)

View File

@@ -0,0 +1,63 @@
[youtubei.js](../../../README.md) / [APIResponseTypes](../README.md) / CreateCommentRequest
# Type Alias: CreateCommentRequest
> **CreateCommentRequest**: `object`
## Type declaration
### accessRestrictions?
> `optional` **accessRestrictions**: `object`
### accessRestrictions.restriction
> **restriction**: `"RESTRICTION_TYPE_EVERYONE"` \| `"RESTRICTION_TYPE_SPONSORS_ONLY"`
### botguardResponse?
> `optional` **botguardResponse**: `string`
### commentText?
> `optional` **commentText**: `string`
### createCommentParams?
> `optional` **createCommentParams**: `string`
### imageAttachment?
> `optional` **imageAttachment**: `object`
### imageAttachment.encryptedBlobId
> **encryptedBlobId**: `string`
### pollAttachment?
> `optional` **pollAttachment**: `object`
### pollAttachment.choices
> **choices**: `string`[]
### sharedPostAttachment?
> `optional` **sharedPostAttachment**: `object`
### sharedPostAttachment.postId
> **postId**: `string`
### videoAttachment?
> `optional` **videoAttachment**: `object`
### videoAttachment.videoId
> **videoId**: `string`
## Defined in
[src/parser/types/CommandEndpoints.ts:179](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/CommandEndpoints.ts#L179)

View File

@@ -0,0 +1,35 @@
[youtubei.js](../../../README.md) / [APIResponseTypes](../README.md) / CreatePlaylistServiceRequest
# Type Alias: CreatePlaylistServiceRequest
> **CreatePlaylistServiceRequest**: `object`
## Type declaration
### description?
> `optional` **description**: `string`
### params?
> `optional` **params**: `string`
### privacyStatus?
> `optional` **privacyStatus**: [`PlaylistPrivacyStatus`](PlaylistPrivacyStatus.md)
### sourcePlaylistId?
> `optional` **sourcePlaylistId**: `string`
### title?
> `optional` **title**: `string`
### videoIds?
> `optional` **videoIds**: `string`[]
## Defined in
[src/parser/types/CommandEndpoints.ts:104](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/CommandEndpoints.ts#L104)

View File

@@ -0,0 +1,15 @@
[youtubei.js](../../../README.md) / [APIResponseTypes](../README.md) / DeletePlaylistServiceRequest
# Type Alias: DeletePlaylistServiceRequest
> **DeletePlaylistServiceRequest**: `object`
## Type declaration
### playlistId?
> `optional` **playlistId**: `string`
## Defined in
[src/parser/types/CommandEndpoints.ts:113](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/CommandEndpoints.ts#L113)

View File

@@ -0,0 +1,15 @@
[youtubei.js](../../../README.md) / [APIResponseTypes](../README.md) / FeedbackContext
# Type Alias: FeedbackContext
> **FeedbackContext**: `object`
## Type declaration
### cpn
> **cpn**: `string`
## Defined in
[src/parser/types/CommandEndpoints.ts:35](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/CommandEndpoints.ts#L35)

View File

@@ -0,0 +1,27 @@
[youtubei.js](../../../README.md) / [APIResponseTypes](../README.md) / FeedbackRequest
# Type Alias: FeedbackRequest
> **FeedbackRequest**: `object`
## Type declaration
### feedbackContext?
> `optional` **feedbackContext**: [`FeedbackContext`](FeedbackContext.md)
### feedbackTokens?
> `optional` **feedbackTokens**: `string`[]
### isFeedbackTokenUnencrypted?
> `optional` **isFeedbackTokenUnencrypted**: `boolean`
### shouldMerge?
> `optional` **shouldMerge**: `boolean`
## Defined in
[src/parser/types/CommandEndpoints.ts:39](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/CommandEndpoints.ts#L39)

View File

@@ -0,0 +1,31 @@
[youtubei.js](../../../README.md) / [APIResponseTypes](../README.md) / FormData
# Type Alias: FormData
> **FormData**: `object`
## Type declaration
### accountSettingsFormData
> **accountSettingsFormData**: `object`
### accountSettingsFormData.flagAudioDescriptionDefaultOn
> **flagAudioDescriptionDefaultOn**: `boolean`
### accountSettingsFormData.flagAutoCaptionsDefaultOn
> **flagAutoCaptionsDefaultOn**: `boolean`
### accountSettingsFormData.flagCaptionsDefaultOff
> **flagCaptionsDefaultOff**: `boolean`
### accountSettingsFormData.flagDisableInlinePreview
> **flagDisableInlinePreview**: `boolean`
## Defined in
[src/parser/types/CommandEndpoints.ts:16](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/CommandEndpoints.ts#L16)

View File

@@ -0,0 +1,43 @@
[youtubei.js](../../../README.md) / [APIResponseTypes](../README.md) / GetAccountsListInnertubeRequest
# Type Alias: GetAccountsListInnertubeRequest
> **GetAccountsListInnertubeRequest**: `object`
## Type declaration
### callCircumstance?
> `optional` **callCircumstance**: `"SUPPLEMENTAL_USER"` \| `"SWITCHING_USERS_FULL"`
### channelSwitcherQuery?
> `optional` **channelSwitcherQuery**: `string`
### contentOwnerConfig?
> `optional` **contentOwnerConfig**: `Record`\<`string`, `any`\>
### nextNavendpoint?
> `optional` **nextNavendpoint**: [`NextNavendpoint`](NextNavendpoint.md)
### obfuscatedSelectedGaiaId?
> `optional` **obfuscatedSelectedGaiaId**: `string`
### requestType?
> `optional` **requestType**: `string`
### selectedSerializedDelegationContext?
> `optional` **selectedSerializedDelegationContext**: `string`
### triggerChannelCreation?
> `optional` **triggerChannelCreation**: `boolean`
## Defined in
[src/parser/types/CommandEndpoints.ts:162](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/CommandEndpoints.ts#L162)

View File

@@ -0,0 +1,19 @@
[youtubei.js](../../../README.md) / [APIResponseTypes](../README.md) / GetKidsBlocklistPickerRequest
# Type Alias: GetKidsBlocklistPickerRequest
> **GetKidsBlocklistPickerRequest**: `object`
## Type declaration
### blockedForKidsContent?
> `optional` **blockedForKidsContent**: `object`
### blockedForKidsContent.external\_channel\_id
> **external\_channel\_id**: `string`
## Defined in
[src/parser/types/CommandEndpoints.ts:173](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/CommandEndpoints.ts#L173)

View File

@@ -0,0 +1,9 @@
[youtubei.js](../../../README.md) / [APIResponseTypes](../README.md) / IBrowseResponse
# Type Alias: IBrowseResponse
> **IBrowseResponse**: `Pick`\<[`IParsedResponse`](../interfaces/IParsedResponse.md), `"background"` \| `"continuation_contents"` \| `"continuation_contents_memo"` \| `"on_response_received_actions"` \| `"on_response_received_actions_memo"` \| `"on_response_received_endpoints"` \| `"on_response_received_endpoints_memo"` \| `"contents"` \| `"contents_memo"` \| `"header"` \| `"header_memo"` \| `"metadata"` \| `"microformat"` \| `"alerts"` \| `"sidebar"` \| `"sidebar_memo"`\>
## Defined in
[src/parser/types/ParsedResponse.ts:140](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/ParsedResponse.ts#L140)

View File

@@ -0,0 +1,9 @@
[youtubei.js](../../../README.md) / [APIResponseTypes](../README.md) / IGetChallengeResponse
# Type Alias: IGetChallengeResponse
> **IGetChallengeResponse**: `Pick`\<[`IParsedResponse`](../interfaces/IParsedResponse.md), `"challenge"` \| `"bg_challenge"`\>
## Defined in
[src/parser/types/ParsedResponse.ts:147](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/ParsedResponse.ts#L147)

View File

@@ -0,0 +1,9 @@
[youtubei.js](../../../README.md) / [APIResponseTypes](../README.md) / IGetNotificationsMenuResponse
# Type Alias: IGetNotificationsMenuResponse
> **IGetNotificationsMenuResponse**: `Pick`\<[`IParsedResponse`](../interfaces/IParsedResponse.md), `"actions"` \| `"actions_memo"`\>
## Defined in
[src/parser/types/ParsedResponse.ts:144](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/ParsedResponse.ts#L144)

View File

@@ -0,0 +1,9 @@
[youtubei.js](../../../README.md) / [APIResponseTypes](../README.md) / IGetTranscriptResponse
# Type Alias: IGetTranscriptResponse
> **IGetTranscriptResponse**: `Pick`\<[`IParsedResponse`](../interfaces/IParsedResponse.md), `"actions"` \| `"actions_memo"`\>
## Defined in
[src/parser/types/ParsedResponse.ts:143](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/ParsedResponse.ts#L143)

View File

@@ -0,0 +1,9 @@
[youtubei.js](../../../README.md) / [APIResponseTypes](../README.md) / IGuideResponse
# Type Alias: IGuideResponse
> **IGuideResponse**: `Pick`\<[`IParsedResponse`](../interfaces/IParsedResponse.md), `"items"` \| `"items_memo"`\>
## Defined in
[src/parser/types/ParsedResponse.ts:146](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/ParsedResponse.ts#L146)

View File

@@ -0,0 +1,9 @@
[youtubei.js](../../../README.md) / [APIResponseTypes](../README.md) / INextResponse
# Type Alias: INextResponse
> **INextResponse**: `Pick`\<[`IParsedResponse`](../interfaces/IParsedResponse.md), `"contents"` \| `"contents_memo"` \| `"continuation_contents"` \| `"continuation_contents_memo"` \| `"current_video_endpoint"` \| `"on_response_received_endpoints"` \| `"on_response_received_endpoints_memo"` \| `"player_overlays"` \| `"engagement_panels"`\>
## Defined in
[src/parser/types/ParsedResponse.ts:139](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/ParsedResponse.ts#L139)

View File

@@ -0,0 +1,9 @@
[youtubei.js](../../../README.md) / [APIResponseTypes](../README.md) / IPlayerResponse
# Type Alias: IPlayerResponse
> **IPlayerResponse**: `Pick`\<[`IParsedResponse`](../interfaces/IParsedResponse.md), `"captions"` \| `"cards"` \| `"endscreen"` \| `"microformat"` \| `"annotations"` \| `"playability_status"` \| `"streaming_data"` \| `"player_config"` \| `"playback_tracking"` \| `"storyboards"` \| `"video_details"`\>
## Defined in
[src/parser/types/ParsedResponse.ts:138](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/ParsedResponse.ts#L138)

View File

@@ -0,0 +1,9 @@
[youtubei.js](../../../README.md) / [APIResponseTypes](../README.md) / IResolveURLResponse
# Type Alias: IResolveURLResponse
> **IResolveURLResponse**: `Pick`\<[`IParsedResponse`](../interfaces/IParsedResponse.md), `"endpoint"`\>
## Defined in
[src/parser/types/ParsedResponse.ts:142](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/ParsedResponse.ts#L142)

View File

@@ -0,0 +1,9 @@
[youtubei.js](../../../README.md) / [APIResponseTypes](../README.md) / ISearchResponse
# Type Alias: ISearchResponse
> **ISearchResponse**: `Pick`\<[`IParsedResponse`](../interfaces/IParsedResponse.md), `"header"` \| `"header_memo"` \| `"contents"` \| `"contents_memo"` \| `"on_response_received_commands"` \| `"continuation_contents"` \| `"continuation_contents_memo"` \| `"refinements"` \| `"estimated_results"`\>
## Defined in
[src/parser/types/ParsedResponse.ts:141](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/ParsedResponse.ts#L141)

View File

@@ -0,0 +1,9 @@
[youtubei.js](../../../README.md) / [APIResponseTypes](../README.md) / IUpdatedMetadataResponse
# Type Alias: IUpdatedMetadataResponse
> **IUpdatedMetadataResponse**: `Pick`\<[`IParsedResponse`](../interfaces/IParsedResponse.md), `"actions"` \| `"actions_memo"` \| `"continuation"`\>
## Defined in
[src/parser/types/ParsedResponse.ts:145](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/ParsedResponse.ts#L145)

View File

@@ -0,0 +1,9 @@
[youtubei.js](../../../README.md) / [APIResponseTypes](../README.md) / InlineSettingStatus
# Type Alias: InlineSettingStatus
> **InlineSettingStatus**: `"INLINE_SETTING_STATUS_DISABLED"` \| `"INLINE_SETTING_STATUS_ON"`
## Defined in
[src/parser/types/CommandEndpoints.ts:33](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/CommandEndpoints.ts#L33)

View File

@@ -0,0 +1,19 @@
[youtubei.js](../../../README.md) / [APIResponseTypes](../README.md) / LikeRequest
# Type Alias: LikeRequest
> **LikeRequest**: `object`
## Type declaration
### params?
> `optional` **params**: `string`
### target?
> `optional` **target**: [`LikeTarget`](LikeTarget.md)
## Defined in
[src/parser/types/CommandEndpoints.ts:50](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/CommandEndpoints.ts#L50)

View File

@@ -0,0 +1,15 @@
[youtubei.js](../../../README.md) / [APIResponseTypes](../README.md) / LikeTarget
# Type Alias: LikeTarget
> **LikeTarget**: `object`
## Type declaration
### videoId
> **videoId**: `string`
## Defined in
[src/parser/types/CommandEndpoints.ts:46](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/CommandEndpoints.ts#L46)

View File

@@ -0,0 +1,15 @@
[youtubei.js](../../../README.md) / [APIResponseTypes](../README.md) / LiveChatItemContextMenuRequest
# Type Alias: LiveChatItemContextMenuRequest
> **LiveChatItemContextMenuRequest**: `object`
## Type declaration
### params?
> `optional` **params**: `string`
## Defined in
[src/parser/types/CommandEndpoints.ts:152](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/CommandEndpoints.ts#L152)

View File

@@ -0,0 +1,19 @@
[youtubei.js](../../../README.md) / [APIResponseTypes](../README.md) / ModifyChannelNotificationPreferenceRequest
# Type Alias: ModifyChannelNotificationPreferenceRequest
> **ModifyChannelNotificationPreferenceRequest**: `object`
## Type declaration
### params?
> `optional` **params**: `string`
### secondaryParams?
> `optional` **secondaryParams**: `string`
## Defined in
[src/parser/types/CommandEndpoints.ts:194](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/CommandEndpoints.ts#L194)

View File

@@ -0,0 +1,19 @@
[youtubei.js](../../../README.md) / [APIResponseTypes](../README.md) / NextNavendpoint
# Type Alias: NextNavendpoint
> **NextNavendpoint**: `object`
## Type declaration
### urlEndpoint
> **urlEndpoint**: `object`
### urlEndpoint.url
> **url**: `string`
## Defined in
[src/parser/types/CommandEndpoints.ts:156](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/CommandEndpoints.ts#L156)

View File

@@ -0,0 +1,15 @@
[youtubei.js](../../../README.md) / [APIResponseTypes](../README.md) / PerformCommentActionRequest
# Type Alias: PerformCommentActionRequest
> **PerformCommentActionRequest**: `object`
## Type declaration
### actions?
> `optional` **actions**: `Record`\<`string`, `any`\>[]
## Defined in
[src/parser/types/CommandEndpoints.ts:190](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/CommandEndpoints.ts#L190)

View File

@@ -0,0 +1,23 @@
[youtubei.js](../../../README.md) / [APIResponseTypes](../README.md) / PlaylistEditRequest
# Type Alias: PlaylistEditRequest
> **PlaylistEditRequest**: `object`
## Type declaration
### actions?
> `optional` **actions**: `Record`\<`string`, `any`\>[]
### params?
> `optional` **params**: `string`
### playlistId?
> `optional` **playlistId**: `string`
## Defined in
[src/parser/types/CommandEndpoints.ts:96](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/CommandEndpoints.ts#L96)

View File

@@ -0,0 +1,9 @@
[youtubei.js](../../../README.md) / [APIResponseTypes](../README.md) / PlaylistPrivacyStatus
# Type Alias: PlaylistPrivacyStatus
> **PlaylistPrivacyStatus**: `"PUBLIC"` \| `"UNLISTED"` \| `"PRIVATE"`
## Defined in
[src/parser/types/CommandEndpoints.ts:102](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/CommandEndpoints.ts#L102)

View File

@@ -0,0 +1,9 @@
[youtubei.js](../../../README.md) / [APIResponseTypes](../README.md) / RawData
# Type Alias: RawData
> **RawData**: [`RawNode`](RawNode.md) \| [`RawNode`](RawNode.md)[]
## Defined in
[src/parser/types/RawResponse.ts:2](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/RawResponse.ts#L2)

View File

@@ -0,0 +1,9 @@
[youtubei.js](../../../README.md) / [APIResponseTypes](../README.md) / RawNode
# Type Alias: RawNode
> **RawNode**: `Record`\<`string`, `any`\>
## Defined in
[src/parser/types/RawResponse.ts:1](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/RawResponse.ts#L1)

View File

@@ -0,0 +1,43 @@
[youtubei.js](../../../README.md) / [APIResponseTypes](../README.md) / ReelWatchRequest
# Type Alias: ReelWatchRequest
> **ReelWatchRequest**: `object`
## Type declaration
### disablePlayerResponse?
> `optional` **disablePlayerResponse**: `boolean`
### inputType?
> `optional` **inputType**: `string`
### params?
> `optional` **params**: `string`
### playerRequest?
> `optional` **playerRequest**: `object`
### playerRequest.contentCheckOk?
> `optional` **contentCheckOk**: `boolean`
### playerRequest.params?
> `optional` **params**: `string`
### playerRequest.racyCheckOk?
> `optional` **racyCheckOk**: `boolean`
### playerRequest.videoId
> **videoId**: `string`
## Defined in
[src/parser/types/CommandEndpoints.ts:84](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/CommandEndpoints.ts#L84)

View File

@@ -0,0 +1,27 @@
[youtubei.js](../../../README.md) / [APIResponseTypes](../README.md) / SearchRequest
# Type Alias: SearchRequest
> **SearchRequest**: `object`
## Type declaration
### params?
> `optional` **params**: `string`
### query?
> `optional` **query**: `string`
### suggestStats?
> `optional` **suggestStats**: `unknown`
### webSearchboxStatsUrl?
> `optional` **webSearchboxStatsUrl**: `string`
## Defined in
[src/parser/types/CommandEndpoints.ts:117](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/CommandEndpoints.ts#L117)

View File

@@ -0,0 +1,19 @@
[youtubei.js](../../../README.md) / [APIResponseTypes](../README.md) / ShareEntityServiceRequest
# Type Alias: ShareEntityServiceRequest
> **ShareEntityServiceRequest**: `object`
## Type declaration
### clientParams?
> `optional` **clientParams**: `string`
### serializedSharedEntity?
> `optional` **serializedSharedEntity**: `string`
## Defined in
[src/parser/types/CommandEndpoints.ts:138](https://github.com/LuanRT/YouTube.js/blob/e54e499ff553dab51e6d9d1aebc090b50fec29ba/src/parser/types/CommandEndpoints.ts#L138)

Some files were not shown because too many files have changed in this diff Show More