opt models

Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
bggRGjQaUbCoE
2025-06-04 15:20:35 +08:00
parent f50b1d2beb
commit b960359a39
858 changed files with 11000 additions and 12588 deletions

View File

@@ -0,0 +1,32 @@
import 'package:PiliPlus/models_new/video/video_ai_conclusion/model_result.dart';
class AiConclusionData {
int? code;
AiConclusionResult? modelResult;
String? stid;
int? status;
int? likeNum;
int? dislikeNum;
AiConclusionData({
this.code,
this.modelResult,
this.stid,
this.status,
this.likeNum,
this.dislikeNum,
});
factory AiConclusionData.fromJson(Map<String, dynamic> json) =>
AiConclusionData(
code: json['code'] as int?,
modelResult: json['model_result'] == null
? null
: AiConclusionResult.fromJson(
json['model_result'] as Map<String, dynamic>),
stid: json['stid'] as String?,
status: json['status'] as int?,
likeNum: json['like_num'] as int?,
dislikeNum: json['dislike_num'] as int?,
);
}

View File

@@ -0,0 +1,24 @@
import 'package:PiliPlus/models_new/video/video_ai_conclusion/outline.dart';
import 'package:PiliPlus/models_new/video/video_ai_conclusion/subtitle.dart';
class AiConclusionResult {
int? resultType;
String? summary;
List<Outline>? outline;
List<Subtitle>? subtitle;
AiConclusionResult(
{this.resultType, this.summary, this.outline, this.subtitle});
factory AiConclusionResult.fromJson(Map<String, dynamic> json) =>
AiConclusionResult(
resultType: json['result_type'] as int?,
summary: json['summary'] as String?,
outline: (json['outline'] as List<dynamic>?)
?.map((e) => Outline.fromJson(e as Map<String, dynamic>))
.toList(),
subtitle: (json['subtitle'] as List<dynamic>?)
?.map((e) => Subtitle.fromJson(e as Map<String, dynamic>))
.toList(),
);
}

View File

@@ -0,0 +1,17 @@
import 'package:PiliPlus/models_new/video/video_ai_conclusion/part_outline.dart';
class Outline {
String? title;
List<PartOutline>? partOutline;
int? timestamp;
Outline({this.title, this.partOutline, this.timestamp});
factory Outline.fromJson(Map<String, dynamic> json) => Outline(
title: json['title'] as String?,
partOutline: (json['part_outline'] as List<dynamic>?)
?.map((e) => PartOutline.fromJson(e as Map<String, dynamic>))
.toList(),
timestamp: json['timestamp'] as int?,
);
}

View File

@@ -0,0 +1,11 @@
class PartOutline {
int? timestamp;
String? content;
PartOutline({this.timestamp, this.content});
factory PartOutline.fromJson(Map<String, dynamic> json) => PartOutline(
timestamp: json['timestamp'] as int?,
content: json['content'] as String?,
);
}

View File

@@ -0,0 +1,13 @@
class PartSubtitle {
int? startTimestamp;
int? endTimestamp;
String? content;
PartSubtitle({this.startTimestamp, this.endTimestamp, this.content});
factory PartSubtitle.fromJson(Map<String, dynamic> json) => PartSubtitle(
startTimestamp: json['start_timestamp'] as int?,
endTimestamp: json['end_timestamp'] as int?,
content: json['content'] as String?,
);
}

View File

@@ -0,0 +1,17 @@
import 'package:PiliPlus/models_new/video/video_ai_conclusion/part_subtitle.dart';
class Subtitle {
String? title;
List<PartSubtitle>? partSubtitle;
int? timestamp;
Subtitle({this.title, this.partSubtitle, this.timestamp});
factory Subtitle.fromJson(Map<String, dynamic> json) => Subtitle(
title: json['title'] as String?,
partSubtitle: (json['part_subtitle'] as List<dynamic>?)
?.map((e) => PartSubtitle.fromJson(e as Map<String, dynamic>))
.toList(),
timestamp: json['timestamp'] as int?,
);
}

View File

@@ -0,0 +1,93 @@
import 'package:PiliPlus/models/model_owner.dart';
import 'package:PiliPlus/models_new/video/video_detail/dimension.dart';
import 'package:PiliPlus/models_new/video/video_detail/rights.dart';
import 'package:PiliPlus/models_new/video/video_detail/stat.dart';
class Arc {
int? aid;
int? videos;
int? typeId;
String? typeName;
int? copyright;
String? pic;
String? title;
int? pubdate;
int? ctime;
String? desc;
int? state;
int? duration;
Rights? rights;
Owner? author;
Stat? stat;
String? dynam1c;
Dimension? dimension;
bool? isChargeableSeason;
bool? isBlooper;
int? enableVt;
String? vtDisplay;
int? typeIdV2;
String? typeNameV2;
int? isLessonVideo;
Arc({
this.aid,
this.videos,
this.typeId,
this.typeName,
this.copyright,
this.pic,
this.title,
this.pubdate,
this.ctime,
this.desc,
this.state,
this.duration,
this.rights,
this.author,
this.stat,
this.dynam1c,
this.dimension,
this.isChargeableSeason,
this.isBlooper,
this.enableVt,
this.vtDisplay,
this.typeIdV2,
this.typeNameV2,
this.isLessonVideo,
});
factory Arc.fromJson(Map<String, dynamic> json) => Arc(
aid: json['aid'] as int?,
videos: json['videos'] as int?,
typeId: json['type_id'] as int?,
typeName: json['type_name'] 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?,
state: json['state'] as int?,
duration: json['duration'] as int?,
rights: json['rights'] == null
? null
: Rights.fromJson(json['rights'] as Map<String, dynamic>),
author: json['author'] == null
? null
: Owner.fromJson(json['author'] as Map<String, dynamic>),
stat: json['stat'] == null
? null
: Stat.fromJson(json['stat'] as Map<String, dynamic>),
dynam1c: json['dynamic'] as String?,
dimension: json['dimension'] == null
? null
: Dimension.fromJson(json['dimension'] as Map<String, dynamic>),
isChargeableSeason: json['is_chargeable_season'] as bool?,
isBlooper: json['is_blooper'] as bool?,
enableVt: json['enable_vt'] as int?,
vtDisplay: json['vt_display'] as String?,
typeIdV2: json['type_id_v2'] as int?,
typeNameV2: json['type_name_v2'] as String?,
isLessonVideo: json['is_lesson_video'] as int?,
);
}

View File

@@ -0,0 +1,13 @@
class ArgueInfo {
String? argueMsg;
int? argueType;
String? argueLink;
ArgueInfo({this.argueMsg, this.argueType, this.argueLink});
factory ArgueInfo.fromJson(Map<String, dynamic> json) => ArgueInfo(
argueMsg: json['argue_msg'] as String?,
argueType: json['argue_type'] as int?,
argueLink: json['argue_link'] as String?,
);
}

View File

@@ -0,0 +1,187 @@
import 'package:PiliPlus/models_new/video/video_detail/argue_info.dart';
import 'package:PiliPlus/models_new/video/video_detail/desc_v2.dart';
import 'package:PiliPlus/models_new/video/video_detail/dimension.dart';
import 'package:PiliPlus/models_new/video/video_detail/owner.dart';
import 'package:PiliPlus/models_new/video/video_detail/page.dart';
import 'package:PiliPlus/models_new/video/video_detail/rights.dart';
import 'package:PiliPlus/models_new/video/video_detail/staff.dart';
import 'package:PiliPlus/models_new/video/video_detail/stat.dart';
import 'package:PiliPlus/models_new/video/video_detail/subtitle.dart';
import 'package:PiliPlus/models_new/video/video_detail/ugc_season.dart';
import 'package:PiliPlus/models_new/video/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>? 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<Part>? pages;
Subtitle? subtitle;
UgcSeason? ugcSeason;
bool? isSeasonDisplay;
UserGarb? userGarb;
String? likeIcon;
bool? needJumpBv;
bool? disableShowUpInfo;
int? isStoryPlay;
bool? isViewSelf;
String? epId;
List<Staff>? 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<String, dynamic> 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<dynamic>?)
?.map((e) => DescV2.fromJson(e as Map<String, dynamic>))
.toList(),
state: json['state'] as int?,
duration: json['duration'] as int?,
rights: json['rights'] == null
? null
: Rights.fromJson(json['rights'] as Map<String, dynamic>),
owner: json['owner'] == null
? null
: Owner.fromJson(json['owner'] as Map<String, dynamic>),
stat: json['stat'] == null
? null
: Stat.fromJson(json['stat'] as Map<String, dynamic>),
argueInfo: json['argue_info'] == null
? null
: ArgueInfo.fromJson(json['argue_info'] as Map<String, dynamic>),
dynam1c: json['dynamic'] as String?,
cid: json['cid'] as int?,
dimension: json['dimension'] == null
? null
: Dimension.fromJson(json['dimension'] as Map<String, dynamic>),
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<dynamic>?)
?.map((e) => Part.fromJson(e as Map<String, dynamic>))
.toList(),
subtitle: json['subtitle'] == null
? null
: Subtitle.fromJson(json['subtitle'] as Map<String, dynamic>),
ugcSeason: json['ugc_season'] == null
? null
: UgcSeason.fromJson(json['ugc_season'] as Map<String, dynamic>),
isSeasonDisplay: json['is_season_display'] as bool?,
userGarb: json['user_garb'] == null
? null
: UserGarb.fromJson(json['user_garb'] as Map<String, dynamic>),
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),
);
}

View File

@@ -0,0 +1,13 @@
class DescV2 {
String? rawText;
int? type;
int? bizId;
DescV2({this.rawText, this.type, this.bizId});
factory DescV2.fromJson(Map<String, dynamic> json) => DescV2(
rawText: json['raw_text'] as String?,
type: json['type'] as int?,
bizId: json['biz_id'] as int?,
);
}

View File

@@ -0,0 +1,13 @@
class Dimension {
int? width;
int? height;
int? rotate;
Dimension({this.width, this.height, this.rotate});
factory Dimension.fromJson(Map<String, dynamic> json) => Dimension(
width: json['width'] as int?,
height: json['height'] as int?,
rotate: json['rotate'] as int?,
);
}

View File

@@ -0,0 +1,53 @@
import 'package:PiliPlus/models_new/video/video_detail/arc.dart';
import 'package:PiliPlus/models_new/video/video_detail/page.dart';
class EpisodeItem {
int? seasonId;
int? sectionId;
int? id;
int? aid;
int? cid;
String? title;
int? attribute;
Arc? arc;
Part? page;
String? bvid;
List<Part>? pages;
String? badge;
EpisodeItem({
this.seasonId,
this.sectionId,
this.id,
this.aid,
this.cid,
this.title,
this.attribute,
this.arc,
this.page,
this.bvid,
this.pages,
this.badge,
});
factory EpisodeItem.fromJson(Map<String, dynamic> json) => EpisodeItem(
seasonId: json['season_id'] as int?,
sectionId: json['section_id'] as int?,
id: json['id'] as int?,
aid: json['aid'] as int?,
cid: json['cid'] as int?,
title: json['title'] as String?,
attribute: json['attribute'] as int?,
arc: json['arc'] == null
? null
: Arc.fromJson(json['arc'] as Map<String, dynamic>),
page: json['page'] == null
? null
: Part.fromJson(json['page'] as Map<String, dynamic>),
bvid: json['bvid'] as String?,
pages: (json['pages'] as List<dynamic>?)
?.map((e) => Part.fromJson(e as Map<String, dynamic>))
.toList(),
badge: json['badge'],
);
}

View File

@@ -0,0 +1,13 @@
class Owner {
int? mid;
String? name;
String? face;
Owner({this.mid, this.name, this.face});
factory Owner.fromJson(Map<String, dynamic> json) => Owner(
mid: json['mid'] as int?,
name: json['name'] as String?,
face: json['face'] as String?,
);
}

View File

@@ -0,0 +1,45 @@
import 'package:PiliPlus/models_new/video/video_detail/dimension.dart';
class Part {
int? cid;
int? page;
String? from;
String? pagePart;
int? duration;
String? vid;
String? weblink;
Dimension? dimension;
int? ctime;
String? firstFrame;
String? badge;
Part({
this.cid,
this.page,
this.from,
this.pagePart,
this.duration,
this.vid,
this.weblink,
this.dimension,
this.ctime,
this.firstFrame,
this.badge,
});
factory Part.fromJson(Map<String, dynamic> json) => Part(
cid: json['cid'] as int?,
page: json['page'] as int?,
from: json['from'] as String?,
pagePart: json['part'] as String?,
duration: json['duration'] as int?,
vid: json['vid'] as String?,
weblink: json['weblink'] as String?,
dimension: json['dimension'] == null
? null
: Dimension.fromJson(json['dimension'] as Map<String, dynamic>),
ctime: json['ctime'] as int?,
firstFrame: json['first_frame'] as String?,
badge: json["badge"],
);
}

View File

@@ -0,0 +1,62 @@
class Rights {
int? bp;
int? elec;
int? download;
int? movie;
int? pay;
int? hd5;
int? noReprint;
int? autoplay;
int? ugcPay;
int? isCooperation;
int? ugcPayPreview;
int? noBackground;
int? cleanMode;
int? isSteinGate;
int? is360;
int? noShare;
int? arcPay;
int? freeWatch;
Rights({
this.bp,
this.elec,
this.download,
this.movie,
this.pay,
this.hd5,
this.noReprint,
this.autoplay,
this.ugcPay,
this.isCooperation,
this.ugcPayPreview,
this.noBackground,
this.cleanMode,
this.isSteinGate,
this.is360,
this.noShare,
this.arcPay,
this.freeWatch,
});
factory Rights.fromJson(Map<String, dynamic> json) => Rights(
bp: json['bp'] as int?,
elec: json['elec'] as int?,
download: json['download'] as int?,
movie: json['movie'] as int?,
pay: json['pay'] as int?,
hd5: json['hd5'] as int?,
noReprint: json['no_reprint'] as int?,
autoplay: json['autoplay'] as int?,
ugcPay: json['ugc_pay'] as int?,
isCooperation: json['is_cooperation'] as int?,
ugcPayPreview: json['ugc_pay_preview'] as int?,
noBackground: json['no_background'] as int?,
cleanMode: json['clean_mode'] as int?,
isSteinGate: json['is_stein_gate'] as int?,
is360: json['is_360'] as int?,
noShare: json['no_share'] as int?,
arcPay: json['arc_pay'] as int?,
freeWatch: json['free_watch'] as int?,
);
}

View File

@@ -0,0 +1,22 @@
import 'package:PiliPlus/models_new/video/video_detail/episode.dart';
class SectionItem {
int? seasonId;
int? id;
String? title;
int? type;
List<EpisodeItem>? episodes;
bool isReversed = false;
SectionItem({this.seasonId, this.id, this.title, this.type, this.episodes});
factory SectionItem.fromJson(Map<String, dynamic> json) => SectionItem(
seasonId: json['season_id'] as int?,
id: json['id'] as int?,
title: json['title'] as String?,
type: json['type'] as int?,
episodes: (json['episodes'] as List<dynamic>?)
?.map((e) => EpisodeItem.fromJson(e as Map<String, dynamic>))
.toList(),
);
}

View File

@@ -0,0 +1,29 @@
import 'package:PiliPlus/models/model_avatar.dart';
class Staff {
dynamic mid;
String? title;
String? name;
String? face;
Vip? vip;
BaseOfficialVerify? official;
Staff({
this.mid,
this.title,
this.name,
this.face,
this.vip,
});
Staff.fromJson(Map<String, dynamic> json) {
mid = json["mid"];
title = json["title"];
name = json["name"];
face = json["face"];
vip = json["vip"] == null ? null : Vip.fromJson(json["vip"]);
official = json['official'] == null
? null
: BaseOfficialVerify.fromJson(json['official']);
}
}

View File

@@ -0,0 +1,47 @@
class Stat {
int? aid;
int? view;
int? danmaku;
int? reply;
int? favorite;
int? coin;
int? share;
int? nowRank;
int? hisRank;
int? like;
int? dislike;
String? evaluation;
int? vt;
Stat({
this.aid,
this.view,
this.danmaku,
this.reply,
this.favorite,
this.coin,
this.share,
this.nowRank,
this.hisRank,
this.like,
this.dislike,
this.evaluation,
this.vt,
});
factory Stat.fromJson(Map<String, dynamic> json) => Stat(
aid: json['aid'] as int?,
view: json['view'] as int?,
danmaku: json['danmaku'] as int?,
reply: json['reply'] as int?,
favorite: json['favorite'] as int?,
coin: json['coin'] as int?,
share: json['share'] as int?,
nowRank: json['now_rank'] as int?,
hisRank: json['his_rank'] as int?,
like: json['like'] as int?,
dislike: json['dislike'] as int?,
evaluation: json['evaluation'] as String?,
vt: json['vt'] as int?,
);
}

View File

@@ -0,0 +1,11 @@
class Subtitle {
bool? allowSubmit;
List<dynamic>? list;
Subtitle({this.allowSubmit, this.list});
factory Subtitle.fromJson(Map<String, dynamic> json) => Subtitle(
allowSubmit: json['allow_submit'] as bool?,
list: json['list'] as List<dynamic>?,
);
}

View File

@@ -0,0 +1,54 @@
import 'package:PiliPlus/models_new/video/video_detail/section.dart';
import 'package:PiliPlus/models_new/video/video_detail/stat.dart';
class UgcSeason {
int? id;
String? title;
String? cover;
int? mid;
String? intro;
int? signState;
int? attribute;
List<SectionItem>? sections;
Stat? stat;
int? epCount;
int? seasonType;
bool? isPaySeason;
int? enableVt;
UgcSeason({
this.id,
this.title,
this.cover,
this.mid,
this.intro,
this.signState,
this.attribute,
this.sections,
this.stat,
this.epCount,
this.seasonType,
this.isPaySeason,
this.enableVt,
});
factory UgcSeason.fromJson(Map<String, dynamic> json) => UgcSeason(
id: json['id'] as int?,
title: json['title'] as String?,
cover: json['cover'] as String?,
mid: json['mid'] as int?,
intro: json['intro'] as String?,
signState: json['sign_state'] as int?,
attribute: json['attribute'] as int?,
sections: (json['sections'] as List<dynamic>?)
?.map((e) => SectionItem.fromJson(e as Map<String, dynamic>))
.toList(),
stat: json['stat'] == null
? null
: Stat.fromJson(json['stat'] as Map<String, dynamic>),
epCount: json['ep_count'] as int?,
seasonType: json['season_type'] as int?,
isPaySeason: json['is_pay_season'] as bool?,
enableVt: json['enable_vt'] as int?,
);
}

View File

@@ -0,0 +1,9 @@
class UserGarb {
String? urlImageAniCut;
UserGarb({this.urlImageAniCut});
factory UserGarb.fromJson(Map<String, dynamic> json) => UserGarb(
urlImageAniCut: json['url_image_ani_cut'] as String?,
);
}

View File

@@ -0,0 +1,21 @@
import 'package:PiliPlus/models_new/video/video_detail/data.dart';
class VideoDetailResponse {
int? code;
String? message;
int? ttl;
VideoDetailData? data;
VideoDetailResponse({this.code, this.message, this.ttl, this.data});
factory VideoDetailResponse.fromJson(Map<String, dynamic> json) {
return VideoDetailResponse(
code: json['code'] as int?,
message: json['message'] as String?,
ttl: json['ttl'] as int?,
data: json['data'] == null
? null
: VideoDetailData.fromJson(json['data'] as Map<String, dynamic>),
);
}
}

View File

@@ -0,0 +1,44 @@
import 'package:PiliPlus/models/model_avatar.dart';
class Author {
int? mid;
String? name;
String? face;
int? level;
int? isSeniorMember;
Vip? vipInfo;
Pendant? pendant;
BaseOfficialVerify? official;
int? follower;
Author({
this.mid,
this.name,
this.face,
this.level,
this.isSeniorMember,
this.vipInfo,
this.pendant,
this.official,
this.follower,
});
factory Author.fromJson(Map<String, dynamic> json) => Author(
mid: json['mid'] as int?,
name: json['name'] as String?,
face: json['face'] as String?,
level: json['level'] as int?,
isSeniorMember: json['is_senior_member'] as int?,
vipInfo: json['vip_info'] == null
? null
: Vip.fromJson(json['vip_info'] as Map<String, dynamic>),
pendant: json['pendant'] == null
? null
: Pendant.fromJson(json['pendant'] as Map<String, dynamic>),
official: json['official'] == null
? null
: BaseOfficialVerify.fromJson(
json['official'] as Map<String, dynamic>),
follower: json['follower'] as int?,
);
}

View File

@@ -0,0 +1,22 @@
import 'package:PiliPlus/models_new/video/video_note_list/list.dart';
import 'package:PiliPlus/models_new/video/video_note_list/page.dart';
class VideoNoteData {
List<VideoNoteItemModel>? list;
Page? page;
bool? showPublicNote;
String? message;
VideoNoteData({this.list, this.page, this.showPublicNote, this.message});
factory VideoNoteData.fromJson(Map<String, dynamic> json) => VideoNoteData(
list: (json['list'] as List<dynamic>?)
?.map((e) => VideoNoteItemModel.fromJson(e as Map<String, dynamic>))
.toList(),
page: json['page'] == null
? null
: Page.fromJson(json['page'] as Map<String, dynamic>),
showPublicNote: json['show_public_note'] as bool?,
message: json['message'] as String?,
);
}

View File

@@ -0,0 +1,40 @@
import 'package:PiliPlus/models_new/video/video_note_list/author.dart';
class VideoNoteItemModel {
int? cvid;
String? title;
String? summary;
String? pubtime;
String? webUrl;
String? message;
Author? author;
int? likes;
bool? hasLike;
VideoNoteItemModel({
this.cvid,
this.title,
this.summary,
this.pubtime,
this.webUrl,
this.message,
this.author,
this.likes,
this.hasLike,
});
factory VideoNoteItemModel.fromJson(Map<String, dynamic> json) =>
VideoNoteItemModel(
cvid: json['cvid'] as int?,
title: json['title'] as String?,
summary: json['summary'] as String?,
pubtime: json['pubtime'] as String?,
webUrl: json['web_url'] as String?,
message: json['message'] as String?,
author: json['author'] == null
? null
: Author.fromJson(json['author'] as Map<String, dynamic>),
likes: json['likes'] as int?,
hasLike: json['has_like'] as bool?,
);
}

View File

@@ -0,0 +1,13 @@
class Page {
int? total;
int? size;
int? num;
Page({this.total, this.size, this.num});
factory Page.fromJson(Map<String, dynamic> json) => Page(
total: json['total'] as int?,
size: json['size'] as int?,
num: json['num'] as int?,
);
}

View File

@@ -0,0 +1,28 @@
class PbpData {
int? stepSec;
Events? events;
PbpData({
this.stepSec,
this.events,
});
factory PbpData.fromJson(Map<String, dynamic> json) => PbpData(
stepSec: json["step_sec"],
events: json["events"] == null ? null : Events.fromJson(json["events"]),
);
}
class Events {
List<double>? eDefault;
Events({
this.eDefault,
});
factory Events.fromJson(Map<String, dynamic> json) => Events(
eDefault: (json["default"] as List?)
?.map((e) => (e as num).toDouble())
.toList(),
);
}

View File

@@ -0,0 +1,30 @@
import 'package:PiliPlus/models_new/video/video_play_info/interaction.dart';
import 'package:PiliPlus/models_new/video/video_play_info/subtitle_info.dart';
import 'package:PiliPlus/models_new/video/video_play_info/view_point.dart';
class PlayInfoData {
int? lastPlayCid;
SubtitleInfo? subtitle;
List<ViewPoint>? viewPoints;
Interaction? interaction;
PlayInfoData({
this.lastPlayCid,
this.subtitle,
this.viewPoints,
this.interaction,
});
factory PlayInfoData.fromJson(Map<String, dynamic> json) => PlayInfoData(
lastPlayCid: json['last_play_cid'] as int?,
subtitle: json['subtitle'] == null
? null
: SubtitleInfo.fromJson(json['subtitle'] as Map<String, dynamic>),
viewPoints: (json['view_points'] as List?)
?.map((e) => ViewPoint.fromJson(e))
.toList(),
interaction: json["interaction"] == null
? null
: Interaction.fromJson(json["interaction"]),
);
}

View File

@@ -0,0 +1,34 @@
class Interaction {
HistoryNode? historyNode;
int? graphVersion;
Interaction({
this.historyNode,
this.graphVersion,
});
factory Interaction.fromJson(Map<String, dynamic> json) => Interaction(
historyNode: json["history_node"] == null
? null
: HistoryNode.fromJson(json["history_node"]),
graphVersion: json["graph_version"],
);
}
class HistoryNode {
int? nodeId;
String? title;
int? cid;
HistoryNode({
this.nodeId,
this.title,
this.cid,
});
factory HistoryNode.fromJson(Map<String, dynamic> json) => HistoryNode(
nodeId: json["node_id"],
title: json["title"],
cid: json["cid"],
);
}

View File

@@ -0,0 +1,20 @@
class Subtitle {
String? lan;
String? lanDoc;
String? subtitleUrl;
String? subtitleUrlV2;
Subtitle({
this.lan,
this.lanDoc,
this.subtitleUrl,
this.subtitleUrlV2,
});
factory Subtitle.fromJson(Map<String, dynamic> json) => Subtitle(
lan: json["lan"],
lanDoc: json["lan_doc"],
subtitleUrl: json["subtitle_url"],
subtitleUrlV2: json["subtitle_url_v2"],
);
}

View File

@@ -0,0 +1,17 @@
import 'package:PiliPlus/models_new/video/video_play_info/subtitle.dart';
class SubtitleInfo {
String? lan;
String? lanDoc;
List<Subtitle>? subtitles;
SubtitleInfo({this.lan, this.lanDoc, this.subtitles});
factory SubtitleInfo.fromJson(Map<String, dynamic> json) => SubtitleInfo(
lan: json['lan'] as String?,
lanDoc: json['lan_doc'] as String?,
subtitles: (json['subtitles'] as List<dynamic>?)
?.map((e) => Subtitle.fromJson(e as Map<String, dynamic>))
.toList(),
);
}

View File

@@ -0,0 +1,32 @@
class ViewPoint {
int? type;
int? from;
int? to;
String? content;
String? imgUrl;
String? logoUrl;
String? teamType;
String? teamName;
ViewPoint({
this.type,
this.from,
this.to,
this.content,
this.imgUrl,
this.logoUrl,
this.teamType,
this.teamName,
});
factory ViewPoint.fromJson(Map<String, dynamic> json) => ViewPoint(
type: json["type"],
from: json["from"],
to: json["to"],
content: json["content"],
imgUrl: json["imgUrl"],
logoUrl: json["logoUrl"],
teamType: json["team_type"],
teamName: json["team_name"],
);
}

View File

@@ -0,0 +1,26 @@
class VideoRelation {
bool? attention;
bool? favorite;
bool? seasonFav;
bool? like;
bool? dislike;
int? coin;
VideoRelation({
this.attention,
this.favorite,
this.seasonFav,
this.like,
this.dislike,
this.coin,
});
factory VideoRelation.fromJson(Map<String, dynamic> json) => VideoRelation(
attention: json['attention'] as bool?,
favorite: json['favorite'] as bool?,
seasonFav: json['season_fav'] as bool?,
like: json['like'] as bool?,
dislike: json['dislike'] as bool?,
coin: json['coin'] as int?,
);
}

View File

@@ -0,0 +1,29 @@
class VideoShotData {
String? pvdata;
int? imgXLen;
int? imgYLen;
int? imgXSize;
int? imgYSize;
List<String>? image;
List<int>? index;
VideoShotData({
this.pvdata,
this.imgXLen,
this.imgYLen,
this.imgXSize,
this.imgYSize,
this.image,
this.index,
});
factory VideoShotData.fromJson(Map<String, dynamic> json) => VideoShotData(
pvdata: json["pvdata"],
imgXLen: json["img_x_len"],
imgYLen: json["img_y_len"],
imgXSize: json["img_x_size"],
imgYSize: json["img_y_size"],
image: (json["image"] as List?)?.cast(),
index: (json["index"] as List?)?.cast(),
);
}

View File

@@ -0,0 +1,29 @@
class Choice {
int? id;
String? platformAction;
String? nativeAction;
String? condition;
int? cid;
String? option;
int? isDefault;
Choice({
this.id,
this.platformAction,
this.nativeAction,
this.condition,
this.cid,
this.option,
this.isDefault,
});
factory Choice.fromJson(Map<String, dynamic> json) => Choice(
id: json['id'] as int?,
platformAction: json['platform_action'] as String?,
nativeAction: json['native_action'] as String?,
condition: json['condition'] as String?,
cid: json['cid'] as int?,
option: json['option'] as String?,
isDefault: json['is_default'] as int?,
);
}

View File

@@ -0,0 +1,39 @@
import 'package:PiliPlus/models_new/video/video_stein_edgeinfo/edges.dart';
import 'package:PiliPlus/models_new/video/video_stein_edgeinfo/preload.dart';
import 'package:PiliPlus/models_new/video/video_stein_edgeinfo/story_list.dart';
class EdgeInfoData {
String? title;
int? edgeId;
List<StoryList>? storyList;
Edges? edges;
String? buvid;
Preload? preload;
int? isLeaf;
EdgeInfoData({
this.title,
this.edgeId,
this.storyList,
this.edges,
this.buvid,
this.preload,
this.isLeaf,
});
factory EdgeInfoData.fromJson(Map<String, dynamic> json) => EdgeInfoData(
title: json['title'] as String?,
edgeId: json['edge_id'] as int?,
storyList: (json['story_list'] as List<dynamic>?)
?.map((e) => StoryList.fromJson(e as Map<String, dynamic>))
.toList(),
edges: json['edges'] == null
? null
: Edges.fromJson(json['edges'] as Map<String, dynamic>),
buvid: json['buvid'] as String?,
preload: json['preload'] == null
? null
: Preload.fromJson(json['preload'] as Map<String, dynamic>),
isLeaf: json['is_leaf'] as int?,
);
}

View File

@@ -0,0 +1,15 @@
class Dimension {
int? width;
int? height;
int? rotate;
String? sar;
Dimension({this.width, this.height, this.rotate, this.sar});
factory Dimension.fromJson(Map<String, dynamic> json) => Dimension(
width: json['width'] as int?,
height: json['height'] as int?,
rotate: json['rotate'] as int?,
sar: json['sar'] as String?,
);
}

View File

@@ -0,0 +1,23 @@
import 'package:PiliPlus/models_new/video/video_stein_edgeinfo/dimension.dart';
import 'package:PiliPlus/models_new/video/video_stein_edgeinfo/question.dart';
import 'package:PiliPlus/models_new/video/video_stein_edgeinfo/skin.dart';
class Edges {
Dimension? dimension;
List<Question>? questions;
Skin? skin;
Edges({this.dimension, this.questions, this.skin});
factory Edges.fromJson(Map<String, dynamic> json) => Edges(
dimension: json['dimension'] == null
? null
: Dimension.fromJson(json['dimension'] as Map<String, dynamic>),
questions: (json['questions'] as List<dynamic>?)
?.map((e) => Question.fromJson(e as Map<String, dynamic>))
.toList(),
skin: json['skin'] == null
? null
: Skin.fromJson(json['skin'] as Map<String, dynamic>),
);
}

View File

@@ -0,0 +1,13 @@
import 'package:PiliPlus/models_new/video/video_stein_edgeinfo/video.dart';
class Preload {
List<Video>? video;
Preload({this.video});
factory Preload.fromJson(Map<String, dynamic> json) => Preload(
video: (json['video'] as List<dynamic>?)
?.map((e) => Video.fromJson(e as Map<String, dynamic>))
.toList(),
);
}

View File

@@ -0,0 +1,33 @@
import 'package:PiliPlus/models_new/video/video_stein_edgeinfo/choice.dart';
class Question {
int? id;
int? type;
int? startTimeR;
int? duration;
int? pauseVideo;
String? title;
List<Choice>? choices;
Question({
this.id,
this.type,
this.startTimeR,
this.duration,
this.pauseVideo,
this.title,
this.choices,
});
factory Question.fromJson(Map<String, dynamic> json) => Question(
id: json['id'] as int?,
type: json['type'] as int?,
startTimeR: json['start_time_r'] as int?,
duration: json['duration'] as int?,
pauseVideo: json['pause_video'] as int?,
title: json['title'] as String?,
choices: (json['choices'] as List<dynamic>?)
?.map((e) => Choice.fromJson(e as Map<String, dynamic>))
.toList(),
);
}

View File

@@ -0,0 +1,29 @@
class Skin {
String? choiceImage;
String? titleTextColor;
String? titleShadowColor;
int? titleShadowOffsetY;
int? titleShadowRadius;
String? progressbarColor;
String? progressbarShadowColor;
Skin({
this.choiceImage,
this.titleTextColor,
this.titleShadowColor,
this.titleShadowOffsetY,
this.titleShadowRadius,
this.progressbarColor,
this.progressbarShadowColor,
});
factory Skin.fromJson(Map<String, dynamic> json) => Skin(
choiceImage: json['choice_image'] as String?,
titleTextColor: json['title_text_color'] as String?,
titleShadowColor: json['title_shadow_color'] as String?,
titleShadowOffsetY: json['title_shadow_offset_y'] as int?,
titleShadowRadius: json['title_shadow_radius'] as int?,
progressbarColor: json['progressbar_color'] as String?,
progressbarShadowColor: json['progressbar_shadow_color'] as String?,
);
}

View File

@@ -0,0 +1,32 @@
class StoryList {
int? nodeId;
int? edgeId;
String? title;
int? cid;
int? startPos;
String? cover;
int? isCurrent;
int? cursor;
StoryList({
this.nodeId,
this.edgeId,
this.title,
this.cid,
this.startPos,
this.cover,
this.isCurrent,
this.cursor,
});
factory StoryList.fromJson(Map<String, dynamic> json) => StoryList(
nodeId: json['node_id'] as int?,
edgeId: json['edge_id'] as int?,
title: json['title'] as String?,
cid: json['cid'] as int?,
startPos: json['start_pos'] as int?,
cover: json['cover'] as String?,
isCurrent: json['is_current'] as int?,
cursor: json['cursor'] as int?,
);
}

View File

@@ -0,0 +1,11 @@
class Video {
int? aid;
int? cid;
Video({this.aid, this.cid});
factory Video.fromJson(Map<String, dynamic> json) => Video(
aid: json['aid'] as int?,
cid: json['cid'] as int?,
);
}

View File

@@ -0,0 +1,20 @@
class VideoTagItem {
int? tagId;
String? tagName;
String? musicId;
String? jumpUrl;
VideoTagItem({
this.tagId,
this.tagName,
this.musicId,
this.jumpUrl,
});
factory VideoTagItem.fromJson(Map<String, dynamic> json) => VideoTagItem(
tagId: json["tag_id"],
tagName: json["tag_name"],
musicId: json["music_id"],
jumpUrl: json["jump_url"],
);
}