opt handle res

Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
bggRGjQaUbCoE
2025-05-25 11:16:35 +08:00
parent f29385ccef
commit fd55383778
91 changed files with 957 additions and 387 deletions

View File

@@ -0,0 +1,16 @@
class Author {
Author({
this.mid,
this.name,
this.face,
});
String? mid;
String? name;
String? face;
Author.fromJson(Map<String, dynamic> json) {
mid = json["mid"];
name = json["name"];
face = json['face'];
}
}

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,22 @@
import 'package:PiliPlus/models/fav_article/item.dart';
class FavArticleData {
List<FavArticleItemModel>? items;
bool? hasMore;
String? offset;
FavArticleData({
this.items,
this.hasMore,
this.offset,
});
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?,
);
}

View File

@@ -0,0 +1,43 @@
import 'package:PiliPlus/models/fav_article/author.dart';
import 'package:PiliPlus/models/fav_article/cover.dart';
import 'package:PiliPlus/models/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

@@ -1,7 +1,7 @@
import 'package:PiliPlus/pages/common/multi_select_controller.dart';
class FavArticleModel with MultiSelectData {
FavArticleModel({
class FavNoteModel with MultiSelectData {
FavNoteModel({
this.webUrl,
this.title,
this.summary,
@@ -19,7 +19,7 @@ class FavArticleModel with MultiSelectData {
dynamic cvid;
dynamic noteId;
FavArticleModel.fromJson(Map json) {
FavNoteModel.fromJson(Map json) {
webUrl = json['web_url'];
title = json['title'];
summary = json['summary'];

View File

@@ -0,0 +1,55 @@
import 'package:PiliPlus/models/member_ss/stat.dart';
class MemberSsArchive {
int? aid;
String? bvid;
int? ctime;
int? duration;
bool? enableVt;
bool? interactiveVideo;
String? pic;
int? playbackPosition;
int? pubdate;
MemberSsStat? stat;
int? state;
String? title;
int? ugcPay;
String? vtDisplay;
int? isLessonVideo;
MemberSsArchive({
this.aid,
this.bvid,
this.ctime,
this.duration,
this.enableVt,
this.interactiveVideo,
this.pic,
this.playbackPosition,
this.pubdate,
this.stat,
this.state,
this.title,
this.ugcPay,
this.vtDisplay,
this.isLessonVideo,
});
factory MemberSsArchive.fromJson(Map<String, dynamic> json) =>
MemberSsArchive(
aid: json["aid"],
bvid: json["bvid"],
ctime: json["ctime"],
duration: json["duration"],
enableVt: json["enable_vt"],
interactiveVideo: json["interactive_video"],
pic: json["pic"],
playbackPosition: json["playback_position"],
pubdate: json["pubdate"],
stat: json["stat"] == null ? null : MemberSsStat.fromJson(json["stat"]),
state: json["state"],
title: json["title"],
ugcPay: json["ugc_pay"],
vtDisplay: json["vt_display"],
isLessonVideo: json["is_lesson_video"],
);
}

View File

@@ -0,0 +1,26 @@
import 'package:PiliPlus/models/member_ss/page.dart';
import 'package:PiliPlus/models/member_ss/season.dart';
class MemberSsData {
MemberSsPage? page;
List<MemberSsModel>? seasonsList;
List<MemberSsModel>? seriesList;
MemberSsData({
this.page,
this.seasonsList,
this.seriesList,
});
factory MemberSsData.fromJson(Map<String, dynamic> json) => MemberSsData(
page: json["page"] == null ? null : MemberSsPage.fromJson(json["page"]),
seasonsList: json["seasons_list"] == null
? null
: List<MemberSsModel>.from(
json["seasons_list"]!.map((x) => MemberSsModel.fromJson(x))),
seriesList: json["series_list"] == null
? null
: List<MemberSsModel>.from(
json["series_list"]!.map((x) => MemberSsModel.fromJson(x))),
);
}

View File

@@ -0,0 +1,17 @@
class MemberSsPage {
int? pageNum;
int? pageSize;
int? total;
MemberSsPage({
this.pageNum,
this.pageSize,
this.total,
});
factory MemberSsPage.fromJson(Map<String, dynamic> json) => MemberSsPage(
pageNum: json["page_num"],
pageSize: json["page_size"],
total: json["total"],
);
}

View File

@@ -0,0 +1,25 @@
import 'package:PiliPlus/models/member_ss/archive.dart';
import 'package:PiliPlus/models/member_ss/stat.dart';
class MemberSsModel {
List<MemberSsArchive>? archives;
MemberSsMeta? meta;
List<int>? recentAids;
MemberSsModel({
this.archives,
this.meta,
this.recentAids,
});
factory MemberSsModel.fromJson(Map<String, dynamic> json) => MemberSsModel(
archives: json["archives"] == null
? null
: List<MemberSsArchive>.from(
json["archives"]!.map((x) => MemberSsArchive.fromJson(x))),
meta: json["meta"] == null ? null : MemberSsMeta.fromJson(json["meta"]),
recentAids: json["recent_aids"] == null
? null
: List<int>.from(json["recent_aids"]!.map((x) => x)),
);
}

View File

@@ -0,0 +1,50 @@
class MemberSsStat {
int? view;
int? vt;
MemberSsStat({
this.view,
this.vt,
});
factory MemberSsStat.fromJson(Map<String, dynamic> json) => MemberSsStat(
view: json["view"],
vt: json["vt"],
);
}
class MemberSsMeta {
int? category;
String? cover;
String? description;
int? mid;
String? name;
int? ptime;
int? total;
dynamic seasonId;
dynamic seriesId;
MemberSsMeta({
this.category,
this.cover,
this.description,
this.mid,
this.name,
this.ptime,
this.total,
this.seasonId,
this.seriesId,
});
factory MemberSsMeta.fromJson(Map<String, dynamic> json) => MemberSsMeta(
category: json["category"],
cover: json["cover"],
description: json["description"],
mid: json["mid"],
name: json["name"],
ptime: json["ptime"],
total: json["total"],
seasonId: json["season_id"],
seriesId: json["series_id"],
);
}

View File

@@ -66,7 +66,7 @@ class BangumiListItemModel with MultiSelectData {
String? subTitle;
String? title;
String? titleIcon;
Map? newEp;
NewEp? newEp;
String? progress;
String? renewalTime;
@@ -88,7 +88,15 @@ class BangumiListItemModel with MultiSelectData {
subTitle = json['sub_title'];
title = json['title'];
titleIcon = json['title_icon'];
newEp = json['new_ep'];
newEp = json['new_ep'] == null ? null : NewEp.fromJson(json['new_ep']);
progress = json['progress'];
}
}
class NewEp {
String? indexShow;
NewEp.fromJson(Map<String, dynamic> json) {
indexShow = json['index_show'];
}
}

View File

@@ -0,0 +1,22 @@
import 'package:PiliPlus/models/pgc/pgc_index_item/list.dart';
class PgcIndexItemData {
int? hasNext;
List<PgcIndexItemModel>? list;
int? num;
int? size;
int? total;
PgcIndexItemData({this.hasNext, this.list, this.num, this.size, this.total});
factory PgcIndexItemData.fromJson(Map<String, dynamic> json) =>
PgcIndexItemData(
hasNext: json['has_next'] as int?,
list: (json['list'] as List<dynamic>?)
?.map((e) => PgcIndexItemModel.fromJson(e as Map<String, dynamic>))
.toList(),
num: json['num'] as int?,
size: json['size'] as int?,
total: json['total'] as int?,
);
}

View File

@@ -0,0 +1,57 @@
class PgcIndexItemModel {
String? badge;
int? badgeType;
String? cover;
String? indexShow;
int? isFinish;
String? link;
int? mediaId;
String? order;
String? orderType;
String? score;
int? seasonId;
int? seasonStatus;
int? seasonType;
String? subTitle;
String? title;
String? titleIcon;
PgcIndexItemModel({
this.badge,
this.badgeType,
this.cover,
this.indexShow,
this.isFinish,
this.link,
this.mediaId,
this.order,
this.orderType,
this.score,
this.seasonId,
this.seasonStatus,
this.seasonType,
this.subTitle,
this.title,
this.titleIcon,
});
factory PgcIndexItemModel.fromJson(Map<String, dynamic> json) =>
PgcIndexItemModel(
badge: json['badge'] as String?,
badgeType: json['badge_type'] as int?,
cover: json['cover'] as String?,
indexShow: json['index_show'] as String?,
isFinish: json['is_finish'] as int?,
link: json['link'] as String?,
mediaId: json['media_id'] as int?,
order: json['order'] as String?,
orderType: json['order_type'] as String?,
score: json['score'] as String?,
seasonId: json['season_id'] as int?,
seasonStatus: json['season_status'] as int?,
seasonType: json['season_type'] as int?,
subTitle: json['subTitle'] as String?,
title: json['title'] as String?,
titleIcon: json['title_icon'] as String?,
);
}

View File

@@ -1,4 +1,4 @@
import 'package:PiliPlus/models/bangumi/pgc_rank/pgc_rank_item_model.dart';
import 'package:PiliPlus/models/pgc/pgc_rank/pgc_rank_item_model.dart';
class Data {
List<PgcRankItemModel>? list;

View File

@@ -1,7 +1,7 @@
import 'package:PiliPlus/models/bangumi/pgc_rank/badge_info.dart';
import 'package:PiliPlus/models/bangumi/pgc_rank/icon_font.dart';
import 'package:PiliPlus/models/bangumi/pgc_rank/new_ep.dart';
import 'package:PiliPlus/models/bangumi/pgc_rank/stat.dart';
import 'package:PiliPlus/models/pgc/pgc_rank/badge_info.dart';
import 'package:PiliPlus/models/pgc/pgc_rank/icon_font.dart';
import 'package:PiliPlus/models/pgc/pgc_rank/new_ep.dart';
import 'package:PiliPlus/models/pgc/pgc_rank/stat.dart';
class PgcRankItemModel {
String? badge;

View File

@@ -1,4 +1,4 @@
import 'package:PiliPlus/models/bangumi/pgc_review/list.dart';
import 'package:PiliPlus/models/pgc/pgc_review/list.dart';
class PgcReviewData {
List<PgcReviewItemModel>? list;

View File

@@ -1,5 +1,5 @@
import 'package:PiliPlus/models/bangumi/pgc_review/author.dart';
import 'package:PiliPlus/models/bangumi/pgc_review/stat.dart';
import 'package:PiliPlus/models/pgc/pgc_review/author.dart';
import 'package:PiliPlus/models/pgc/pgc_review/stat.dart';
class PgcReviewItemModel {
Author? author;

View File

@@ -1,4 +1,4 @@
import 'package:PiliPlus/models/bangumi/pgc_timeline/icon_font.dart';
import 'package:PiliPlus/models/pgc/pgc_timeline/icon_font.dart';
class Episode {
String? cover;

View File

@@ -1,4 +1,4 @@
import 'package:PiliPlus/models/bangumi/pgc_timeline/result.dart';
import 'package:PiliPlus/models/pgc/pgc_timeline/result.dart';
class PgcTimeline {
int? code;

View File

@@ -1,4 +1,4 @@
import 'package:PiliPlus/models/bangumi/pgc_timeline/episode.dart';
import 'package:PiliPlus/models/pgc/pgc_timeline/episode.dart';
class Result {
String? date;

View File

@@ -1,3 +1,4 @@
import 'package:PiliPlus/models/space_fav/list.dart';
import 'package:json_annotation/json_annotation.dart';
part 'favourite2.g.dart';
@@ -5,7 +6,7 @@ part 'favourite2.g.dart';
@JsonSerializable()
class Favourite2 {
int? count;
List<dynamic>? item;
List<SpaceFavItemModel>? item;
Favourite2({this.count, this.item});

View File

@@ -8,11 +8,13 @@ part of 'favourite2.dart';
Favourite2 _$Favourite2FromJson(Map<String, dynamic> json) => Favourite2(
count: (json['count'] as num?)?.toInt(),
item: json['item'] as List<dynamic>?,
item: (json['item'] as List<dynamic>?)
?.map((e) => SpaceFavItemModel.fromJson(e))
.toList(),
);
Map<String, dynamic> _$Favourite2ToJson(Favourite2 instance) =>
<String, dynamic>{
'count': instance.count,
'item': instance.item,
'item': instance.item?.map((e) => e.toJson()).toList(),
};

View File

@@ -4,7 +4,7 @@ import 'package:json_annotation/json_annotation.dart';
part 'list.g.dart';
@JsonSerializable()
class FavList {
class SpaceFavItemModel {
int? id;
int? fid;
int? mid;
@@ -36,8 +36,14 @@ class FavList {
int? type;
String? link;
String? bvid;
int? mediaId;
int? count;
int? isPublic;
FavList({
SpaceFavItemModel({
this.mediaId,
this.count,
this.isPublic,
this.id,
this.fid,
this.mid,
@@ -63,7 +69,8 @@ class FavList {
this.bvid,
});
factory FavList.fromJson(Map<String, dynamic> json) => _$ListFromJson(json);
factory SpaceFavItemModel.fromJson(Map<String, dynamic> json) =>
_$ListFromJson(json);
Map<String, dynamic> toJson() => _$ListToJson(this);
}

View File

@@ -6,7 +6,11 @@ part of 'list.dart';
// JsonSerializableGenerator
// **************************************************************************
FavList _$ListFromJson(Map<String, dynamic> json) => FavList(
SpaceFavItemModel _$ListFromJson(Map<String, dynamic> json) =>
SpaceFavItemModel(
mediaId: (json['media_id'] as num?)?.toInt(),
count: (json['count'] as num?)?.toInt(),
isPublic: (json['is_public'] as num?)?.toInt(),
id: (json['id'] as num?)?.toInt(),
fid: (json['fid'] as num?)?.toInt(),
mid: (json['mid'] as num?)?.toInt(),
@@ -34,7 +38,8 @@ FavList _$ListFromJson(Map<String, dynamic> json) => FavList(
bvid: json['bvid'] as String?,
);
Map<String, dynamic> _$ListToJson(FavList instance) => <String, dynamic>{
Map<String, dynamic> _$ListToJson(SpaceFavItemModel instance) =>
<String, dynamic>{
'id': instance.id,
'fid': instance.fid,
'mid': instance.mid,

View File

@@ -6,7 +6,7 @@ part 'media_list_response.g.dart';
@JsonSerializable()
class MediaListResponse {
int? count;
List<FavList>? list;
List<SpaceFavItemModel>? list;
@JsonKey(name: 'has_more')
bool? hasMore;

View File

@@ -10,7 +10,7 @@ MediaListResponse _$MediaListResponseFromJson(Map<String, dynamic> json) =>
MediaListResponse(
count: (json['count'] as num?)?.toInt(),
list: (json['list'] as List<dynamic>?)
?.map((item) => FavList.fromJson(item))
?.map((item) => SpaceFavItemModel.fromJson(item))
.toList(),
hasMore: json['has_more'] as bool?,
);

View File

@@ -0,0 +1,39 @@
import 'package:PiliPlus/models/model_avatar.dart';
import 'package:PiliPlus/models/model_owner.dart';
class Author extends Owner {
int? level;
int? isSeniorMember;
Vip? vipInfo;
Pendant? pendant;
BaseOfficialVerify? official;
Author({
super.mid,
super.face,
super.name,
this.level,
this.isSeniorMember,
this.vipInfo,
this.pendant,
this.official,
});
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>),
);
}

View File

@@ -0,0 +1,22 @@
import 'package:PiliPlus/models/video/note_list/list.dart';
import 'package:PiliPlus/models/video/note_list/page.dart';
class NoteListData {
List<NoteListItemModel>? list;
Page? page;
bool? showPublicNote;
String? message;
NoteListData({this.list, this.page, this.showPublicNote, this.message});
factory NoteListData.fromJson(Map<String, dynamic> json) => NoteListData(
list: (json['list'] as List<dynamic>?)
?.map((e) => NoteListItemModel.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,41 @@
import 'package:PiliPlus/models/video/note_list/author.dart';
class NoteListItemModel {
int? cvid;
String? title;
String? summary;
String? pubtime;
String? webUrl;
String? message;
Author? author;
int? likes;
bool? hasLike;
NoteListItemModel({
this.cvid,
this.title,
this.summary,
this.pubtime,
this.webUrl,
this.message,
this.author,
this.likes,
this.hasLike,
});
factory NoteListItemModel.fromJson(Map<String, dynamic> json) =>
NoteListItemModel(
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"] == null
? null
: List<double>.from(json["default"]!.map((x) => x?.toDouble())),
);
}

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"] == null ? null : List<String>.from(json["image"]),
index: json["index"] == null ? null : List<int>.from(json["index"]),
);
}

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"],
);
}