import 'package:PiliPlus/models/video_detail/argue_info.dart'; import 'package:PiliPlus/models/video_detail/desc_v2.dart'; import 'package:PiliPlus/models/video_detail/dimension.dart'; import 'package:PiliPlus/models/video_detail/owner.dart'; import 'package:PiliPlus/models/video_detail/page.dart'; import 'package:PiliPlus/models/video_detail/rights.dart'; import 'package:PiliPlus/models/video_detail/staff.dart'; import 'package:PiliPlus/models/video_detail/stat.dart'; import 'package:PiliPlus/models/video_detail/subtitle.dart'; import 'package:PiliPlus/models/video_detail/ugc_season.dart'; import 'package:PiliPlus/models/video_detail/user_garb.dart'; import 'package:PiliPlus/utils/app_scheme.dart'; class VideoDetailData { String? bvid; int? aid; int? videos; int? tid; int? tidV2; String? tname; String? tnameV2; int? copyright; String? pic; String? title; int? pubdate; int? ctime; String? desc; List? descV2; int? state; int? duration; Rights? rights; Owner? owner; Stat? stat; ArgueInfo? argueInfo; String? dynam1c; int? cid; Dimension? dimension; int? seasonId; int? teenageMode; bool? isChargeableSeason; bool? isStory; bool? isUpowerExclusive; bool? isUpowerPlay; bool? isUpowerPreview; int? enableVt; String? vtDisplay; bool? isUpowerExclusiveWithQa; bool? noCache; List? pages; Subtitle? subtitle; UgcSeason? ugcSeason; bool? isSeasonDisplay; UserGarb? userGarb; String? likeIcon; bool? needJumpBv; bool? disableShowUpInfo; int? isStoryPlay; bool? isViewSelf; String? epId; List? staff; bool isPageReversed = false; VideoDetailData({ this.bvid, this.aid, this.videos, this.tid, this.tidV2, this.tname, this.tnameV2, this.copyright, this.pic, this.title, this.pubdate, this.ctime, this.desc, this.descV2, this.state, this.duration, this.rights, this.owner, this.stat, this.argueInfo, this.dynam1c, this.cid, this.dimension, this.seasonId, this.teenageMode, this.isChargeableSeason, this.isStory, this.isUpowerExclusive, this.isUpowerPlay, this.isUpowerPreview, this.enableVt, this.vtDisplay, this.isUpowerExclusiveWithQa, this.noCache, this.pages, this.subtitle, this.ugcSeason, this.isSeasonDisplay, this.userGarb, this.likeIcon, this.needJumpBv, this.disableShowUpInfo, this.isStoryPlay, this.isViewSelf, this.epId, this.staff, }); factory VideoDetailData.fromJson(Map json) => VideoDetailData( bvid: json['bvid'] as String?, aid: json['aid'] as int?, videos: json['videos'] as int?, tid: json['tid'] as int?, tidV2: json['tid_v2'] as int?, tname: json['tname'] as String?, tnameV2: json['tname_v2'] as String?, copyright: json['copyright'] as int?, pic: json['pic'] as String?, title: json['title'] as String?, pubdate: json['pubdate'] as int?, ctime: json['ctime'] as int?, desc: json['desc'] as String?, descV2: (json['desc_v2'] as List?) ?.map((e) => DescV2.fromJson(e as Map)) .toList(), state: json['state'] as int?, duration: json['duration'] as int?, rights: json['rights'] == null ? null : Rights.fromJson(json['rights'] as Map), owner: json['owner'] == null ? null : Owner.fromJson(json['owner'] as Map), stat: json['stat'] == null ? null : Stat.fromJson(json['stat'] as Map), argueInfo: json['argue_info'] == null ? null : ArgueInfo.fromJson(json['argue_info'] as Map), dynam1c: json['dynamic'] as String?, cid: json['cid'] as int?, dimension: json['dimension'] == null ? null : Dimension.fromJson(json['dimension'] as Map), seasonId: json['season_id'] as int?, teenageMode: json['teenage_mode'] as int?, isChargeableSeason: json['is_chargeable_season'] as bool?, isStory: json['is_story'] as bool?, isUpowerExclusive: json['is_upower_exclusive'] as bool?, isUpowerPlay: json['is_upower_play'] as bool?, isUpowerPreview: json['is_upower_preview'] as bool?, enableVt: json['enable_vt'] as int?, vtDisplay: json['vt_display'] as String?, isUpowerExclusiveWithQa: json['is_upower_exclusive_with_qa'] as bool?, noCache: json['no_cache'] as bool?, pages: (json['pages'] as List?) ?.map((e) => Part.fromJson(e as Map)) .toList(), subtitle: json['subtitle'] == null ? null : Subtitle.fromJson(json['subtitle'] as Map), ugcSeason: json['ugc_season'] == null ? null : UgcSeason.fromJson(json['ugc_season'] as Map), isSeasonDisplay: json['is_season_display'] as bool?, userGarb: json['user_garb'] == null ? null : UserGarb.fromJson(json['user_garb'] as Map), likeIcon: json['like_icon'] as String?, needJumpBv: json['need_jump_bv'] as bool?, disableShowUpInfo: json['disable_show_up_info'] as bool?, isStoryPlay: json['is_story_play'] as int?, isViewSelf: json['is_view_self'] as bool?, staff: (json["staff"] as List?) ?.map((item) => Staff.fromJson(item)) .toList(), epId: json['redirect_url'] == null ? null : PiliScheme.uriDigitRegExp .firstMatch(json['redirect_url']) ?.group(1), ); }