VideoPage.fromMap constructor

VideoPage.fromMap(
  1. Map<String, dynamic>? map,
  2. String videoId
)

Implementation

factory VideoPage.fromMap(Map<String, dynamic>? map, String videoId) {
  var likes = map?['results']['results']['contents'][0]
          ['videoPrimaryInfoRenderer']['videoActions']['menuRenderer']
      ['topLevelButtons'][0];

  var views = map?['results']['results']['contents'][0]
          ['videoPrimaryInfoRenderer']['viewCount']['videoViewCountRenderer']
      ['viewCount'];
  var oldViews = map?['results']['results']['contents'][0]
          ['videoPrimaryInfoRenderer']['viewCount']['videoViewCountRenderer']
      ['extraShortViewCount'];

  String? viewers;
  String? likers;

  if (likes == []) {
    likers = '0';
  } else {
    likers = likes['segmentedLikeDislikeButtonViewModel']
                ['likeButtonViewModel']['likeButtonViewModel']
            ['toggleButtonViewModel']['toggleButtonViewModel']
        ['defaultButtonViewModel']['buttonViewModel']['title'];
  }
  if (views != null) {
    viewers = views['simpleText'];
  } else if (oldViews != null) {
    viewers = oldViews['simpleText'];
  } else {
    viewers = map?['results']['results']['contents'][0]
            ['videoPrimaryInfoRenderer']['viewCount']
        ['videoViewCountRenderer']['viewCount']['simpleText'];
  }

  String titleVideo = map?['results']['results']['contents'][0]
          ['videoPrimaryInfoRenderer']['title']['runs'][0]['text'] ??
      '';
  String channelNames = map?['results']['results']['contents'][1]
              ['videoSecondaryInfoRenderer']['owner']['videoOwnerRenderer']
          ['title']['runs'][0]['text'] ??
      '';
  String subscribeCounts = map?['results']?['results']?['contents']?[1]
              ?['videoSecondaryInfoRenderer']?['owner']?['videoOwnerRenderer']
          ?['subscriberCountText']?['simpleText'] ??
      '';
  String descriptions = map?['results']?['results']?['contents']?[1]
              ?['videoSecondaryInfoRenderer']?['attributedDescription']
          ?['content'] ??
      '';
  String dates = map?['results']['results']['contents'][0]
          ['videoPrimaryInfoRenderer']['dateText']['simpleText'] ??
      '';
  String channelThumbs = map?['results']['results']['contents'][1]
              ['videoSecondaryInfoRenderer']['owner']['videoOwnerRenderer']
          ['thumbnail']['thumbnails'][1]['url'] ??
      '';
  String channelIds = map?['results']['results']['contents'][1]
              ['videoSecondaryInfoRenderer']['owner']['videoOwnerRenderer']
          ['navigationEndpoint']['browseEndpoint']['browseId'] ??
      '';

  return VideoPage(
    videoId: videoId,
    title: titleVideo,
    channelName: channelNames,
    viewCount: viewers ?? '',
    subscribeCount: subscribeCounts,
    likeCount: likers ?? '',
    unlikeCount: '',
    description: descriptions,
    date: dates,
    channelThumb: channelThumbs,
    channelId: channelIds,
  );
}