mirror of
https://github.com/bggRGjQaUbCoE/PiliPlus.git
synced 2026-05-19 23:54:01 +08:00
@@ -1,5 +1,4 @@
|
||||
import 'package:PiliPlus/models/model_owner.dart';
|
||||
import 'package:PiliPlus/utils/extension/iterable_ext.dart';
|
||||
|
||||
class MusicDetail {
|
||||
MusicDetail({
|
||||
@@ -9,40 +8,18 @@ class MusicDetail {
|
||||
required this.mvAid,
|
||||
required this.mvCid,
|
||||
required this.mvBvid,
|
||||
required this.mvIndexOrder,
|
||||
required this.mvFav,
|
||||
required this.mvLikes,
|
||||
required this.mvShares,
|
||||
required this.mvCover,
|
||||
required this.bgColor,
|
||||
required this.mvLyric,
|
||||
required this.supportListen,
|
||||
required this.wishListen,
|
||||
required this.wishCount,
|
||||
required this.musicShares,
|
||||
required this.musicSource,
|
||||
required this.album,
|
||||
required this.artists,
|
||||
required this.artistsList,
|
||||
required this.listenPv,
|
||||
required this.achievement,
|
||||
required this.musicRank,
|
||||
required this.maxListId,
|
||||
required this.showChosen,
|
||||
required this.hotSongHeat,
|
||||
required this.hotSongRank,
|
||||
required this.creationRank,
|
||||
required this.musicOutUrl,
|
||||
// required this.abTest,
|
||||
required this.musicComment,
|
||||
// required this.musicMaterial,
|
||||
required this.isNextgenActivity,
|
||||
required this.isOriginal,
|
||||
required this.musicHot,
|
||||
required this.musicRelation,
|
||||
required this.musicPublish,
|
||||
// required this.musicAchievementTimeline,
|
||||
required this.flowAttr,
|
||||
});
|
||||
|
||||
final String? musicTitle;
|
||||
@@ -51,40 +28,18 @@ class MusicDetail {
|
||||
final int? mvAid;
|
||||
final int? mvCid;
|
||||
final String? mvBvid;
|
||||
final int? mvIndexOrder;
|
||||
final int? mvFav;
|
||||
final int? mvLikes;
|
||||
final int? mvShares;
|
||||
final String? mvCover;
|
||||
final String? bgColor;
|
||||
final String? mvLyric;
|
||||
final bool? supportListen;
|
||||
bool? wishListen;
|
||||
int? wishCount;
|
||||
final int? musicShares;
|
||||
final String? musicSource;
|
||||
final String? album;
|
||||
final List<Artist>? artists;
|
||||
final List<Artist>? artistsList;
|
||||
final int? listenPv;
|
||||
final List<String>? achievement;
|
||||
final String? musicRank;
|
||||
final int? maxListId;
|
||||
final bool? showChosen;
|
||||
final HotSongHeat? hotSongHeat;
|
||||
final Rank? hotSongRank;
|
||||
final Rank? creationRank;
|
||||
final String? musicOutUrl;
|
||||
// final dynamic abTest;
|
||||
final MusicComment? musicComment;
|
||||
// final dynamic musicMaterial;
|
||||
final int? isNextgenActivity;
|
||||
final int? isOriginal;
|
||||
final int? musicHot;
|
||||
final int? musicRelation;
|
||||
final String? musicPublish;
|
||||
// final List<dynamic>? musicAchievementTimeline;
|
||||
final FlowAttr? flowAttr;
|
||||
|
||||
factory MusicDetail.fromJson(Map<String, dynamic> json) {
|
||||
return MusicDetail(
|
||||
@@ -94,121 +49,33 @@ class MusicDetail {
|
||||
mvAid: json["mv_aid"],
|
||||
mvCid: json["mv_cid"],
|
||||
mvBvid: json["mv_bvid"],
|
||||
mvIndexOrder: json["mv_index_order"],
|
||||
mvFav: json["mv_fav"],
|
||||
mvLikes: json["mv_likes"],
|
||||
mvShares: json["mv_shares"],
|
||||
mvCover: json["mv_cover"],
|
||||
bgColor: json["bg_color"],
|
||||
mvLyric: json["mv_lyric"],
|
||||
supportListen: json["support_listen"],
|
||||
wishListen: json["wish_listen"],
|
||||
wishCount: json["wish_count"],
|
||||
musicShares: json["music_shares"],
|
||||
musicSource: json["music_source"],
|
||||
album: json["album"],
|
||||
artists: (json["artists"] as List?)
|
||||
?.map((x) => Artist.fromJson(x))
|
||||
.toList(),
|
||||
artistsList: (json["artists_list"] as List?)
|
||||
?.map((x) => Artist.fromJson(x))
|
||||
.toList(),
|
||||
listenPv: json["listen_pv"],
|
||||
achievement: (json["achievement"] as List?)?.fromCast(),
|
||||
musicRank: json["music_rank"],
|
||||
maxListId: json["max_list_id"],
|
||||
showChosen: json["show_chosen"],
|
||||
hotSongHeat: json["hot_song_heat"] == null
|
||||
? null
|
||||
: HotSongHeat.fromJson(json["hot_song_heat"]),
|
||||
hotSongRank: json["hot_song_rank"] == null
|
||||
? null
|
||||
: Rank.fromJson(json["hot_song_rank"]),
|
||||
creationRank: json["creation_rank"] == null
|
||||
? null
|
||||
: Rank.fromJson(json["creation_rank"]),
|
||||
musicOutUrl: json["music_out_url"],
|
||||
musicComment: json["music_comment"] == null
|
||||
? null
|
||||
: MusicComment.fromJson(json["music_comment"]),
|
||||
isNextgenActivity: json["is_nextgen_activity"],
|
||||
isOriginal: json["is_original"],
|
||||
musicHot: json["music_hot"],
|
||||
musicRelation: json["music_relation"],
|
||||
musicPublish: json["music_publish"],
|
||||
flowAttr: json["flow_attr"] == null
|
||||
? null
|
||||
: FlowAttr.fromJson(json["flow_attr"]),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
class Artist extends Owner {
|
||||
String? identity;
|
||||
int? identifyType;
|
||||
|
||||
Artist.fromJson(Map<String, dynamic> json) : super.fromJson(json) {
|
||||
identity = json["identity"];
|
||||
identifyType = json["identify_type"];
|
||||
}
|
||||
}
|
||||
|
||||
class Rank {
|
||||
Rank({
|
||||
required this.lastUpdate,
|
||||
required this.highestRank,
|
||||
required this.onListTimes,
|
||||
required this.listDetail,
|
||||
});
|
||||
|
||||
final int? lastUpdate;
|
||||
final int? highestRank;
|
||||
final int? onListTimes;
|
||||
final List<ListDetail>? listDetail;
|
||||
|
||||
factory Rank.fromJson(Map<String, dynamic> json) {
|
||||
return Rank(
|
||||
lastUpdate: json["last_update"],
|
||||
highestRank: json["highest_rank"],
|
||||
onListTimes: json["on_list_times"],
|
||||
listDetail: (json["list_detail"] as List?)
|
||||
?.map((x) => ListDetail.fromJson(x))
|
||||
.toList(),
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
class ListDetail {
|
||||
ListDetail({
|
||||
required this.date,
|
||||
required this.rank,
|
||||
});
|
||||
|
||||
final int? date;
|
||||
final int? rank;
|
||||
|
||||
factory ListDetail.fromJson(Map<String, dynamic> json) {
|
||||
return ListDetail(
|
||||
date: json["date"],
|
||||
rank: json["rank"],
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
class FlowAttr {
|
||||
FlowAttr({
|
||||
required this.noShare,
|
||||
required this.noComment,
|
||||
});
|
||||
|
||||
final bool? noShare;
|
||||
final bool? noComment;
|
||||
|
||||
factory FlowAttr.fromJson(Map<String, dynamic> json) {
|
||||
return FlowAttr(
|
||||
noShare: json["no_share"],
|
||||
noComment: json["no_comment"],
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -250,20 +117,17 @@ class SongHeat {
|
||||
|
||||
class MusicComment {
|
||||
MusicComment({
|
||||
required this.state,
|
||||
required this.nums,
|
||||
required this.oid,
|
||||
required this.pageType,
|
||||
});
|
||||
|
||||
final int? state;
|
||||
final int? nums;
|
||||
final int? oid;
|
||||
final int? pageType;
|
||||
|
||||
factory MusicComment.fromJson(Map<String, dynamic> json) {
|
||||
return MusicComment(
|
||||
state: json["state"],
|
||||
nums: json["nums"],
|
||||
oid: json["oid"],
|
||||
pageType: json["page_type"],
|
||||
|
||||
Reference in New Issue
Block a user