parent
e323a24ba3
commit
477640869a
|
@ -54,30 +54,34 @@ class WatchPage extends YoutubePage<_InitialData> {
|
||||||
root.querySelector('meta[property="og:url"]') != null;
|
root.querySelector('meta[property="og:url"]') != null;
|
||||||
|
|
||||||
///
|
///
|
||||||
int get videoLikeCount => int.parse(_videoLikeExp
|
int get videoLikeCount =>
|
||||||
.firstMatch(root.outerHtml)
|
initialData.likesCount ??
|
||||||
?.group(1)
|
int.parse(_videoLikeExp
|
||||||
?.stripNonDigits()
|
.firstMatch(root.outerHtml)
|
||||||
.nullIfWhitespace ??
|
?.group(1)
|
||||||
root
|
?.stripNonDigits()
|
||||||
.querySelector('.like-button-renderer-like-button')
|
.nullIfWhitespace ??
|
||||||
?.text
|
root
|
||||||
.stripNonDigits()
|
.querySelector('.like-button-renderer-like-button')
|
||||||
.nullIfWhitespace ??
|
?.text
|
||||||
'0');
|
.stripNonDigits()
|
||||||
|
.nullIfWhitespace ??
|
||||||
|
'0');
|
||||||
|
|
||||||
///
|
///
|
||||||
int get videoDislikeCount => int.parse(_videoDislikeExp
|
int get videoDislikeCount =>
|
||||||
.firstMatch(root.outerHtml)
|
initialData.disLikesCount ??
|
||||||
?.group(1)
|
int.parse(_videoDislikeExp
|
||||||
?.stripNonDigits()
|
.firstMatch(root.outerHtml)
|
||||||
.nullIfWhitespace ??
|
?.group(1)
|
||||||
root
|
?.stripNonDigits()
|
||||||
.querySelector('.like-button-renderer-dislike-button')
|
.nullIfWhitespace ??
|
||||||
?.text
|
root
|
||||||
.stripNonDigits()
|
.querySelector('.like-button-renderer-dislike-button')
|
||||||
.nullIfWhitespace ??
|
?.text
|
||||||
'0');
|
.stripNonDigits()
|
||||||
|
.nullIfWhitespace ??
|
||||||
|
'0');
|
||||||
|
|
||||||
String? get commentsContinuation => initialData.commentsContinuation;
|
String? get commentsContinuation => initialData.commentsContinuation;
|
||||||
|
|
||||||
|
@ -159,6 +163,60 @@ class WatchPlayerConfig implements PlayerConfigBase {
|
||||||
class _InitialData extends InitialData {
|
class _InitialData extends InitialData {
|
||||||
_InitialData(JsonMap root) : super(root);
|
_InitialData(JsonMap root) : super(root);
|
||||||
|
|
||||||
|
late final int? likesCount = _getLikes();
|
||||||
|
late final int? disLikesCount = _getDislikes();
|
||||||
|
|
||||||
|
int? _getLikes() {
|
||||||
|
if (root['contents'] != null) {
|
||||||
|
final likes = root
|
||||||
|
.get('contents')
|
||||||
|
?.get('twoColumnWatchNextResults')
|
||||||
|
?.get('results')
|
||||||
|
?.get('results')
|
||||||
|
?.getList('contents')
|
||||||
|
?.firstWhereOrNull((e) => e['videoPrimaryInfoRenderer'] != null)
|
||||||
|
?.get('videoPrimaryInfoRenderer')
|
||||||
|
?.get('videoActions')
|
||||||
|
?.get('menuRenderer')
|
||||||
|
?.getList('topLevelButtons')
|
||||||
|
?.firstWhereOrNull((e) => e['toggleButtonRenderer'] != null)
|
||||||
|
?.get('toggleButtonRenderer')
|
||||||
|
?.get('defaultText')
|
||||||
|
?.get('accessibility')
|
||||||
|
?.get('accessibilityData')
|
||||||
|
?.getT<String>('label');
|
||||||
|
|
||||||
|
return likes.parseInt();
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
int? _getDislikes() {
|
||||||
|
if (root['contents'] != null) {
|
||||||
|
final likes = root
|
||||||
|
.get('contents')
|
||||||
|
?.get('twoColumnWatchNextResults')
|
||||||
|
?.get('results')
|
||||||
|
?.get('results')
|
||||||
|
?.getList('contents')
|
||||||
|
?.firstWhereOrNull((e) => e['videoPrimaryInfoRenderer'] != null)
|
||||||
|
?.get('videoPrimaryInfoRenderer')
|
||||||
|
?.get('videoActions')
|
||||||
|
?.get('menuRenderer')
|
||||||
|
?.getList('topLevelButtons')
|
||||||
|
?.where((e) => e['toggleButtonRenderer'] != null)
|
||||||
|
.elementAtSafe(1)
|
||||||
|
?.get('toggleButtonRenderer')
|
||||||
|
?.get('defaultText')
|
||||||
|
?.get('accessibility')
|
||||||
|
?.get('accessibilityData')
|
||||||
|
?.getT<String>('label');
|
||||||
|
|
||||||
|
return likes.parseInt();
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
JsonMap? getContinuationContext() {
|
JsonMap? getContinuationContext() {
|
||||||
if (root['contents'] != null) {
|
if (root['contents'] != null) {
|
||||||
return root
|
return root
|
||||||
|
@ -167,8 +225,8 @@ class _InitialData extends InitialData {
|
||||||
?.get('results')
|
?.get('results')
|
||||||
?.get('results')
|
?.get('results')
|
||||||
?.getList('contents')
|
?.getList('contents')
|
||||||
?.firstWhere((e) => e['itemSectionRenderer'] != null)
|
?.firstWhereOrNull((e) => e['itemSectionRenderer'] != null)
|
||||||
.get('itemSectionRenderer')
|
?.get('itemSectionRenderer')
|
||||||
?.getList('contents')
|
?.getList('contents')
|
||||||
?.firstOrNull
|
?.firstOrNull
|
||||||
?.get('continuationItemRenderer')
|
?.get('continuationItemRenderer')
|
||||||
|
|
|
@ -96,8 +96,7 @@ class PlayerResponse {
|
||||||
late final List<StreamInfoProvider> muxedStreams = root
|
late final List<StreamInfoProvider> muxedStreams = root
|
||||||
.get('streamingData')
|
.get('streamingData')
|
||||||
?.getList('formats')
|
?.getList('formats')
|
||||||
?.where((e) => e['url'] != null)
|
?.map((e) => _StreamInfo(e, StreamSource.muxed))
|
||||||
.map((e) => _StreamInfo(e, StreamSource.muxed))
|
|
||||||
.cast<StreamInfoProvider>()
|
.cast<StreamInfoProvider>()
|
||||||
.toList() ??
|
.toList() ??
|
||||||
const <StreamInfoProvider>[];
|
const <StreamInfoProvider>[];
|
||||||
|
|
Loading…
Reference in New Issue