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,13 @@
class Author {
String? name;
String? face;
String? mid;
Author({this.name, this.face, this.mid});
factory Author.fromJson(Map<String, dynamic> json) => Author(
name: json['name'] as String?,
face: json['face'] as String?,
mid: json['mid'] as String?,
);
}

View File

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

View File

@@ -0,0 +1,28 @@
import 'package:PiliPlus/models_new/fav/fav_article/item.dart';
class FavArticleData {
List<FavArticleItemModel>? items;
bool? hasMore;
String? offset;
String? updateNum;
String? updateBaseline;
FavArticleData({
this.items,
this.hasMore,
this.offset,
this.updateNum,
this.updateBaseline,
});
factory FavArticleData.fromJson(Map<String, dynamic> json) => FavArticleData(
items: (json['items'] as List<dynamic>?)
?.map(
(e) => FavArticleItemModel.fromJson(e as Map<String, dynamic>))
.toList(),
hasMore: json['has_more'] as bool?,
offset: json['offset'] as String?,
updateNum: json['update_num'] as String?,
updateBaseline: json['update_baseline'] as String?,
);
}

View File

@@ -0,0 +1,43 @@
import 'package:PiliPlus/models_new/fav/fav_article/author.dart';
import 'package:PiliPlus/models_new/fav/fav_article/cover.dart';
import 'package:PiliPlus/models_new/fav/fav_article/stat.dart';
class FavArticleItemModel {
String? jumpUrl;
String? opusId;
String? content;
dynamic badge;
Author? author;
Cover? cover;
Stat? stat;
String? pubTime;
FavArticleItemModel({
this.jumpUrl,
this.opusId,
this.content,
this.badge,
this.author,
this.cover,
this.stat,
this.pubTime,
});
factory FavArticleItemModel.fromJson(Map<String, dynamic> json) =>
FavArticleItemModel(
jumpUrl: json['jump_url'] as String?,
opusId: json['opus_id'] as String?,
content: json['content'] as String?,
badge: json['badge'] as dynamic,
author: json['author'] == null
? null
: Author.fromJson(json['author'] as Map<String, dynamic>),
cover: json['cover'] == null
? null
: Cover.fromJson(json['cover'] as Map<String, dynamic>),
stat: json['stat'] == null
? null
: Stat.fromJson(json['stat'] as Map<String, dynamic>),
pubTime: json['pub_time'] as String?,
);
}

View File

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

View File

@@ -0,0 +1,23 @@
class CntInfo {
int? collect;
int? play;
int? thumbUp;
int? share;
int? danmaku;
CntInfo({
this.collect,
this.play,
this.thumbUp,
this.share,
this.danmaku,
});
factory CntInfo.fromJson(Map<String, dynamic> json) => CntInfo(
collect: json['collect'] as int?,
play: json['play'] as int?,
thumbUp: json['thumb_up'] as int?,
share: json['share'] as int?,
danmaku: json['danmaku'] as int?,
);
}

View File

@@ -0,0 +1,22 @@
import 'package:PiliPlus/models_new/fav/fav_detail/media.dart';
import 'package:PiliPlus/models_new/fav/fav_video/list.dart';
class FavDetailData {
FavVideoItemModel? info;
List<FavDetailItemModel>? medias;
bool? hasMore;
int? ttl;
FavDetailData({this.info, this.medias, this.hasMore, this.ttl});
factory FavDetailData.fromJson(Map<String, dynamic> json) => FavDetailData(
info: json['info'] == null
? null
: FavVideoItemModel.fromJson(json['info'] as Map<String, dynamic>),
medias: (json['medias'] as List<dynamic>?)
?.map((e) => FavDetailItemModel.fromJson(e as Map<String, dynamic>))
.toList(),
hasMore: json['has_more'] as bool?,
ttl: json['ttl'] as int?,
);
}

View File

@@ -0,0 +1,69 @@
import 'package:PiliPlus/models_new/fav/fav_detail/cnt_info.dart';
import 'package:PiliPlus/models_new/fav/fav_detail/upper.dart';
class FavDetailInfo {
int? id;
int? fid;
int? mid;
int? attr;
String? title;
String? cover;
Upper? upper;
int? coverType;
CntInfo? cntInfo;
int? type;
String? intro;
int? ctime;
int? mtime;
int? state;
int? favState;
int? likeState;
int? mediaCount;
bool? isTop;
FavDetailInfo({
this.id,
this.fid,
this.mid,
this.attr,
this.title,
this.cover,
this.upper,
this.coverType,
this.cntInfo,
this.type,
this.intro,
this.ctime,
this.mtime,
this.state,
this.favState,
this.likeState,
this.mediaCount,
this.isTop,
});
factory FavDetailInfo.fromJson(Map<String, dynamic> json) => FavDetailInfo(
id: json['id'] as int?,
fid: json['fid'] as int?,
mid: json['mid'] as int?,
attr: json['attr'] as int?,
title: json['title'] as String?,
cover: json['cover'] as String?,
upper: json['upper'] == null
? null
: Upper.fromJson(json['upper'] as Map<String, dynamic>),
coverType: json['cover_type'] as int?,
cntInfo: json['cnt_info'] == null
? null
: CntInfo.fromJson(json['cnt_info'] as Map<String, dynamic>),
type: json['type'] as int?,
intro: json['intro'] as String?,
ctime: json['ctime'] as int?,
mtime: json['mtime'] as int?,
state: json['state'] as int?,
favState: json['fav_state'] as int?,
likeState: json['like_state'] as int?,
mediaCount: json['media_count'] as int?,
isTop: json['is_top'] as bool?,
);
}

View File

@@ -0,0 +1,78 @@
import 'package:PiliPlus/models_new/fav/fav_detail/cnt_info.dart';
import 'package:PiliPlus/models_new/fav/fav_detail/ogv.dart';
import 'package:PiliPlus/models_new/fav/fav_detail/ugc.dart';
import 'package:PiliPlus/models_new/fav/fav_detail/upper.dart';
import 'package:PiliPlus/pages/common/multi_select_controller.dart';
class FavDetailItemModel with MultiSelectData {
int? id;
int? type;
String? title;
String? cover;
String? intro;
int? page;
int? duration;
Upper? upper;
int? attr;
CntInfo? cntInfo;
String? link;
int? ctime;
int? pubtime;
int? favTime;
String? bvId;
String? bvid;
Ogv? ogv;
Ugc? ugc;
String? mediaListLink;
FavDetailItemModel({
this.id,
this.type,
this.title,
this.cover,
this.intro,
this.page,
this.duration,
this.upper,
this.attr,
this.cntInfo,
this.link,
this.ctime,
this.pubtime,
this.favTime,
this.bvId,
this.bvid,
this.ogv,
this.ugc,
this.mediaListLink,
});
factory FavDetailItemModel.fromJson(Map<String, dynamic> json) =>
FavDetailItemModel(
id: json['id'] as int?,
type: json['type'] as int?,
title: json['title'] as String?,
cover: json['cover'] as String?,
intro: json['intro'] as String?,
page: json['page'] as int?,
duration: json['duration'] as int?,
upper: json['upper'] == null
? null
: Upper.fromJson(json['upper'] as Map<String, dynamic>),
attr: json['attr'] as int?,
cntInfo: json['cnt_info'] == null
? null
: CntInfo.fromJson(json['cnt_info'] as Map<String, dynamic>),
link: json['link'] as String?,
ctime: json['ctime'] as int?,
pubtime: json['pubtime'] as int?,
favTime: json['fav_time'] as int?,
bvId: json['bv_id'] as String?,
bvid: json['bvid'] as String?,
ogv: json['ogv'] == null ? null : Ogv.fromJson(json['ogv']),
ugc: json['ugc'] == null
? null
: Ugc.fromJson(json['ugc'] as Map<String, dynamic>),
mediaListLink: json['media_list_link'] as String?,
);
}

View File

@@ -0,0 +1,17 @@
class Ogv {
String? typeName;
int? typeId;
int? seasonId;
Ogv({
this.typeName,
this.typeId,
this.seasonId,
});
factory Ogv.fromJson(Map<String, dynamic> json) => Ogv(
typeName: json['type_name'],
typeId: json['type_id'],
seasonId: json['season_id'],
);
}

View File

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

View File

@@ -0,0 +1,26 @@
class Upper {
int? mid;
String? name;
String? face;
bool? followed;
int? vipType;
int? vipStatue;
Upper({
this.mid,
this.name,
this.face,
this.followed,
this.vipType,
this.vipStatue,
});
factory Upper.fromJson(Map<String, dynamic> json) => Upper(
mid: json['mid'] as int?,
name: json['name'] as String?,
face: json['face'] as String?,
followed: json['followed'] as bool?,
vipType: json['vip_type'] as int?,
vipStatue: json['vip_statue'] as int?,
);
}

View File

@@ -0,0 +1,15 @@
class CntInfo {
int? collect;
int? play;
int? thumbUp;
int? share;
CntInfo({this.collect, this.play, this.thumbUp, this.share});
factory CntInfo.fromJson(Map<String, dynamic> json) => CntInfo(
collect: json['collect'] as int?,
play: json['play'] as int?,
thumbUp: json['thumb_up'] as int?,
share: json['share'] as int?,
);
}

View File

@@ -0,0 +1,69 @@
import 'package:PiliPlus/models_new/fav/fav_folder_info/cnt_info.dart';
import 'package:PiliPlus/models_new/fav/fav_folder_info/upper.dart';
class FolderInfo {
int? id;
int? fid;
int? mid;
int? attr;
String? title;
String? cover;
Upper? upper;
int? coverType;
CntInfo? cntInfo;
int? type;
String? intro;
int? ctime;
int? mtime;
int? state;
int? favState;
int? likeState;
int? mediaCount;
bool? isTop;
FolderInfo({
this.id,
this.fid,
this.mid,
this.attr,
this.title,
this.cover,
this.upper,
this.coverType,
this.cntInfo,
this.type,
this.intro,
this.ctime,
this.mtime,
this.state,
this.favState,
this.likeState,
this.mediaCount,
this.isTop,
});
factory FolderInfo.fromJson(Map<String, dynamic> json) => FolderInfo(
id: json['id'] as int?,
fid: json['fid'] as int?,
mid: json['mid'] as int?,
attr: json['attr'] as int?,
title: json['title'] as String?,
cover: json['cover'] as String?,
upper: json['upper'] == null
? null
: Upper.fromJson(json['upper'] as Map<String, dynamic>),
coverType: json['cover_type'] as int?,
cntInfo: json['cnt_info'] == null
? null
: CntInfo.fromJson(json['cnt_info'] as Map<String, dynamic>),
type: json['type'] as int?,
intro: json['intro'] as String?,
ctime: json['ctime'] as int?,
mtime: json['mtime'] as int?,
state: json['state'] as int?,
favState: json['fav_state'] as int?,
likeState: json['like_state'] as int?,
mediaCount: json['media_count'] as int?,
isTop: json['is_top'] as bool?,
);
}

View File

@@ -0,0 +1,26 @@
class Upper {
int? mid;
String? name;
String? face;
bool? followed;
int? vipType;
int? vipStatue;
Upper({
this.mid,
this.name,
this.face,
this.followed,
this.vipType,
this.vipStatue,
});
factory Upper.fromJson(Map<String, dynamic> json) => Upper(
mid: json['mid'] as int?,
name: json['name'] as String?,
face: json['face'] as String?,
followed: json['followed'] as bool?,
vipType: json['vip_type'] as int?,
vipStatue: json['vip_statue'] as int?,
);
}

View File

@@ -0,0 +1,29 @@
class Arc {
int? oid;
String? bvid;
String? pic;
String? desc;
int? status;
int? oidType;
int? aid;
Arc({
this.oid,
this.bvid,
this.pic,
this.desc,
this.status,
this.oidType,
this.aid,
});
factory Arc.fromJson(Map<String, dynamic> json) => Arc(
oid: json['oid'] as int?,
bvid: json['bvid'] as String?,
pic: json['pic'] as String?,
desc: json['desc'] as String?,
status: json['status'] as int?,
oidType: json['oid_type'] as int?,
aid: json['aid'] as int?,
);
}

View File

@@ -0,0 +1,18 @@
import 'package:PiliPlus/models_new/fav/fav_note/list.dart';
import 'package:PiliPlus/models_new/fav/fav_note/page.dart';
class FavNoteData {
List<FavNoteItemModel>? list;
Page? page;
FavNoteData({this.list, this.page});
factory FavNoteData.fromJson(Map<String, dynamic> json) => FavNoteData(
list: (json['list'] as List<dynamic>?)
?.map((e) => FavNoteItemModel.fromJson(e as Map<String, dynamic>))
.toList(),
page: json['page'] == null
? null
: Page.fromJson(json['page'] as Map<String, dynamic>),
);
}

View File

@@ -0,0 +1,31 @@
import 'package:PiliPlus/pages/common/multi_select_controller.dart';
class FavNoteItemModel with MultiSelectData {
FavNoteItemModel({
this.webUrl,
this.title,
this.summary,
this.message,
this.pic,
this.cvid,
this.noteId,
});
String? webUrl;
String? title;
String? summary;
String? message;
String? pic;
dynamic cvid;
dynamic noteId;
FavNoteItemModel.fromJson(Map json) {
webUrl = json['web_url'];
title = json['title'];
summary = json['summary'];
message = json['message'];
pic = json['arc']?['pic'];
cvid = json['cvid'];
noteId = json['note_id'];
}
}

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,11 @@
class Area {
int? id;
String? name;
Area({this.id, this.name});
factory Area.fromJson(Map<String, dynamic> json) => Area(
id: json['id'] as int?,
name: json['name'] as String?,
);
}

View File

@@ -0,0 +1,27 @@
import 'package:PiliPlus/models_new/fav/fav_pgc/multi_img.dart';
class BadgeInfo {
String? text;
String? bgColor;
String? bgColorNight;
String? img;
MultiImg? multiImg;
BadgeInfo({
this.text,
this.bgColor,
this.bgColorNight,
this.img,
this.multiImg,
});
factory BadgeInfo.fromJson(Map<String, dynamic> json) => BadgeInfo(
text: json['text'] as String?,
bgColor: json['bg_color'] as String?,
bgColorNight: json['bg_color_night'] as String?,
img: json['img'] as String?,
multiImg: json['multi_img'] == null
? null
: MultiImg.fromJson(json['multi_img'] as Map<String, dynamic>),
);
}

View File

@@ -0,0 +1,19 @@
import 'package:PiliPlus/models_new/fav/fav_pgc/content_attr.dart';
import 'package:PiliPlus/models_new/fav/fav_pgc/vip_or_pay.dart';
class BadgeInfos {
ContentAttr? contentAttr;
VipOrPay? vipOrPay;
BadgeInfos({this.contentAttr, this.vipOrPay});
factory BadgeInfos.fromJson(Map<String, dynamic> json) => BadgeInfos(
contentAttr: json['content_attr'] == null
? null
: ContentAttr.fromJson(
json['content_attr'] as Map<String, dynamic>),
vipOrPay: json['vip_or_pay'] == null
? null
: VipOrPay.fromJson(json['vip_or_pay'] as Map<String, dynamic>),
);
}

View File

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

View File

@@ -0,0 +1,36 @@
import 'package:PiliPlus/models_new/fav/fav_pgc/cc_on_lock.dart';
import 'package:PiliPlus/models_new/fav/fav_pgc/highlight_ineffective_hd.dart';
import 'package:PiliPlus/models_new/fav/fav_pgc/highlight_ineffective_ott.dart';
import 'package:PiliPlus/models_new/fav/fav_pgc/highlight_ineffective_pink.dart';
class ConfigAttrs {
CcOnLock? ccOnLock;
HighlightIneffectiveHd? highlightIneffectiveHd;
HighlightIneffectiveOtt? highlightIneffectiveOtt;
HighlightIneffectivePink? highlightIneffectivePink;
ConfigAttrs({
this.ccOnLock,
this.highlightIneffectiveHd,
this.highlightIneffectiveOtt,
this.highlightIneffectivePink,
});
factory ConfigAttrs.fromJson(Map<String, dynamic> json) => ConfigAttrs(
ccOnLock: json['cc_on_lock'] == null
? null
: CcOnLock.fromJson(json['cc_on_lock'] as Map<String, dynamic>),
highlightIneffectiveHd: json['highlight_ineffective_hd'] == null
? null
: HighlightIneffectiveHd.fromJson(
json['highlight_ineffective_hd'] as Map<String, dynamic>),
highlightIneffectiveOtt: json['highlight_ineffective_ott'] == null
? null
: HighlightIneffectiveOtt.fromJson(
json['highlight_ineffective_ott'] as Map<String, dynamic>),
highlightIneffectivePink: json['highlight_ineffective_pink'] == null
? null
: HighlightIneffectivePink.fromJson(
json['highlight_ineffective_pink'] as Map<String, dynamic>),
);
}

View File

@@ -0,0 +1,27 @@
import 'package:PiliPlus/models_new/fav/fav_pgc/multi_img.dart';
class ContentAttr {
String? text;
String? bgColor;
String? bgColorNight;
String? img;
MultiImg? multiImg;
ContentAttr({
this.text,
this.bgColor,
this.bgColorNight,
this.img,
this.multiImg,
});
factory ContentAttr.fromJson(Map<String, dynamic> json) => ContentAttr(
text: json['text'] as String?,
bgColor: json['bg_color'] as String?,
bgColorNight: json['bg_color_night'] as String?,
img: json['img'] as String?,
multiImg: json['multi_img'] == null
? null
: MultiImg.fromJson(json['multi_img'] as Map<String, dynamic>),
);
}

View File

@@ -0,0 +1,19 @@
import 'package:PiliPlus/models_new/fav/fav_pgc/list.dart';
class FavPgcData {
List<FavPgcItemModel>? list;
int? pn;
int? ps;
int? total;
FavPgcData({this.list, this.pn, this.ps, this.total});
factory FavPgcData.fromJson(Map<String, dynamic> json) => FavPgcData(
list: (json['list'] as List<dynamic>?)
?.map((e) => FavPgcItemModel.fromJson(e as Map<String, dynamic>))
.toList(),
pn: json['pn'] as int?,
ps: json['ps'] as int?,
total: json['total'] as int?,
);
}

View File

@@ -0,0 +1,26 @@
class FirstEpInfo {
int? id;
String? cover;
String? title;
String? longTitle;
String? pubTime;
int? duration;
FirstEpInfo({
this.id,
this.cover,
this.title,
this.longTitle,
this.pubTime,
this.duration,
});
factory FirstEpInfo.fromJson(Map<String, dynamic> json) => FirstEpInfo(
id: json['id'] as int?,
cover: json['cover'] as String?,
title: json['title'] as String?,
longTitle: json['long_title'] as String?,
pubTime: json['pub_time'] as String?,
duration: json['duration'] as int?,
);
}

View File

@@ -0,0 +1,11 @@
class HighlightIneffectiveHd {
String? typeUrl;
HighlightIneffectiveHd({this.typeUrl});
factory HighlightIneffectiveHd.fromJson(Map<String, dynamic> json) {
return HighlightIneffectiveHd(
typeUrl: json['type_url'] as String?,
);
}
}

View File

@@ -0,0 +1,11 @@
class HighlightIneffectiveOtt {
String? typeUrl;
HighlightIneffectiveOtt({this.typeUrl});
factory HighlightIneffectiveOtt.fromJson(Map<String, dynamic> json) {
return HighlightIneffectiveOtt(
typeUrl: json['type_url'] as String?,
);
}
}

View File

@@ -0,0 +1,11 @@
class HighlightIneffectivePink {
String? typeUrl;
HighlightIneffectivePink({this.typeUrl});
factory HighlightIneffectivePink.fromJson(Map<String, dynamic> json) {
return HighlightIneffectivePink(
typeUrl: json['type_url'] as String?,
);
}
}

View File

@@ -0,0 +1,208 @@
import 'package:PiliPlus/models_new/fav/fav_pgc/area.dart';
import 'package:PiliPlus/models_new/fav/fav_pgc/badge_info.dart';
import 'package:PiliPlus/models_new/fav/fav_pgc/badge_infos.dart';
import 'package:PiliPlus/models_new/fav/fav_pgc/config_attrs.dart';
import 'package:PiliPlus/models_new/fav/fav_pgc/first_ep_info.dart';
import 'package:PiliPlus/models_new/fav/fav_pgc/new_ep.dart';
import 'package:PiliPlus/models_new/fav/fav_pgc/producer.dart';
import 'package:PiliPlus/models_new/fav/fav_pgc/publish.dart';
import 'package:PiliPlus/models_new/fav/fav_pgc/rating.dart';
import 'package:PiliPlus/models_new/fav/fav_pgc/rights.dart';
import 'package:PiliPlus/models_new/fav/fav_pgc/section.dart';
import 'package:PiliPlus/models_new/fav/fav_pgc/series.dart';
import 'package:PiliPlus/models_new/fav/fav_pgc/stat.dart';
import 'package:PiliPlus/pages/common/multi_select_controller.dart';
class FavPgcItemModel with MultiSelectData {
int? seasonId;
int? mediaId;
int? seasonType;
String? seasonTypeName;
String? title;
String? cover;
int? totalCount;
int? isFinish;
int? isStarted;
int? isPlay;
String? badge;
int? badgeType;
Rights? rights;
Stat? stat;
NewEp? newEp;
Rating? rating;
String? squareCover;
int? seasonStatus;
String? seasonTitle;
String? badgeEp;
int? mediaAttr;
int? seasonAttr;
String? evaluate;
List<Area>? areas;
String? subtitle;
int? firstEp;
int? canWatch;
Series? series;
Publish? publish;
int? mode;
List<Section>? section;
String? url;
BadgeInfo? badgeInfo;
String? renewalTime;
FirstEpInfo? firstEpInfo;
int? formalEpCount;
String? shortUrl;
BadgeInfos? badgeInfos;
String? seasonVersion;
String? horizontalCover169;
String? horizontalCover1610;
String? subtitle14;
int? viewableCrowdType;
List<Producer>? producers;
String? summary;
List<String>? styles;
ConfigAttrs? configAttrs;
int? followStatus;
int? isNew;
String? progress;
bool? bothFollow;
String? subtitle25;
FavPgcItemModel({
this.seasonId,
this.mediaId,
this.seasonType,
this.seasonTypeName,
this.title,
this.cover,
this.totalCount,
this.isFinish,
this.isStarted,
this.isPlay,
this.badge,
this.badgeType,
this.rights,
this.stat,
this.newEp,
this.rating,
this.squareCover,
this.seasonStatus,
this.seasonTitle,
this.badgeEp,
this.mediaAttr,
this.seasonAttr,
this.evaluate,
this.areas,
this.subtitle,
this.firstEp,
this.canWatch,
this.series,
this.publish,
this.mode,
this.section,
this.url,
this.badgeInfo,
this.renewalTime,
this.firstEpInfo,
this.formalEpCount,
this.shortUrl,
this.badgeInfos,
this.seasonVersion,
this.horizontalCover169,
this.horizontalCover1610,
this.subtitle14,
this.viewableCrowdType,
this.producers,
this.summary,
this.styles,
this.configAttrs,
this.followStatus,
this.isNew,
this.progress,
this.bothFollow,
this.subtitle25,
});
factory FavPgcItemModel.fromJson(Map<String, dynamic> json) =>
FavPgcItemModel(
seasonId: json['season_id'] as int?,
mediaId: json['media_id'] as int?,
seasonType: json['season_type'] as int?,
seasonTypeName: json['season_type_name'] as String?,
title: json['title'] as String?,
cover: json['cover'] as String?,
totalCount: json['total_count'] as int?,
isFinish: json['is_finish'] as int?,
isStarted: json['is_started'] as int?,
isPlay: json['is_play'] as int?,
badge: json['badge'] as String?,
badgeType: json['badge_type'] as int?,
rights: json['rights'] == null
? null
: Rights.fromJson(json['rights'] as Map<String, dynamic>),
stat: json['stat'] == null
? null
: Stat.fromJson(json['stat'] as Map<String, dynamic>),
newEp: json['new_ep'] == null
? null
: NewEp.fromJson(json['new_ep'] as Map<String, dynamic>),
rating: json['rating'] == null
? null
: Rating.fromJson(json['rating'] as Map<String, dynamic>),
squareCover: json['square_cover'] as String?,
seasonStatus: json['season_status'] as int?,
seasonTitle: json['season_title'] as String?,
badgeEp: json['badge_ep'] as String?,
mediaAttr: json['media_attr'] as int?,
seasonAttr: json['season_attr'] as int?,
evaluate: json['evaluate'] as String?,
areas: (json['areas'] as List<dynamic>?)
?.map((e) => Area.fromJson(e as Map<String, dynamic>))
.toList(),
subtitle: json['subtitle'] as String?,
firstEp: json['first_ep'] as int?,
canWatch: json['can_watch'] as int?,
series: json['series'] == null
? null
: Series.fromJson(json['series'] as Map<String, dynamic>),
publish: json['publish'] == null
? null
: Publish.fromJson(json['publish'] as Map<String, dynamic>),
mode: json['mode'] as int?,
section: (json['section'] as List<dynamic>?)
?.map((e) => Section.fromJson(e as Map<String, dynamic>))
.toList(),
url: json['url'] as String?,
badgeInfo: json['badge_info'] == null
? null
: BadgeInfo.fromJson(json['badge_info'] as Map<String, dynamic>),
renewalTime: json['renewal_time'] as String?,
firstEpInfo: json['first_ep_info'] == null
? null
: FirstEpInfo.fromJson(
json['first_ep_info'] as Map<String, dynamic>),
formalEpCount: json['formal_ep_count'] as int?,
shortUrl: json['short_url'] as String?,
badgeInfos: json['badge_infos'] == null
? null
: BadgeInfos.fromJson(json['badge_infos'] as Map<String, dynamic>),
seasonVersion: json['season_version'] as String?,
horizontalCover169: json['horizontal_cover_16_9'] as String?,
horizontalCover1610: json['horizontal_cover_16_10'] as String?,
subtitle14: json['subtitle_14'] as String?,
viewableCrowdType: json['viewable_crowd_type'] as int?,
producers: (json['producers'] as List<dynamic>?)
?.map((e) => Producer.fromJson(e as Map<String, dynamic>))
.toList(),
summary: json['summary'] as String?,
styles: (json['styles'] as List?)?.cast(),
configAttrs: json['config_attrs'] == null
? null
: ConfigAttrs.fromJson(
json['config_attrs'] as Map<String, dynamic>),
followStatus: json['follow_status'] as int?,
isNew: json['is_new'] as int?,
progress: json['progress'] as String?,
bothFollow: json['both_follow'] as bool?,
subtitle25: json['subtitle_25'] as String?,
);
}

View File

@@ -0,0 +1,11 @@
class MultiImg {
String? color;
String? mediumRemind;
MultiImg({this.color, this.mediumRemind});
factory MultiImg.fromJson(Map<String, dynamic> json) => MultiImg(
color: json['color'] as String?,
mediumRemind: json['medium_remind'] as String?,
);
}

View File

@@ -0,0 +1,29 @@
class NewEp {
int? id;
String? indexShow;
String? cover;
String? title;
String? longTitle;
String? pubTime;
int? duration;
NewEp({
this.id,
this.indexShow,
this.cover,
this.title,
this.longTitle,
this.pubTime,
this.duration,
});
factory NewEp.fromJson(Map<String, dynamic> json) => NewEp(
id: json['id'] as int?,
indexShow: json['index_show'] as String?,
cover: json['cover'] as String?,
title: json['title'] as String?,
longTitle: json['long_title'] as String?,
pubTime: json['pub_time'] as String?,
duration: json['duration'] as int?,
);
}

View File

@@ -0,0 +1,15 @@
class Producer {
int? mid;
int? type;
int? isContribute;
String? title;
Producer({this.mid, this.type, this.isContribute, this.title});
factory Producer.fromJson(Map<String, dynamic> json) => Producer(
mid: json['mid'] as int?,
type: json['type'] as int?,
isContribute: json['is_contribute'] as int?,
title: json['title'] as String?,
);
}

View File

@@ -0,0 +1,20 @@
class Publish {
String? pubTime;
String? pubTimeShow;
String? releaseDate;
String? releaseDateShow;
Publish({
this.pubTime,
this.pubTimeShow,
this.releaseDate,
this.releaseDateShow,
});
factory Publish.fromJson(Map<String, dynamic> json) => Publish(
pubTime: json['pub_time'] as String?,
pubTimeShow: json['pub_time_show'] as String?,
releaseDate: json['release_date'] as String?,
releaseDateShow: json['release_date_show'] as String?,
);
}

View File

@@ -0,0 +1,11 @@
class Rating {
double? score;
int? count;
Rating({this.score, this.count});
factory Rating.fromJson(Map<String, dynamic> json) => Rating(
score: (json['score'] as num?)?.toDouble(),
count: json['count'] as int?,
);
}

View File

@@ -0,0 +1,23 @@
class Rights {
int? allowReview;
int? allowPreview;
int? isSelection;
int? selectionStyle;
int? isRcmd;
Rights({
this.allowReview,
this.allowPreview,
this.isSelection,
this.selectionStyle,
this.isRcmd,
});
factory Rights.fromJson(Map<String, dynamic> json) => Rights(
allowReview: json['allow_review'] as int?,
allowPreview: json['allow_preview'] as int?,
isSelection: json['is_selection'] as int?,
selectionStyle: json['selection_style'] as int?,
isRcmd: json['is_rcmd'] as int?,
);
}

View File

@@ -0,0 +1,29 @@
class Section {
int? sectionId;
int? seasonId;
int? limitGroup;
int? watchPlatform;
String? copyright;
int? banAreaShow;
List<int>? episodeIds;
Section({
this.sectionId,
this.seasonId,
this.limitGroup,
this.watchPlatform,
this.copyright,
this.banAreaShow,
this.episodeIds,
});
factory Section.fromJson(Map<String, dynamic> json) => Section(
sectionId: json['section_id'] as int?,
seasonId: json['season_id'] as int?,
limitGroup: json['limit_group'] as int?,
watchPlatform: json['watch_platform'] as int?,
copyright: json['copyright'] as String?,
banAreaShow: json['ban_area_show'] as int?,
episodeIds: (json['episode_ids'] as List?)?.cast(),
);
}

View File

@@ -0,0 +1,23 @@
class Series {
int? seriesId;
String? title;
int? seasonCount;
int? newSeasonId;
int? seriesOrd;
Series({
this.seriesId,
this.title,
this.seasonCount,
this.newSeasonId,
this.seriesOrd,
});
factory Series.fromJson(Map<String, dynamic> json) => Series(
seriesId: json['series_id'] as int?,
title: json['title'] as String?,
seasonCount: json['season_count'] as int?,
newSeasonId: json['new_season_id'] as int?,
seriesOrd: json['series_ord'] as int?,
);
}

View File

@@ -0,0 +1,35 @@
class Stat {
int? follow;
int? view;
int? danmaku;
int? reply;
int? coin;
int? seriesFollow;
int? seriesView;
int? likes;
int? favorite;
Stat({
this.follow,
this.view,
this.danmaku,
this.reply,
this.coin,
this.seriesFollow,
this.seriesView,
this.likes,
this.favorite,
});
factory Stat.fromJson(Map<String, dynamic> json) => Stat(
follow: json['follow'] as int?,
view: json['view'] as int?,
danmaku: json['danmaku'] as int?,
reply: json['reply'] as int?,
coin: json['coin'] as int?,
seriesFollow: json['series_follow'] as int?,
seriesView: json['series_view'] as int?,
likes: json['likes'] as int?,
favorite: json['favorite'] as int?,
);
}

View File

@@ -0,0 +1,27 @@
import 'package:PiliPlus/models_new/fav/fav_pgc/multi_img.dart';
class VipOrPay {
String? text;
String? bgColor;
String? bgColorNight;
String? img;
MultiImg? multiImg;
VipOrPay({
this.text,
this.bgColor,
this.bgColorNight,
this.img,
this.multiImg,
});
factory VipOrPay.fromJson(Map<String, dynamic> json) => VipOrPay(
text: json['text'] as String?,
bgColor: json['bg_color'] as String?,
bgColorNight: json['bg_color_night'] as String?,
img: json['img'] as String?,
multiImg: json['multi_img'] == null
? null
: MultiImg.fromJson(json['multi_img'] as Map<String, dynamic>),
);
}

View File

@@ -0,0 +1,13 @@
import 'package:PiliPlus/models_new/fav/fav_topic/topic_list.dart';
class FavTopicData {
TopicList? topicList;
FavTopicData({this.topicList});
factory FavTopicData.fromJson(Map<String, dynamic> json) => FavTopicData(
topicList: json['topic_list'] == null
? null
: TopicList.fromJson(json['topic_list'] as Map<String, dynamic>),
);
}

View File

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

View File

@@ -0,0 +1,29 @@
class FavTopicItem {
int? id;
String? name;
int? view;
int? discuss;
String? jumpUrl;
String? statDesc;
bool? showInteractData;
FavTopicItem({
this.id,
this.name,
this.view,
this.discuss,
this.jumpUrl,
this.statDesc,
this.showInteractData,
});
factory FavTopicItem.fromJson(Map<String, dynamic> json) => FavTopicItem(
id: json['id'] as int?,
name: json['name'] as String?,
view: json['view'] as int?,
discuss: json['discuss'] as int?,
jumpUrl: json['jump_url'] as String?,
statDesc: json['stat_desc'] as String?,
showInteractData: json['show_interact_data'] as bool?,
);
}

View File

@@ -0,0 +1,18 @@
import 'package:PiliPlus/models_new/fav/fav_topic/page_info.dart';
import 'package:PiliPlus/models_new/fav/fav_topic/topic_item.dart';
class TopicList {
List<FavTopicItem>? topicItems;
PageInfo? pageInfo;
TopicList({this.topicItems, this.pageInfo});
factory TopicList.fromJson(Map<String, dynamic> json) => TopicList(
topicItems: (json['topic_items'] as List<dynamic>?)
?.map((e) => FavTopicItem.fromJson(e as Map<String, dynamic>))
.toList(),
pageInfo: json['page_info'] == null
? null
: PageInfo.fromJson(json['page_info'] as Map<String, dynamic>),
);
}

View File

@@ -0,0 +1,17 @@
import 'package:PiliPlus/models_new/fav/fav_video/list.dart';
class FavVideoData {
int? count;
List<FavVideoItemModel>? list;
bool? hasMore;
FavVideoData({this.count, this.list, this.hasMore});
factory FavVideoData.fromJson(Map<String, dynamic> json) => FavVideoData(
count: json['count'] as int?,
list: (json['list'] as List<dynamic>?)
?.map((e) => FavVideoItemModel.fromJson(e as Map<String, dynamic>))
.toList(),
hasMore: json['has_more'] as bool?,
);
}

View File

@@ -0,0 +1,82 @@
import 'package:PiliPlus/models_new/fav/fav_video/upper.dart';
class FavVideoItemModel {
int? id;
int? fid;
int? mid;
int? attr;
String? attrDesc;
String? title;
String? cover;
Upper? upper;
int? coverType;
String? intro;
int? ctime;
int? mtime;
int? state;
int? favState;
int? mediaCount;
int? viewCount;
int? vt;
bool? isTop;
dynamic recentFav;
int? playSwitch;
int? type;
String? link;
String? bvid;
FavVideoItemModel({
this.id,
this.fid,
this.mid,
this.attr,
this.attrDesc,
this.title,
this.cover,
this.upper,
this.coverType,
this.intro,
this.ctime,
this.mtime,
this.state,
this.favState,
this.mediaCount,
this.viewCount,
this.vt,
this.isTop,
this.recentFav,
this.playSwitch,
this.type,
this.link,
this.bvid,
});
factory FavVideoItemModel.fromJson(Map<String, dynamic> json) =>
FavVideoItemModel(
id: json['id'] as int?,
fid: json['fid'] as int?,
mid: json['mid'] as int?,
attr: json['attr'] as int?,
attrDesc: json['attr_desc'] as String?,
title: json['title'] as String?,
cover: json['cover'] as String?,
upper: json['upper'] == null
? null
: Upper.fromJson(json['upper'] as Map<String, dynamic>),
coverType: json['cover_type'] as int?,
intro: json['intro'] as String?,
ctime: json['ctime'] as int?,
mtime: json['mtime'] as int?,
state: json['state'] as int?,
favState: json['fav_state'] as int?,
mediaCount: json['media_count'] as int?,
viewCount: json['view_count'] as int?,
vt: json['vt'] as int?,
isTop: json['is_top'] as bool?,
recentFav: json['recent_fav'] as dynamic,
playSwitch: json['play_switch'] as int?,
type: json['type'] as int?,
link: json['link'] as String?,
bvid: json['bvid'] as String?,
);
}

View File

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