* 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>
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.
* 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`).
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.
* 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>
* fix(VideoInfo.ts): reimplement `get music_tracks`
- Add parser classes to parse needed data
- Add `CarouselLockup`
- Add `EngagementPanelSectionList`
- Add `InfoRow`
- Add `StructuredDescriptionContent`
- Add `VideoDescriptionMusicSection`
- Add `VideoDescriptionHeader`
- Add `Factoid`
- Add `ExpandableVideoDescriptionBody`
- Add `AdsEngagementPanelContent`
- Add `engagement_panels` to raw and parsed next responses
- Add `engagement_panels` parsing code to `parser.ts`
* Check for song inside of video_lockup first before checking info_rows
* Add support for pulling artist ids out of music_tracks
- Add support for WRITERS InfoRow
- Check for video id inside of naviagation endpoint on info_row metadata
* Add `AdsEngagementPanelContent` to ignore list
* Switch `map => parseItem` to `parseArray`
* Use `Text` && `NavigationEndpoint`
* Replace `String` with `Text` in `ExpandableVideoDescriptionBody`
* 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
* refactor: move common info into MediaInfo
* refactor: better inference on Memo
* refactor: improved typesafety in parser methods
* refactor: remove PlaylistAuthor in favor of Author
* refactor: cleanup live chat parsers
- Replace non standard author type with Author class
- Remove redundant code
* fix: new errors due to changes
* fix: pass actions to FormatUtils#toDash
* refactor!: merge NavigatableText and Text into single class