refa: later view page

Signed-off-by: bggRGjQaUbCoE <githubaccount56556@proton.me>
This commit is contained in:
bggRGjQaUbCoE
2025-04-12 15:05:57 +08:00
parent 4d3f739a0c
commit afc8c5f873
25 changed files with 918 additions and 571 deletions

View File

@@ -223,7 +223,7 @@ class Api {
'${HttpString.tUrl}/dynamic_like/v1/dynamic_like/thumb';
// 获取稍后再看
static const String seeYouLater = '/x/v2/history/toview';
static const String seeYouLater = '/x/v2/history/toview/web';
// 获取历史记录
static const String historyList = '/x/web-interface/history/cursor';
@@ -381,7 +381,7 @@ class Api {
static const String toViewLater = '/x/v2/history/toview/add';
// 移除已观看
static const String toViewDel = '/x/v2/history/toview/del';
static const String toViewDel = '/x/v2/history/toview/v2/dels';
// 清空稍后再看
static const String toViewClear = '/x/v2/history/toview/clear';

View File

@@ -97,7 +97,6 @@ class DanmakuHttp {
if (response.statusCode != 200) {
return {
'status': false,
'data': [],
'msg': '弹幕发送失败,状态码:${response.statusCode}',
};
}
@@ -109,7 +108,6 @@ class DanmakuHttp {
} else {
return {
'status': false,
'data': [],
'msg': "${response.data['code']}: ${response.data['message']}",
};
}

View File

@@ -12,7 +12,6 @@ class DanmakuFilterHttp {
} else {
return {
'status': false,
'data': [],
'msg': res.data['message'],
};
}

View File

@@ -53,11 +53,7 @@ class DynamicsHttp {
'data': FollowUpModel.fromJson(res.data['data']),
};
} else {
return {
'status': false,
'data': [],
'msg': res.data['message'],
};
return {'status': false, 'msg': res.data['message']};
}
}
@@ -80,11 +76,7 @@ class DynamicsHttp {
'data': res.data['data'],
};
} else {
return {
'status': false,
'data': [],
'msg': res.data['message'],
};
return {'status': false, 'msg': res.data['message']};
}
}

View File

@@ -17,11 +17,7 @@ class FollowHttp {
'data': FollowDataModel.fromJson(res.data['data'])
};
} else {
return {
'status': false,
'data': [],
'msg': res.data['message'],
};
return {'status': false, 'msg': res.data['message']};
}
}
}

View File

@@ -82,11 +82,7 @@ class LiveHttp {
if (res.data['code'] == 0) {
return {'status': true, 'data': RoomInfoModel.fromJson(res.data['data'])};
} else {
return {
'status': false,
'data': [],
'msg': res.data['message'],
};
return {'status': false, 'msg': res.data['message']};
}
}
@@ -100,11 +96,7 @@ class LiveHttp {
'data': RoomInfoH5Model.fromJson(res.data['data'])
};
} else {
return {
'status': false,
'data': [],
'msg': res.data['message'],
};
return {'status': false, 'msg': res.data['message']};
}
}
@@ -115,11 +107,7 @@ class LiveHttp {
if (res.data['code'] == 0) {
return {'status': true, 'data': res.data['data']['room']};
} else {
return {
'status': false,
'data': [],
'msg': res.data['message'],
};
return {'status': false, 'msg': res.data['message']};
}
}
@@ -130,11 +118,7 @@ class LiveHttp {
if (res.data['code'] == 0) {
return {'status': true, 'data': LiveDanmakuInfo.fromJson(res.data)};
} else {
return {
'status': false,
'data': [],
'msg': res.data['message'],
};
return {'status': false, 'msg': res.data['message']};
}
}

View File

@@ -300,11 +300,7 @@ class MemberHttp {
'data': MemberInfoModel.fromJson(res.data['data'])
};
} else {
return {
'status': false,
'data': [],
'msg': res.data['message'],
};
return {'status': false, 'msg': res.data['message']};
}
}
@@ -313,11 +309,7 @@ class MemberHttp {
if (res.data['code'] == 0) {
return {'status': true, 'data': res.data['data']};
} else {
return {
'status': false,
'data': [],
'msg': res.data['message'],
};
return {'status': false, 'msg': res.data['message']};
}
}
@@ -332,11 +324,7 @@ class MemberHttp {
if (res.data['code'] == 0) {
return {'status': true, 'data': res.data['data']};
} else {
return {
'status': false,
'data': [],
'msg': res.data['message'],
};
return {'status': false, 'msg': res.data['message']};
}
}
@@ -476,11 +464,7 @@ class MemberHttp {
.toList()
};
} else {
return {
'status': false,
'data': [],
'msg': res.data['message'],
};
return {'status': false, 'msg': res.data['message']};
}
}
@@ -523,13 +507,9 @@ class MemberHttp {
),
);
if (res.data['code'] == 0) {
return {'status': true, 'data': [], 'msg': '操作成功'};
return {'status': true, 'msg': '操作成功'};
} else {
return {
'status': false,
'data': [],
'msg': res.data['message'],
};
return {'status': false, 'msg': res.data['message']};
}
}
@@ -555,11 +535,7 @@ class MemberHttp {
.toList()
};
} else {
return {
'status': false,
'data': [],
'msg': res.data['message'],
};
return {'status': false, 'msg': res.data['message']};
}
}
@@ -574,11 +550,7 @@ class MemberHttp {
.toList()
};
} else {
return {
'status': false,
'data': [],
'msg': res.data['message'],
};
return {'status': false, 'msg': res.data['message']};
}
}
@@ -595,11 +567,7 @@ class MemberHttp {
'data': MemberSeasonsDataModel.fromJson(res.data['data']['items_lists'])
};
} else {
return {
'status': false,
'data': [],
'msg': res.data['message'],
};
return {'status': false, 'msg': res.data['message']};
}
}
@@ -687,11 +655,7 @@ class MemberHttp {
debugPrint(err.toString());
}
} else {
return {
'status': false,
'data': [],
'msg': res.data['message'],
};
return {'status': false, 'msg': res.data['message']};
}
}
@@ -702,11 +666,7 @@ class MemberHttp {
if (res.data['code'] == 0) {
return {'status': true, 'data': res.data['data']};
} else {
return {
'status': false,
'data': [],
'msg': res.data['message'],
};
return {'status': false, 'msg': res.data['message']};
}
}

View File

@@ -110,11 +110,7 @@ class MsgHttp {
'data': res.data['data'],
};
} else {
return {
'status': false,
'date': [],
'msg': res.data['message'],
};
return {'status': false, 'msg': res.data['message']};
}
}
@@ -434,21 +430,13 @@ class MsgHttp {
try {
return {
'status': true,
'data': SessionDataModel.fromJson(res.data['data']),
'data': SessionDataModel.fromJson(res.data['data']).sessionList,
};
} catch (err) {
return {
'status': false,
'date': [],
'msg': err.toString(),
};
return {'status': false, 'msg': err.toString()};
}
} else {
return {
'status': false,
'date': [],
'msg': res.data['message'],
};
return {'status': false, 'msg': res.data['message']};
}
}
@@ -470,11 +458,7 @@ class MsgHttp {
debugPrint('err🔟: $err');
}
} else {
return {
'status': false,
'date': [],
'msg': res.data['message'],
};
return {'status': false, 'msg': res.data['message']};
}
}
@@ -500,11 +484,7 @@ class MsgHttp {
debugPrint(err.toString());
}
} else {
return {
'status': false,
'date': [],
'msg': res.data['message'],
};
return {'status': false, 'msg': res.data['message']};
}
}
@@ -532,7 +512,6 @@ class MsgHttp {
} else {
return {
'status': false,
'date': [],
'msg': "message: ${res.data['message']},"
" msg: ${res.data['msg']},"
" code: ${res.data['code']}",
@@ -581,11 +560,7 @@ class MsgHttp {
'data': res.data['data'],
};
} else {
return {
'status': false,
'date': [],
'msg': res.data['message'] ?? res.data['msg'],
};
return {'status': false, 'msg': res.data['message']};
}
}

View File

@@ -351,11 +351,7 @@ class ReplyHttp {
if (res.data['code'] == 0) {
return {'status': true, 'data': res.data['data']};
} else {
return {
'status': false,
'date': [],
'msg': res.data['message'],
};
return {'status': false, 'msg': res.data['message']};
}
}
@@ -379,11 +375,7 @@ class ReplyHttp {
if (res.data['code'] == 0) {
return {'status': true, 'data': res.data['data']};
} else {
return {
'status': false,
'date': [],
'msg': res.data['message'],
};
return {'status': false, 'msg': res.data['message']};
}
}

View File

@@ -29,11 +29,7 @@ class SearchHttp {
};
}
return {
'status': false,
'data': [],
'msg': '请求错误',
};
return {'status': false, 'msg': '请求错误'};
}
// 获取搜索建议
@@ -50,19 +46,17 @@ class SearchHttp {
'status': true,
'data': resultMap['result'] is Map
? SearchSuggestModel.fromJson(resultMap['result'])
: [],
: null,
};
} else {
return {
'status': false,
'data': [],
'msg': '请求错误 🙅',
};
}
} else {
return {
'status': false,
'data': [],
'msg': '请求错误 🙅',
};
}
@@ -210,11 +204,7 @@ class SearchHttp {
'data': BangumiInfoModel.fromJson(res.data['result']),
};
} else {
return {
'status': false,
'data': [],
'msg': res.data['message'],
};
return {'status': false, 'msg': res.data['message']};
}
}
}

View File

@@ -2,6 +2,7 @@ import 'package:PiliPlus/http/loading_state.dart';
import 'package:PiliPlus/models/video/later.dart';
import 'package:PiliPlus/utils/global_data.dart';
import 'package:PiliPlus/utils/utils.dart';
import 'package:PiliPlus/utils/wbi_sign.dart';
import 'package:dio/dio.dart';
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
import '../common/constants.dart';
@@ -43,7 +44,7 @@ class UserHttp {
UserStat data = UserStat.fromJson(res.data['data']);
return {'status': true, 'data': data};
} else {
return {'status': false, 'data': [], 'msg': res.data['message']};
return {'status': false, 'msg': res.data['message']};
}
}
@@ -197,16 +198,29 @@ class UserHttp {
}
// 稍后再看
static Future<LoadingState<Map>> seeYouLater() async {
var res = await Request().get(Api.seeYouLater);
static Future<LoadingState<Map>> seeYouLater({
required int page,
int viewed = 0,
String keyword = '',
bool asc = false,
}) async {
var res = await Request().get(
Api.seeYouLater,
queryParameters: await WbiSign.makSign({
'pn': page,
'ps': 20,
'viewed': viewed,
'key': keyword,
'asc': asc,
'need_split': true,
'web_location': 333.881,
}),
);
if (res.data['code'] == 0) {
if (res.data['data']['count'] == 0) {
return LoadingState.success({
'list': [],
'count': 0,
});
return LoadingState.success({'count': 0});
}
List<HotVideoItemModel> list = [];
List<HotVideoItemModel> list = <HotVideoItemModel>[];
if (res.data['data']?['list'] != null) {
for (var i in res.data['data']['list']) {
list.add(HotVideoItemModel.fromJson(i));
@@ -260,7 +274,7 @@ class UserHttp {
if (res.data['code'] == 0) {
return {'status': true, 'data': res.data['data']};
} else {
return {'status': false, 'data': [], 'msg': res.data['message']};
return {'status': false, 'msg': res.data['message']};
}
}
@@ -296,11 +310,10 @@ class UserHttp {
}
// 移除已观看
static Future toViewDel({List<int?>? aids}) async {
static Future toViewDel({required List<int?> aids}) async {
final Map<String, dynamic> params = {
'jsonp': 'jsonp',
'csrf': await Request.getCsrf(),
if (aids != null) 'aid': aids.join(',') else 'viewed': true
'resources': aids.join(',')
};
dynamic res = await Request().post(
Api.toViewDel,
@@ -333,12 +346,12 @@ class UserHttp {
}
}
// 清空稍后再看
static Future toViewClear() async {
// 清空稍后再看 // clean_type: null->all, 1->invalid, 2->viewed
static Future toViewClear([int? cleanType]) async {
var res = await Request().post(
Api.toViewClear,
queryParameters: {
'jsonp': 'jsonp',
if (cleanType != null) 'clean_type': cleanType,
'csrf': await Request.getCsrf(),
},
);
@@ -631,7 +644,7 @@ class UserHttp {
static List<String> extractScriptContents(String htmlContent) {
RegExp scriptRegExp = RegExp(r'<script>([\s\S]*?)<\/script>');
Iterable<Match> matches = scriptRegExp.allMatches(htmlContent);
List<String> scriptContents = [];
List<String> scriptContents = <String>[];
for (Match match in matches) {
String scriptContent = match.group(1)!;
scriptContents.add(scriptContent);
@@ -675,7 +688,7 @@ class UserHttp {
.map<MediaVideoItemModel>(
(e) => MediaVideoItemModel.fromJson(e))
.toList()
: []
: <MediaVideoItemModel>[]
};
} else {
return {'status': false, 'msg': res.data['message']};

View File

@@ -50,7 +50,7 @@ class VideoHttp {
},
);
if (res.data['code'] == 0) {
List<RecVideoItemModel> list = [];
List<RecVideoItemModel> list = <RecVideoItemModel>[];
Set<int> blackMids = GStorage.blackMids;
for (var i in res.data['data']['item']) {
//过滤掉live与ad以及拉黑用户
@@ -119,7 +119,7 @@ class VideoHttp {
}),
);
if (res.data['code'] == 0) {
List<RecVideoItemAppModel> list = [];
List<RecVideoItemAppModel> list = <RecVideoItemAppModel>[];
Set<int> blackMids = GStorage.blackMids;
for (var i in res.data['data']['items']) {
// 屏蔽推广和拉黑用户
@@ -153,7 +153,7 @@ class VideoHttp {
queryParameters: {'pn': pn, 'ps': ps},
);
if (res.data['code'] == 0) {
List<HotVideoItemModel> list = [];
List<HotVideoItemModel> list = <HotVideoItemModel>[];
Set<int> blackMids = GStorage.blackMids;
for (var i in res.data['data']['list']) {
if (!blackMids.contains(i['owner']['mid']) &&
@@ -177,7 +177,7 @@ class VideoHttp {
static Future<LoadingState> hotVideoListGrpc({required int idx}) async {
dynamic res = await GrpcRepo.popular(idx);
if (res['status']) {
List<card.Card> list = [];
List<card.Card> list = <card.Card>[];
Set<int> blackMids = GStorage.blackMids;
for (card.Card item in res['data']) {
if (!blackMids.contains(item.smallCoverV5.up.id.toInt())) {
@@ -259,13 +259,12 @@ class VideoHttp {
}
return {
'status': false,
'data': [],
'code': res.data['code'],
'msg': res.data['message'],
};
}
} catch (err) {
return {'status': false, 'data': [], 'msg': err};
return {'status': false, 'msg': err};
}
}
@@ -382,7 +381,7 @@ class VideoHttp {
// if (res.data['code'] == 0) {
// return {'status': true, 'data': res.data['data']};
// } else {
// return {'status': false, 'data': []};
// return {'status': false, 'msg': res.data['message']};
// }
// }
@@ -393,7 +392,7 @@ class VideoHttp {
// if (res.data['code'] == 0) {
// return {'status': true, 'data': res.data['data']};
// } else {
// return {'status': false, 'data': []};
// return {'status': false, 'msg': res.data['message']};
// }
// }
@@ -417,7 +416,7 @@ class VideoHttp {
if (res.data['code'] == 0) {
return {'status': true, 'data': res.data['data']};
} else {
return {'status': false, 'data': [], 'msg': res.data['message']};
return {'status': false, 'msg': res.data['message']};
}
}
@@ -428,7 +427,7 @@ class VideoHttp {
// if (res.data['code'] == 0) {
// return {'status': true, 'data': res.data['data']};
// } else {
// return {'status': false, 'data': []};
// return {'status': false, 'msg': res.data['message']};
// }
// }
@@ -452,7 +451,7 @@ class VideoHttp {
if (res.data['code'] == 0) {
return {'status': true, 'data': res.data['data']};
} else {
return {'status': false, 'data': [], 'msg': res.data['message']};
return {'status': false, 'msg': res.data['message']};
}
}
@@ -480,7 +479,7 @@ class VideoHttp {
if (res.data['code'] == 0) {
return {'status': true, 'data': res.data['data']};
} else {
return {'status': false, 'data': [], 'msg': res.data['message']};
return {'status': false, 'msg': res.data['message']};
}
}
@@ -502,7 +501,7 @@ class VideoHttp {
if (res.data['code'] == 0) {
return {'status': true, 'data': res.data['data']};
} else {
return {'status': false, 'data': [], 'msg': res.data['message']};
return {'status': false, 'msg': res.data['message']};
}
}
@@ -719,7 +718,7 @@ class VideoHttp {
FavFolderData data = FavFolderData.fromJson(res.data['data']);
return {'status': true, 'data': data};
} else {
return {'status': false, 'data': []};
return {'status': false, 'msg': res.data['message']};
}
}
@@ -741,7 +740,7 @@ class VideoHttp {
bool? syncToDynamic,
}) async {
if (message == '') {
return {'status': false, 'data': [], 'msg': '请输入评论内容'};
return {'status': false, 'msg': '请输入评论内容'};
}
Map<String, dynamic> data = {
'type': type.index,
@@ -761,7 +760,7 @@ class VideoHttp {
if (res.data['code'] == 0) {
return {'status': true, 'data': res.data['data']};
} else {
return {'status': false, 'data': [], 'msg': res.data['message']};
return {'status': false, 'msg': res.data['message']};
}
}
@@ -973,7 +972,7 @@ class VideoHttp {
'data': AiConclusionModel.fromJson(res.data['data']),
};
} else {
return {'status': false, 'data': []};
return {'status': false, 'msg': res.data['message']};
}
}
@@ -1053,7 +1052,7 @@ class VideoHttp {
var rankApi = "${Api.getRankApi}?rid=$rid&type=all";
var res = await Request().get(rankApi);
if (res.data['code'] == 0) {
List<HotVideoItemModel> list = [];
List<HotVideoItemModel> list = <HotVideoItemModel>[];
Set<int> blackMids = GStorage.blackMids;
for (var i in res.data['data']['list']) {
if (!blackMids.contains(i['owner']['mid']) &&