import 'dart:convert'; import 'package:dio/dio.dart'; import 'package:html/parser.dart'; import 'package:pilipala/models/video/later.dart'; import '../models/model_hot_video_item.dart'; import '../models/user/fav_detail.dart'; import '../models/user/fav_folder.dart'; import '../models/user/history.dart'; import '../models/user/info.dart'; import '../models/user/stat.dart'; import '../models/user/sub_detail.dart'; import '../models/user/sub_folder.dart'; import 'api.dart'; import 'init.dart'; class UserHttp { static Future userStat({required int mid}) async { var res = await Request().get(Api.userStat, data: {'vmid': mid}); if (res.data['code'] == 0) { return {'status': true, 'data': res.data['data']}; } else { return {'status': false}; } } static Future userInfo() async { var res = await Request().get(Api.userInfo); if (res.data['code'] == 0) { UserInfoData data = UserInfoData.fromJson(res.data['data']); return {'status': true, 'data': data}; } else { return {'status': false, 'msg': res.data['message']}; } } static Future userStatOwner() async { var res = await Request().get(Api.userStatOwner); if (res.data['code'] == 0) { UserStat data = UserStat.fromJson(res.data['data']); return {'status': true, 'data': data}; } else { return {'status': false, 'data': [], 'msg': res.data['message']}; } } // 收藏夹 static Future userfavFolder({ required int pn, required int ps, required int mid, }) async { var res = await Request().get(Api.userFavFolder, data: { 'pn': pn, 'ps': ps, 'up_mid': mid, }); if (res.data['code'] == 0) { late FavFolderData data; if (res.data['data'] != null) { data = FavFolderData.fromJson(res.data['data']); return {'status': true, 'data': data}; } else { return {'status': false, 'msg': '收藏夹为空'}; } } else { return { 'status': false, 'data': [], 'msg': res.data['message'], 'code': res.data['code'], }; } } static Future userFavFolderDetail( {required int mediaId, required int pn, required int ps, String keyword = '', String order = 'mtime', int type = 0}) async { var res = await Request().get(Api.userFavFolderDetail, data: { 'media_id': mediaId, 'pn': pn, 'ps': ps, 'keyword': keyword, 'order': order, 'type': type, 'tid': 0, 'platform': 'web' }); if (res.data['code'] == 0) { FavDetailData data = FavDetailData.fromJson(res.data['data']); return {'status': true, 'data': data}; } else { return {'status': false, 'data': [], 'msg': res.data['message']}; } } // 稍后再看 static Future seeYouLater() async { var res = await Request().get(Api.seeYouLater); if (res.data['code'] == 0) { if (res.data['data']['count'] == 0) { return { 'status': true, 'data': {'list': [], 'count': 0} }; } List list = []; for (var i in res.data['data']['list']) { list.add(HotVideoItemModel.fromJson(i)); } return { 'status': true, 'data': {'list': list, 'count': res.data['data']['count']} }; } else { return { 'status': false, 'data': [], 'msg': res.data['message'], 'code': res.data['code'], }; } } // 观看历史 static Future historyList(int? max, int? viewAt) async { var res = await Request().get(Api.historyList, data: { 'type': 'all', 'ps': 20, 'max': max ?? 0, 'view_at': viewAt ?? 0, }); if (res.data['code'] == 0) { return {'status': true, 'data': HistoryData.fromJson(res.data['data'])}; } else { return { 'status': false, 'data': [], 'msg': res.data['message'], 'code': res.data['code'], }; } } // 暂停观看历史 static Future pauseHistory(bool switchStatus) async { // 暂停switchStatus传true 否则false var res = await Request().post( Api.pauseHistory, data: { 'switch': switchStatus, 'jsonp': 'jsonp', 'csrf': await Request.getCsrf(), }, ); return res; } // 观看历史暂停状态 static Future historyStatus() async { var res = await Request().get(Api.historyStatus); return res; } // 清空历史记录 static Future clearHistory() async { var res = await Request().post( Api.clearHistory, data: { 'jsonp': 'jsonp', 'csrf': await Request.getCsrf(), }, ); return res; } // 稍后再看 static Future toViewLater({String? bvid, dynamic aid}) async { var data = {'csrf': await Request.getCsrf()}; if (bvid != null) { data['bvid'] = bvid; } else if (aid != null) { data['aid'] = aid; } var res = await Request().post( Api.toViewLater, data: data, ); if (res.data['code'] == 0) { return {'status': true, 'msg': 'yeah!稍后再看'}; } else { return {'status': false, 'msg': res.data['message']}; } } // 移除已观看 static Future toViewDel({int? aid}) async { final Map params = { 'jsonp': 'jsonp', 'csrf': await Request.getCsrf(), }; params[aid != null ? 'aid' : 'viewed'] = aid ?? true; var res = await Request().post( Api.toViewDel, data: params, ); if (res.data['code'] == 0) { return {'status': true, 'msg': 'yeah!成功移除'}; } else { return {'status': false, 'msg': res.data['message']}; } } // 清空稍后再看 static Future toViewClear() async { var res = await Request().post( Api.toViewClear, data: { 'jsonp': 'jsonp', 'csrf': await Request.getCsrf(), }, ); if (res.data['code'] == 0) { return {'status': true, 'msg': '操作完成'}; } else { return {'status': false, 'msg': res.data['message']}; } } // 删除历史记录 static Future delHistory(kid) async { var res = await Request().post( Api.delHistory, data: { 'kid': kid, 'jsonp': 'jsonp', 'csrf': await Request.getCsrf(), }, ); if (res.data['code'] == 0) { return {'status': true, 'msg': '已删除'}; } else { return {'status': false, 'msg': res.data['message']}; } } static Future hasFollow(int mid) async { var res = await Request().get( Api.hasFollow, data: { 'fid': mid, }, ); if (res.data['code'] == 0) { return {'status': true, 'data': res.data['data']}; } else { return {'status': false, 'msg': res.data['message']}; } } // 搜索历史记录 static Future searchHistory( {required int pn, required String keyword}) async { var res = await Request().get( Api.searchHistory, data: { 'pn': pn, 'keyword': keyword, 'business': 'all', }, ); if (res.data['code'] == 0) { return {'status': true, 'data': HistoryData.fromJson(res.data['data'])}; } else { return {'status': false, 'msg': res.data['message']}; } } // 我的订阅 static Future userSubFolder({ required int mid, required int pn, required int ps, }) async { var res = await Request().get(Api.userSubFolder, data: { 'up_mid': mid, 'ps': ps, 'pn': pn, 'platform': 'web', }); if (res.data['code'] == 0) { return { 'status': true, 'data': SubFolderModelData.fromJson(res.data['data']) }; } else { return { 'status': false, 'data': [], 'msg': res.data['message'], 'code': res.data['code'], }; } } static Future userSeasonList({ required int seasonId, required int pn, required int ps, }) async { var res = await Request().get(Api.userSeasonList, data: { 'season_id': seasonId, 'ps': ps, 'pn': pn, }); if (res.data['code'] == 0) { return { 'status': true, 'data': SubDetailModelData.fromJson(res.data['data']) }; } else { return {'status': false, 'msg': res.data['message']}; } } static Future userResourceList({ required int seasonId, required int pn, required int ps, }) async { var res = await Request().get(Api.userResourceList, data: { 'media_id': seasonId, 'ps': ps, 'pn': pn, 'keyword': '', 'order': 'mtime', 'type': 0, 'tid': 0, 'platform': 'web', }); if (res.data['code'] == 0) { try { return { 'status': true, 'data': SubDetailModelData.fromJson(res.data['data']) }; } catch (err) { return {'status': false, 'msg': err}; } } else { return {'status': false, 'msg': res.data['message']}; } } // 取消订阅 static Future cancelSub({required int seasonId}) async { var res = await Request().post( Api.cancelSub, data: { 'platform': 'web', 'season_id': seasonId, 'csrf': await Request.getCsrf(), }, ); if (res.data['code'] == 0) { return {'status': true}; } else { return {'status': false, 'msg': res.data['message']}; } } // 删除文件夹 static Future delFavFolder({required int mediaIds}) async { var res = await Request().post( Api.delFavFolder, data: { 'media_ids': mediaIds, 'platform': 'web', 'csrf': await Request.getCsrf(), }, ); if (res.data['code'] == 0) { return {'status': true}; } else { return {'status': false, 'msg': res.data['message']}; } } static List extractScriptContents(String htmlContent) { RegExp scriptRegExp = RegExp(r'