Commit Graph

769 Commits

Author SHA1 Message Date
Basil
47b1df7529 fix(ThumbnailBadgeView): Parse icon (#1174) 2026-05-29 09:20:26 -03:00
LuanRT
853a36307b feat(Parser): Add HypeFanCreditsSectionView 2026-05-12 19:11:35 -03:00
Luan
f748b8b362 feat(Search): Add support for refinement chips (#1167)
Also, this removes the old code used for refinement cards. Doesn't look like YouTube uses them anymore.
2026-05-12 17:27:55 -03:00
Luan
430fc70888 refactor(cache): Get rid of custom LZW compression (#1168)
It's just buggy and not very efficient, and I can't realistically improve it. Compression algorithms are complicated and would require quite a bit of effort to get right...

fflate is tiny, works anywhere, and is more efficient.

Also, here is an interesting article about compression from fflate's author :  https://gist.github.com/101arrowz/253f31eb5abc3d9275ab943003ffecad
2026-05-12 17:25:59 -03:00
Luan
faaf5fc5c1 fix(Channel): Add support for new feed filter nodes (#1163)
* feat(Feed): Update `getVideosFromMemo` to support `LockupView` nodes

* feat(parser): Add `DownloadListItemView` renderer parser

* feat(FilterableFeed): Add support for `ChipView` nodes

* feat(Channel): Add support for new feed filter system

Honestly the whole Channel class needs a cleanup. Maybe I'll do that at some point in the future.
2026-05-04 21:04:15 -03:00
LuanRT
cf5412986b feat(ListView): Add some missing fields 2026-03-20 17:25:42 -03:00
LuanRT
37a4808693 feat(parser): Add ShowSheetCommand and SheetView 2026-03-20 15:02:53 -03:00
LuanRT
e9bc0d00dd chore(ChipBarView): Import RendererContext directly 2026-03-19 11:24:05 -03:00
LuanRT
39158838f1 feat(ChipBarView): Parse renderer_context 2026-03-19 11:23:05 -03:00
LuanRT
32623de485 feat(ChipView): Improve types 2026-03-19 11:11:00 -03:00
Ian Brown
2a33fbc85f feat(Parser): Add ThumbnailOverlayTitleView and PageIndicatorView classes (#1120)
Add two missing parser classes that were being JIT-generated at runtime:

- ThumbnailOverlayTitleView: Displays title/subtitle overlays on thumbnails
- PageIndicatorView: Tracks pagination state in carousels (indicator count and selected index)

These are encountered when parsing Mix/Playlist responses.
2026-03-16 16:44:35 -03:00
Dave Nicolson
7e10ac9873 fix(history): Add support for LockupView content (#1075)
* fix(history): Add support for LockupView content

* Use YTNode is() method
2026-03-16 13:18:50 -03:00
Dave Nicolson
5c7b1ba25d fix(FlexibleActionsView): Update ActionRow actions type (#1129) 2026-03-16 13:17:22 -03:00
Luan
8130f808d9 fix(parser): Resolve some old parser issues (#1154)
Should reduce parser warning spam quite a bit.

Closes #653
Closes #781
Closes #1121 (minus unrelated pot issue)
Closes #978
Closes #1053
Closes #695
Closes #1098
2026-03-16 13:14:09 -03:00
LuanRT
b8d15cb366 chore(parser): Add 'GenAiFeedbackFormView' to ignored list 2026-03-16 11:26:32 -03:00
Luan
da1fac2d29 feat(parser): Add VideoSummaryContentView and VideoSummaryParagraphView (#1153)
* feat(parser): Add `VideoSummaryContentView` and `VideoSummaryParagraphView`

* fix(ExpandableMetadata): Update `expanded_content` type
2026-03-16 11:22:00 -03:00
LuanRT
543b94c3e4 fix(ChannelSubMenu): Handle potential undefined values 2026-03-16 10:11:02 -03:00
LuanRT
19b33ea36e fix(ContentMetadataView): metadataRows can be undefined 2026-03-16 10:10:36 -03:00
Luan
d8558afd58 fix(Player): Add support for new variants (#1152)
* fix(JsAnalyzer): Add prototype alias tracking, improve scoping, and add es6 class support

* fix(JsExtractor): Allow `ClassExpression` and extract prototype assignments

* feat(helpers): Misc changes & improve argument handling

* fix(matchers): Add new nsig matcher

* feat(utils): Add `NSIG_PROCESSOR_FN`

* fix(Player): Update player URL and integrate new nsig processing

* chore(Constants): Update TV client version to 7.20260311.12.00 (ignore, unrelated) - Unrelated. Updated it for testing some things.

* chore(JsAnalyzer): Remove commented debug log (oops...)

* chore(JsExtractor): Correct typo in comment

* chore: rename some stuff

* chore: lint

* chore: Simplify code in parseFunctionArguments
2026-03-16 07:16:22 -03:00
PikachuEXE
5da9dd37a7 fix(Parser): Fix ChannelSubMenu parsing (#1144) 2026-03-15 23:41:55 +01:00
Cameron
c712c546c3 fix(Session): Add the ID for ANDROID_VR, remove the mistaken ANDROID_TV key. (#1151) 2026-03-15 10:07:48 +01:00
Cameron
f9bd5d0e8d feat(Session): Add the ANDROID_VR client (#1149) 2026-03-14 10:29:26 +01:00
lovegaoshi
b989260d0c chore(constants): update android client version (#1145) 2026-03-04 06:47:36 +01:00
absidue
e83039637e feat(Search)!: Update search filters to match YouTube changes (#1136) 2026-02-08 23:47:34 +01:00
absidue
3b11b1c986 chore(constants): Update some hardcoded client versions 2026-02-08 23:00:37 +01:00
Dave Nicolson
3df4c61bd7 fix(Innertube): getChannel() if subscribed (#1128) 2026-01-31 22:58:12 +01:00
absidue
7c144ee013 fix(Innertube)!: Remove getTrending as YouTube removed the trending feed (#1114) 2026-01-30 19:27:31 +01:00
Luan
458f881043 feat(StreamingInfo): Label Voice Boost audio streams (#1105)
* feat(StreamingInfo): Label Voice Boost audio streams

* chore(StreamingInfoOptions): Clarify vb desc a bit

* fix(StreamingInfoOptions): Fix `label_original` description

* chore: lint
2025-12-27 15:29:08 -03:00
Luan
769721c193 feat(Format): Add support for Voice Boost & Super Resolution formats (#1092) 2025-11-15 19:42:31 -03:00
Luan
e140944dd9 chore(JsAnalyzer.ts): Add a comment for clarity
+ fix the other comment
2025-10-27 02:43:06 -03:00
LostMyCode
ca05eab0c3 fix(FormatUtils#download): Add missing await for format.decipher() call in download function
The format.decipher() method returns a Promise<string>, but was being called without await. This could cause the format_url variable to be a Promise object instead of the expected URL string, leading to errors in subsequent fetch operations.
2025-10-16 08:03:38 -03:00
Luan
d4e4683d94 feat(Session): Add fail_fast option (#1066) 2025-10-12 14:15:00 -03:00
Luan
7eb062bf49 chore: fix linter 2025-10-12 13:15:56 -03:00
Luan
41b810629b chore: Update auto-generated file references to new script location 2025-10-12 12:01:09 -03:00
Dave Nicolson
f738a173fc feat(parser): Add FormPopup.ts parser class (#1057)
* Update src/parser/classes/FormPopup.ts

---------

Co-authored-by: absidue <48293849+absidue@users.noreply.github.com>
2025-10-12 10:30:24 -03:00
Dave Nicolson
3d6ed1def9 feat(parser): Add Form.ts parser class (#1056)
* feat(parser): Add Form.ts parser class

Co-authored-by: absidue <48293849+absidue@users.noreply.github.com>
2025-10-12 10:27:01 -03:00
Dave Nicolson
6c127199ba feat(history): Load additional watch history pages (#1055) 2025-10-12 10:00:35 -03:00
Luan
25d0876b91 refactor(Player)!: Use AST-based JS extraction with side-effect safe code emission (#1052)
* chore(deps): Add `meriyah`

* feat(utils): Implement AST-based JS extractors

* chore(utils): Remove old ast walker code

* fix(Player): Migrate js extraction logic

* chore(JsExtractor): Fix typo in tsdoc

* perf(JsAnalyzer): Simplify main AST analysis logic

* fix(JsAnalyzer): Change `break` to `return` in AST matching logic

* chore: Update docs

* chore: Don't export `PlayerInitializationOptions`

* chore(evaluate): Update error message to include doc link

* perf: Use a `for-loop` to find iife
2025-10-12 09:08:51 -03:00
Fijxu
81592ca9e2 chore: Update User-Agents (#1058)
YouTube.js has been using the same user agents for 3 years.
Maybe YouTube doesn't care that much about the User-Agent, but keeping
them updated is good anyways.
2025-10-12 07:33:19 -03:00
Andrew S
977b13cc23 refactor: Use async/await for the javascript evaluator (#1047)
Allows for `Platform.shim.eval` to be asynchronous for custom evaluators. EG: using an online service to evaluate the javascript code in contexts where code interpreters are prohibited.
2025-10-09 14:19:17 -03:00
absidue
035d16dd6d refactor(node): Replace undici dependency with built-in fetch (#1045) 2025-10-02 07:01:21 -03:00
absidue
ee9c184eeb feat(protos): Add playlistTitle field to NextParams (#1040) 2025-09-17 19:50:20 -03:00
absidue
a2c3774e9a fix(Player): Store the full library version in cache entries (#1032) 2025-09-12 16:10:19 -03:00
absidue
68a6af9b2c feat(parser): Add ListView, ListItemView and SubscribeButtonView (#1025) 2025-09-11 15:51:57 -03:00
absidue
46c2f6c6c1 refactor: Import version, bugs URL and repo URL directly from package.json (#1004) 2025-09-11 15:49:48 -03:00
absidue
95976de115 perf: Replace uses of ObservableArray#get with Array#find (#1013) 2025-09-11 15:45:16 -03:00
absidue
8be677adec fix(types): Parser.parseArray always returns an ObservedArray (#1014) 2025-09-11 15:43:58 -03:00
absidue
aa7cf561a7 feat(parser): Parse badges in ContentMetadataView (#1017) 2025-09-11 15:43:37 -03:00
absidue
bac896501b fix(parser): LockupMetadataView.image can also be an AvatarStackView (#1026) 2025-09-11 15:43:05 -03:00
absidue
3ea2815aba fix(Player): Fix global variable extraction in the deciphering code (#1029) 2025-09-11 15:42:27 -03:00