226 lines
6.2 KiB
Dart
226 lines
6.2 KiB
Dart
import 'package:flutter_smart_dialog/flutter_smart_dialog.dart';
|
||
import 'package:pilipala/common/constants.dart';
|
||
import 'package:pilipala/http/api.dart';
|
||
import 'package:pilipala/http/init.dart';
|
||
import 'package:pilipala/models/model_hot_video_item.dart';
|
||
import 'package:pilipala/models/user/fav_detail.dart';
|
||
import 'package:pilipala/models/user/fav_folder.dart';
|
||
import 'package:pilipala/models/user/history.dart';
|
||
import 'package:pilipala/models/user/info.dart';
|
||
import 'package:pilipala/models/user/stat.dart';
|
||
|
||
class UserHttp {
|
||
static Future<dynamic> 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<dynamic> 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<dynamic> 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<dynamic> 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) {
|
||
FavFolderData data = FavFolderData.fromJson(res.data['data']);
|
||
return {'status': true, 'data': data};
|
||
} else {
|
||
return {'status': false, 'data': [], 'msg': '账号未登录'};
|
||
}
|
||
}
|
||
|
||
static Future<dynamic> userFavFolderDetail(
|
||
{required int mediaId,
|
||
required int pn,
|
||
required int ps,
|
||
String keyword = '',
|
||
String order = 'mtime'}) async {
|
||
var res = await Request().get(Api.userFavFolderDetail, data: {
|
||
'media_id': mediaId,
|
||
'pn': pn,
|
||
'ps': ps,
|
||
'keyword': keyword,
|
||
'order': order,
|
||
'type': 0,
|
||
'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<dynamic> 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<HotVideoItemModel> 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']};
|
||
}
|
||
}
|
||
|
||
// 观看历史
|
||
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']};
|
||
}
|
||
}
|
||
|
||
// 暂停观看历史
|
||
static Future pauseHistory(bool switchStatus) async {
|
||
// 暂停switchStatus传true 否则false
|
||
var res = await Request().post(
|
||
Api.pauseHistory,
|
||
queryParameters: {
|
||
'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,
|
||
queryParameters: {
|
||
'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,
|
||
queryParameters: data,
|
||
);
|
||
if (res.data['code'] == 0) {
|
||
return {'status': true, 'msg': 'yeah!稍后再看'};
|
||
} else {
|
||
return {'status': false, 'msg': res.data['message']};
|
||
}
|
||
}
|
||
|
||
// 移除已观看
|
||
static Future toViewDel() async {
|
||
var res = await Request().post(
|
||
Api.toViewDel,
|
||
queryParameters: {
|
||
'jsonp': 'jsonp',
|
||
'viewed': true,
|
||
'csrf': await Request.getCsrf(),
|
||
},
|
||
);
|
||
if (res.data['code'] == 0) {
|
||
return {'status': true, 'msg': 'yeah!成功移除'};
|
||
} else {
|
||
return {'status': false, 'msg': res.data['message']};
|
||
}
|
||
}
|
||
|
||
// 获取用户凭证
|
||
static Future thirdLogin() async {
|
||
var res = await Request().get(
|
||
'https://passport.bilibili.com/login/app/third',
|
||
data: {
|
||
'appkey': Constants.appKey,
|
||
'api': Constants.thirdApi,
|
||
'sign': Constants.thirdSign,
|
||
},
|
||
);
|
||
try {
|
||
if (res.data['code'] == 0 && res.data['data']['has_login'] == 1) {
|
||
Request().get(res.data['data']['confirm_uri']);
|
||
}
|
||
} catch (err) {
|
||
SmartDialog.showNotify(msg: '获取用户凭证: $err', notifyType: NotifyType.error);
|
||
}
|
||
}
|
||
|
||
// 清空稍后再看
|
||
static Future toViewClear() async {
|
||
var res = await Request().post(
|
||
Api.toViewClear,
|
||
queryParameters: {
|
||
'jsonp': 'jsonp',
|
||
'csrf': await Request.getCsrf(),
|
||
},
|
||
);
|
||
if (res.data['code'] == 0) {
|
||
return {'status': true, 'msg': '操作完成'};
|
||
} else {
|
||
return {'status': false, 'msg': res.data['message']};
|
||
}
|
||
}
|
||
}
|