From 5600ab52031d0ef4ecbeca05017250447445c473 Mon Sep 17 00:00:00 2001 From: guozhigq Date: Mon, 14 Aug 2023 15:38:56 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=8E=A8=E8=8D=90=E6=95=B0=E6=8D=AE?= =?UTF-8?q?=E7=BC=93=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/models/home/rcmd/result.dart | 58 ++++++-- lib/models/home/rcmd/result.g.dart | 209 +++++++++++++++++++++++++++++ lib/pages/rcmd/controller.dart | 18 +-- lib/utils/storage.dart | 7 +- 4 files changed, 266 insertions(+), 26 deletions(-) create mode 100644 lib/models/home/rcmd/result.g.dart diff --git a/lib/models/home/rcmd/result.dart b/lib/models/home/rcmd/result.dart index 8b09eef0..94ed0727 100644 --- a/lib/models/home/rcmd/result.dart +++ b/lib/models/home/rcmd/result.dart @@ -1,5 +1,8 @@ -import 'dart:developer'; +import 'package:hive/hive.dart'; +part 'result.g.dart'; + +@HiveType(typeId: 0) class RecVideoItemAppModel { RecVideoItemAppModel({ this.id, @@ -24,27 +27,47 @@ class RecVideoItemAppModel { this.adInfo, }); + @HiveField(0) int? id; + @HiveField(1) int? aid; + @HiveField(2) String? bvid; + @HiveField(3) int? cid; + @HiveField(4) String? pic; - Stat? stat; + @HiveField(5) + RcmdStat? stat; + @HiveField(6) String? duration; + @HiveField(7) String? title; + @HiveField(8) int? isFollowed; - Owner? owner; + @HiveField(9) + RcmdOwner? owner; + @HiveField(10) RcmdReason? rcmdReason; + @HiveField(11) String? goto; + @HiveField(12) int? param; + @HiveField(13) String? uri; + @HiveField(14) String? talkBack; // 番剧 + @HiveField(15) String? bangumiView; + @HiveField(16) String? bangumiFollow; + @HiveField(17) String? bangumiBadge; + @HiveField(18) String? cardType; + @HiveField(19) Map? adInfo; RecVideoItemAppModel.fromJson(Map json) { @@ -52,13 +75,14 @@ class RecVideoItemAppModel { ? json['player_args']['aid'] : int.parse(json['param'] ?? '-1'); aid = json['player_args'] != null ? json['player_args']['aid'] : -1; + bvid = null; cid = json['player_args'] != null ? json['player_args']['cid'] : -1; pic = json['cover']; - stat = Stat.fromJson(json); + stat = RcmdStat.fromJson(json); duration = json['cover_right_text']; title = json['title']; isFollowed = 0; - owner = Owner.fromJson(json); + owner = RcmdOwner.fromJson(json); rcmdReason = json['rcmd_reason_style'] != null ? RcmdReason.fromJson(json['rcmd_reason_style']) : null; @@ -78,32 +102,36 @@ class RecVideoItemAppModel { } } -class Stat { - Stat({ +@HiveType(typeId: 1) +class RcmdStat { + RcmdStat({ this.view, this.like, this.danmu, }); + @HiveField(0) String? view; + @HiveField(1) String? like; + @HiveField(2) String? danmu; - Stat.fromJson(Map json) { + RcmdStat.fromJson(Map json) { view = json["cover_left_text_1"]; danmu = json['cover_left_text_2']; } } -class Owner { - Owner({this.name}); +@HiveType(typeId: 2) +class RcmdOwner { + RcmdOwner({this.name, this.mid}); + @HiveField(0) String? name; + @HiveField(1) int? mid; - Owner.fromJson(Map json) { - if (json['goto'] == 'bangumi') { - log(json.toString()); - } + RcmdOwner.fromJson(Map json) { name = json['goto'] == 'av' ? json['args']['up_name'] : json['desc_button'] != null @@ -113,11 +141,13 @@ class Owner { } } +@HiveType(typeId: 8) class RcmdReason { RcmdReason({ this.content, }); + @HiveField(0) String? content; RcmdReason.fromJson(Map json) { diff --git a/lib/models/home/rcmd/result.g.dart b/lib/models/home/rcmd/result.g.dart new file mode 100644 index 00000000..43bf4bcf --- /dev/null +++ b/lib/models/home/rcmd/result.g.dart @@ -0,0 +1,209 @@ +// GENERATED CODE - DO NOT MODIFY BY HAND + +part of 'result.dart'; + +// ************************************************************************** +// TypeAdapterGenerator +// ************************************************************************** + +class RecVideoItemAppModelAdapter extends TypeAdapter { + @override + final int typeId = 0; + + @override + RecVideoItemAppModel read(BinaryReader reader) { + final numOfFields = reader.readByte(); + final fields = { + for (int i = 0; i < numOfFields; i++) reader.readByte(): reader.read(), + }; + return RecVideoItemAppModel( + id: fields[0] as int?, + aid: fields[1] as int?, + bvid: fields[2] as String?, + cid: fields[3] as int?, + pic: fields[4] as String?, + stat: fields[5] as RcmdStat?, + duration: fields[6] as String?, + title: fields[7] as String?, + isFollowed: fields[8] as int?, + owner: fields[9] as RcmdOwner?, + rcmdReason: fields[10] as RcmdReason?, + goto: fields[11] as String?, + param: fields[12] as int?, + uri: fields[13] as String?, + talkBack: fields[14] as String?, + bangumiView: fields[15] as String?, + bangumiFollow: fields[16] as String?, + bangumiBadge: fields[17] as String?, + cardType: fields[18] as String?, + adInfo: (fields[19] as Map?)?.cast(), + ); + } + + @override + void write(BinaryWriter writer, RecVideoItemAppModel obj) { + writer + ..writeByte(20) + ..writeByte(0) + ..write(obj.id) + ..writeByte(1) + ..write(obj.aid) + ..writeByte(2) + ..write(obj.bvid) + ..writeByte(3) + ..write(obj.cid) + ..writeByte(4) + ..write(obj.pic) + ..writeByte(5) + ..write(obj.stat) + ..writeByte(6) + ..write(obj.duration) + ..writeByte(7) + ..write(obj.title) + ..writeByte(8) + ..write(obj.isFollowed) + ..writeByte(9) + ..write(obj.owner) + ..writeByte(10) + ..write(obj.rcmdReason) + ..writeByte(11) + ..write(obj.goto) + ..writeByte(12) + ..write(obj.param) + ..writeByte(13) + ..write(obj.uri) + ..writeByte(14) + ..write(obj.talkBack) + ..writeByte(15) + ..write(obj.bangumiView) + ..writeByte(16) + ..write(obj.bangumiFollow) + ..writeByte(17) + ..write(obj.bangumiBadge) + ..writeByte(18) + ..write(obj.cardType) + ..writeByte(19) + ..write(obj.adInfo); + } + + @override + int get hashCode => typeId.hashCode; + + @override + bool operator ==(Object other) => + identical(this, other) || + other is RecVideoItemAppModelAdapter && + runtimeType == other.runtimeType && + typeId == other.typeId; +} + +class RcmdStatAdapter extends TypeAdapter { + @override + final int typeId = 1; + + @override + RcmdStat read(BinaryReader reader) { + final numOfFields = reader.readByte(); + final fields = { + for (int i = 0; i < numOfFields; i++) reader.readByte(): reader.read(), + }; + return RcmdStat( + view: fields[0] as String?, + like: fields[1] as String?, + danmu: fields[2] as String?, + ); + } + + @override + void write(BinaryWriter writer, RcmdStat obj) { + writer + ..writeByte(3) + ..writeByte(0) + ..write(obj.view) + ..writeByte(1) + ..write(obj.like) + ..writeByte(2) + ..write(obj.danmu); + } + + @override + int get hashCode => typeId.hashCode; + + @override + bool operator ==(Object other) => + identical(this, other) || + other is RcmdStatAdapter && + runtimeType == other.runtimeType && + typeId == other.typeId; +} + +class RcmdOwnerAdapter extends TypeAdapter { + @override + final int typeId = 2; + + @override + RcmdOwner read(BinaryReader reader) { + final numOfFields = reader.readByte(); + final fields = { + for (int i = 0; i < numOfFields; i++) reader.readByte(): reader.read(), + }; + return RcmdOwner( + name: fields[0] as String?, + mid: fields[1] as int?, + ); + } + + @override + void write(BinaryWriter writer, RcmdOwner obj) { + writer + ..writeByte(2) + ..writeByte(0) + ..write(obj.name) + ..writeByte(1) + ..write(obj.mid); + } + + @override + int get hashCode => typeId.hashCode; + + @override + bool operator ==(Object other) => + identical(this, other) || + other is RcmdOwnerAdapter && + runtimeType == other.runtimeType && + typeId == other.typeId; +} + +class RcmdReasonAdapter extends TypeAdapter { + @override + final int typeId = 8; + + @override + RcmdReason read(BinaryReader reader) { + final numOfFields = reader.readByte(); + final fields = { + for (int i = 0; i < numOfFields; i++) reader.readByte(): reader.read(), + }; + return RcmdReason( + content: fields[0] as String?, + ); + } + + @override + void write(BinaryWriter writer, RcmdReason obj) { + writer + ..writeByte(1) + ..writeByte(0) + ..write(obj.content); + } + + @override + int get hashCode => typeId.hashCode; + + @override + bool operator ==(Object other) => + identical(this, other) || + other is RcmdReasonAdapter && + runtimeType == other.runtimeType && + typeId == other.typeId; +} diff --git a/lib/pages/rcmd/controller.dart b/lib/pages/rcmd/controller.dart index 8624c401..f642a319 100644 --- a/lib/pages/rcmd/controller.dart +++ b/lib/pages/rcmd/controller.dart @@ -17,14 +17,14 @@ class RcmdController extends GetxController { @override void onInit() { super.onInit(); - // if (recVideo.get('cacheList') != null && - // recVideo.get('cacheList').isNotEmpty) { - // List list = []; - // for (var i in recVideo.get('cacheList')) { - // list.add(i); - // } - // videoList.value = list; - // } + if (recVideo.get('cacheList') != null && + recVideo.get('cacheList').isNotEmpty) { + List list = []; + for (var i in recVideo.get('cacheList')) { + list.add(i); + } + videoList.value = list; + } } // 获取推荐 @@ -47,7 +47,7 @@ class RcmdController extends GetxController { } else if (type == 'onLoad') { videoList.addAll(res['data']); } - // recVideo.put('cacheList', res['data']); + recVideo.put('cacheList', res['data']); _currentPage += 1; } isLoadingMore = false; diff --git a/lib/utils/storage.dart b/lib/utils/storage.dart index a5fc4ce2..c40c2a31 100644 --- a/lib/utils/storage.dart +++ b/lib/utils/storage.dart @@ -1,8 +1,8 @@ // import 'package:hive/hive.dart'; import 'package:hive_flutter/hive_flutter.dart'; import 'package:path_provider/path_provider.dart'; +import 'package:pilipala/models/home/rcmd/result.dart'; import 'package:pilipala/models/model_owner.dart'; -import 'package:pilipala/models/model_rec_video_item.dart'; import 'package:pilipala/models/search/hot.dart'; import 'package:pilipala/models/user/info.dart'; @@ -38,9 +38,10 @@ class GStrorage { } static regAdapter() { - Hive.registerAdapter(RecVideoItemModelAdapter()); + Hive.registerAdapter(RecVideoItemAppModelAdapter()); Hive.registerAdapter(RcmdReasonAdapter()); - Hive.registerAdapter(StatAdapter()); + Hive.registerAdapter(RcmdStatAdapter()); + Hive.registerAdapter(RcmdOwnerAdapter()); Hive.registerAdapter(OwnerAdapter()); Hive.registerAdapter(UserInfoDataAdapter()); Hive.registerAdapter(LevelInfoAdapter());