* 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.
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.
* 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)
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.
* deps: update linkedom
* refactor!: remove YTNodeGenerator in favour of namespaced pure functions
BREAKING CHANGES:
- Removes `YTNodeGenerator` from `import('youtubei.js').Generator` and exposes its functions directly in `import('youtubei.js').Generator`
* refactor!: replace Parser class with pure functions
- Remove Parser class in favour of pure functions
- Merge duplicate classes `AppendContinuationItemsAction` into a single class
- Move continuation parsers into a seperate file
- Add better custom logging support to parser methods as per issue #460
* refactor!: replace Proto class with pure functions
* chore: update package-lock.json
* refactor!: replace FormatUtils with pure functions and JSX components
- Replace linkedom DASH manifest generation with a dependency free JSX implementation
- Remove FormatUtils class in favour of pure functions
- Remove DOMParser requirement
- Remove duplicate types
* refactor: implement changes from #462
* chore: lint
* fix: deno support
* fix: render valid xml document
* fix: wrong function call in DashUtils
* fix: typo in parser
Co-authored-by: LuanRT <luan.lrt4@gmail.com>
* refactor!: move streaming info logic into seperate function
This allows users to access the same data available in the dash manifest while also simplifying the manifest generation
* chore: lint
* refactor: readability improvements & fixes
Remove redundant getAudioTrackGroups
General readability improvements in StreamingInfo.ts
Share response object between `getBitrate` and `getMimeType` as to not make duplicate requests
* build: remove unnecessary step in deno build
Co-authored-by: absidue <48293849+absidue@users.noreply.github.com>
* refactor: move types to `types` directory
* docs: add back comments lost during refactor
* chore: lint
---------
Co-authored-by: LuanRT <luan.lrt4@gmail.com>
Co-authored-by: absidue <48293849+absidue@users.noreply.github.com>
Version 1.0.0 has an export order which crashes some webpack environments (at least I came across it when using next.js 13). Updating to 1.1.0 fixes it. A bit more context here https://github.com/LuanRT/YouTube.js/issues/432
* chore(package): update lock file
* chore: lint
---------
Co-authored-by: LuanRT <luan.lrt4@gmail.com>
* feat(Player.ts): append `cver` to deciphered URLs
* refactor(Actions.ts): remove redundant `getVideoInfo` function
This is leftover code from previous versions. It had many problems and it is no longer required.
* fix(Kids.ts): remove unneeded `await` keywords
* dev: add more endpoints
* chore: update deps
* refactor: separate endpoints into files
* dev: improve types
* dev: add more endpoints
* refactor: put clients in a separate directory inside `core`
* chore: lint
* refactor: move mixins and managers to separate folders
* chore: fix tests
* dev: add `CreateVideoEndpoint`
* chore: clean up
* chore: lint
* chore: add some comments
* chore: remove unnecessary test
* dev: add `playlist/CreateEndpoint`
* dev: add `playlist/DeleteEndpoint`
* dev: add `browse/EditPlaylistEndpoint`
* fix(parser): add a few checks to avoid parsing errors
* tests: improve coverage
* refactor: clean up nodes
* chore: lint
* feat(parser): ignore `BrandVideoShelf`
Seems to be used for ads.
* feat(parser): ignore `BrandVideoSingleton` too