parent
e323a24ba3
commit
477640869a
|
@ -54,7 +54,9 @@ class WatchPage extends YoutubePage<_InitialData> {
|
|||
root.querySelector('meta[property="og:url"]') != null;
|
||||
|
||||
///
|
||||
int get videoLikeCount => int.parse(_videoLikeExp
|
||||
int get videoLikeCount =>
|
||||
initialData.likesCount ??
|
||||
int.parse(_videoLikeExp
|
||||
.firstMatch(root.outerHtml)
|
||||
?.group(1)
|
||||
?.stripNonDigits()
|
||||
|
@ -67,7 +69,9 @@ class WatchPage extends YoutubePage<_InitialData> {
|
|||
'0');
|
||||
|
||||
///
|
||||
int get videoDislikeCount => int.parse(_videoDislikeExp
|
||||
int get videoDislikeCount =>
|
||||
initialData.disLikesCount ??
|
||||
int.parse(_videoDislikeExp
|
||||
.firstMatch(root.outerHtml)
|
||||
?.group(1)
|
||||
?.stripNonDigits()
|
||||
|
@ -159,6 +163,60 @@ class WatchPlayerConfig implements PlayerConfigBase {
|
|||
class _InitialData extends InitialData {
|
||||
_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() {
|
||||
if (root['contents'] != null) {
|
||||
return root
|
||||
|
@ -167,8 +225,8 @@ class _InitialData extends InitialData {
|
|||
?.get('results')
|
||||
?.get('results')
|
||||
?.getList('contents')
|
||||
?.firstWhere((e) => e['itemSectionRenderer'] != null)
|
||||
.get('itemSectionRenderer')
|
||||
?.firstWhereOrNull((e) => e['itemSectionRenderer'] != null)
|
||||
?.get('itemSectionRenderer')
|
||||
?.getList('contents')
|
||||
?.firstOrNull
|
||||
?.get('continuationItemRenderer')
|
||||
|
|
|
@ -96,8 +96,7 @@ class PlayerResponse {
|
|||
late final List<StreamInfoProvider> muxedStreams = root
|
||||
.get('streamingData')
|
||||
?.getList('formats')
|
||||
?.where((e) => e['url'] != null)
|
||||
.map((e) => _StreamInfo(e, StreamSource.muxed))
|
||||
?.map((e) => _StreamInfo(e, StreamSource.muxed))
|
||||
.cast<StreamInfoProvider>()
|
||||
.toList() ??
|
||||
const <StreamInfoProvider>[];
|
||||
|
|
Loading…
Reference in New Issue