Video.fromMap constructor

Video.fromMap(
  1. Map<String, dynamic>? map
)

Implementation

factory Video.fromMap(Map<String, dynamic>? map) {
  List<Thumbnail>? thumbnails;
  print("AYAHSUJANA map ===>>> $map");
  if (map?.containsKey("richItemRenderer") ?? false) {
    //video channel
    var uploadDate = map?['richItemRenderer']['content']['videoRenderer']
        ?['publishedTimeText'];
    var lengthText =
        map?['richItemRenderer']['content']['videoRenderer']?['lengthText'];
    thumbnails = [];
    map?['richItemRenderer']['content']['videoRenderer']['thumbnail']
            ['thumbnails']
        .forEach((thumbnail) {
      thumbnails!.add(Thumbnail(
          url: thumbnail['url'],
          width: thumbnail['width'],
          height: thumbnail['height']));
    });
    var viewtext = map?['richItemRenderer']?['content']?['videoRenderer']
        ?['shortViewCountText']?['runs'];
    String? uploadDates;
    String? viewers;
    if (uploadDate != null) {
      uploadDates = uploadDate['simpleText'];
    } else {
      uploadDates = '';
    }
    if (viewtext != null) {
      viewers = viewtext[0]['text'] + viewtext[1]['text'];
    } else {
      viewers = map?['richItemRenderer']?['content']?['videoRenderer']
          ?['shortViewCountText']?['simpleText'];
    }
    return Video(
      videoId: map?['richItemRenderer']['content']['videoRenderer']
              ?['videoId'] ??
          '',
      duration: lengthText?['simpleText'] ?? '',
      title: map?['richItemRenderer']['content']['videoRenderer']?['title']
              ?['runs']?[0]?['text'] ??
          '',
      channelName: '',
      thumbnails: thumbnails,
      views: viewers ?? '',
      uploadDate: uploadDates ?? '',
    );
  } else if (map?.containsKey("videoRenderer") ?? false) {
    //Trending and search videos
    var uploadDate = map?['videoRenderer']?['publishedTimeText'];
    var lengthText = map?['videoRenderer']?['lengthText'];
    var simpleText =
        map?['videoRenderer']?['shortViewCountText']?['simpleText'];
    thumbnails = [];
    map?['videoRenderer']['thumbnail']['thumbnails'].forEach((thumbnail) {
      thumbnails!.add(Thumbnail(
          url: thumbnail['url'],
          width: thumbnail['width'],
          height: thumbnail['height']));
    });
    String? uploadDates;
    if (uploadDate != null) {
      uploadDates = uploadDate?['simpleText'];
    } else {
      uploadDates = '';
    }
    return Video(
        videoId: map?['videoRenderer']?['videoId'] ?? '',
        duration:
            (lengthText == null) ? 'LIVE' : lengthText?['simpleText'] ?? '',
        title: map?['videoRenderer']?['title']?['runs']?[0]?['text'] ?? '',
        channelName:
            map?['videoRenderer']['longBylineText']['runs'][0]['text'] ?? '',
        thumbnails: thumbnails,
        views: (lengthText == null)
            ? "Views ${map!['videoRenderer']['viewCountText']['runs'][0]['text']}"
            : simpleText,
        uploadDate: uploadDates ?? '');
  } else if (map?.containsKey("compactVideoRenderer") ?? false) {
    //Related videos

    String? videoId;
    String? title;
    String? duration;
    thumbnails = [];
    String? channelName;
    String? views;
    String? uploadDates;

    videoId = map?['compactVideoRenderer']?['videoId'];
    //print("AYAHSUJANA videoId ===>>> $videoId");
    title = map?['compactVideoRenderer']?['title']?['simpleText'];
    var lengthText = map?['compactVideoRenderer']?['lengthText'];
    duration = (lengthText == null) ? 'LIVE' : lengthText?['simpleText'];

    map?['compactVideoRenderer']['thumbnail']['thumbnails']
        .forEach((thumbnail) {
      thumbnails!.add(Thumbnail(
          url: thumbnail['url'],
          width: thumbnail['width'],
          height: thumbnail['height']));
    });

    channelName = map?['compactVideoRenderer']?['shortBylineText']?['runs']
        ?[0]?['text'];

    var viewtext =
        map?['compactVideoRenderer']?['shortViewCountText']?['runs'];
    if (viewtext != null) {
      views = viewtext?[0]['text'] + viewtext?[1]['text'];
    } else {
      views =
          map?['compactVideoRenderer']?['shortViewCountText']?['simpleText'];
    }

    var uploadDate = map?['compactVideoRenderer']['publishedTimeText'];
    if (uploadDate != null) {
      uploadDates = uploadDate?['simpleText'];
    } else {
      uploadDates = '';
    }

  // print("AYAHSUJANA videoId ===>>> $videoId");
  // print("AYAHSUJANA title ===>>> $title");
  // print("AYAHSUJANA duration ===>>> $duration");
  // print("AYAHSUJANA thumbnail ===>>> $thumbnails");
  // print("AYAHSUJANA channelName ===>>> $channelName");
  // print("AYAHSUJANA views ===>>> $views");
  // print("AYAHSUJANA uploadDates ===>>> $uploadDates");
  // print("AYAHSUJANA ==========================================================");

    return Video(
      videoId: videoId ?? '',
      title: title ?? '',
      duration: duration ?? '',
      thumbnails: thumbnails,
      channelName: channelName ?? '',
      views: views ?? '',
      uploadDate: uploadDates,
    );
  } else if (map?.containsKey("gridVideoRenderer") ?? false) {
    String? simpleText =
        map?['gridVideoRenderer']['shortViewCountText']?['simpleText'];
    thumbnails = [];
    map?['gridVideoRenderer']['thumbnail']['thumbnails'].forEach((thumbnail) {
      thumbnails!.add(Thumbnail(
          url: thumbnail['url'],
          width: thumbnail['width'],
          height: thumbnail['height']));
    });
    return Video(
        videoId: map?['gridVideoRenderer']['videoId'],
        title: map?['gridVideoRenderer']['title']['runs'][0]['text'],
        duration: map?['gridVideoRenderer']['thumbnailOverlays'][0]
            ['thumbnailOverlayTimeStatusRenderer']['text']['simpleText'],
        thumbnails: thumbnails,
        views: (simpleText != null) ? simpleText : "???");
  } else if (map?.containsKey("playlistVideoRenderer") ?? false) {
    var uploadDate = map?['playlistVideoRenderer']?['publishedTimeText'];
    thumbnails = [];
    map?['playlistVideoRenderer']['thumbnail']['thumbnails']
        .forEach((thumbnail) {
      thumbnails!.add(Thumbnail(
          url: thumbnail['url'],
          width: thumbnail['width'],
          height: thumbnail['height']));
    });
    String? uploadDates;
    if (uploadDate != null) {
      uploadDates = uploadDate;
    } else {
      uploadDates = '';
    }
    return Video(
        videoId: map?['playlistVideoRenderer']['videoId'],
        title: map?['playlistVideoRenderer']['title']['runs'][0]['text'],
        duration: map?['playlistVideoRenderer']['thumbnailOverlays'][0]
            ['thumbnailOverlayTimeStatusRenderer']['text']['simpleText'],
        thumbnails: thumbnails,
        views: map?['playlistVideoRenderer']['title']['accessibility']
            ['accessibilityData']['label'],
        uploadDate: uploadDates);
  }
  return Video();
}