diff --git a/lib/http/fav.dart b/lib/http/fav.dart index 18b742517..91524e759 100644 --- a/lib/http/fav.dart +++ b/lib/http/fav.dart @@ -537,19 +537,20 @@ class FavHttp { static Future?>> spaceFav({ required int mid, }) async { - Map data = { - 'build': '8430300', + final params = { + 'build': 8430300, + 'version': '8.43.0', 'c_locale': 'zh_CN', - 'channel': 'bili', + 'channel': 'master', 'mobi_app': 'android', 'platform': 'android', 's_locale': 'zh_CN', 'statistics': Constants.statisticsApp, - 'up_mid': mid.toString(), + 'up_mid': mid, }; var res = await Request().get( Api.spaceFav, - queryParameters: data, + queryParameters: params, options: Options( headers: { 'bili-http-engine': 'cronet', diff --git a/lib/http/live.dart b/lib/http/live.dart index 8e42c7e68..a904b4994 100644 --- a/lib/http/live.dart +++ b/lib/http/live.dart @@ -2,6 +2,7 @@ import 'package:PiliPlus/common/constants.dart'; import 'package:PiliPlus/http/api.dart'; import 'package:PiliPlus/http/init.dart'; import 'package:PiliPlus/http/loading_state.dart'; +import 'package:PiliPlus/http/login.dart'; import 'package:PiliPlus/http/ua_type.dart'; import 'package:PiliPlus/models/common/live_search_type.dart'; import 'package:PiliPlus/models_new/live/live_area_list/area_item.dart'; @@ -169,23 +170,25 @@ class LiveHttp { final params = { if (isLogin) 'access_key': Accounts.main.accessKey, 'appkey': Constants.appKey, + 'channel': 'master', 'actionKey': 'appkey', - 'build': '8430300', + 'build': 8430300, + 'version': '8.43.0', 'c_locale': 'zh_CN', - 'device': 'pad', + 'device': 'android', 'device_name': 'android', - 'device_type': '0', - 'fnval': '912', - 'disable_rcmd': '0', - 'https_url_req': '1', - if (moduleSelect == true) 'module_select': '1', - 'mobi_app': 'android_hd', + 'device_type': 0, + 'fnval': 912, + 'disable_rcmd': 0, + 'https_url_req': 1, + if (moduleSelect == true) 'module_select': 1, + 'mobi_app': 'android', 'network': 'wifi', 'page': pn, 'platform': 'android', - if (isLogin) 'relation_page': '1', + if (isLogin) 'relation_page': 1, 's_locale': 'zh_CN', - 'scale': '2', + 'scale': 2, 'statistics': Constants.statisticsApp, 'ts': DateTime.now().millisecondsSinceEpoch ~/ 1000, }; @@ -197,6 +200,23 @@ class LiveHttp { var res = await Request().get( Api.liveFeedIndex, queryParameters: params, + options: Options( + headers: { + 'buvid': LoginHttp.buvid, + 'fp_local': + '1111111111111111111111111111111111111111111111111111111111111111', + 'fp_remote': + '1111111111111111111111111111111111111111111111111111111111111111', + 'session_id': '11111111', + 'env': 'prod', + 'app-key': 'android', + 'User-Agent': Constants.userAgentApp, + 'x-bili-trace-id': Constants.traceId, + 'x-bili-aurora-eid': '', + 'x-bili-aurora-zone': '', + 'bili-http-engine': 'cronet', + }, + ), ); if (res.data['code'] == 0) { return Success(LiveIndexData.fromJson(res.data['data'])); @@ -233,29 +253,31 @@ class LiveHttp { if (isLogin) 'access_key': Accounts.main.accessKey, 'appkey': Constants.appKey, 'actionKey': 'appkey', + 'channel': 'master', 'area_id': ?areaId, 'parent_area_id': ?parentAreaId, - 'build': '8430300', + 'build': 8430300, + 'version': '8.43.0', 'c_locale': 'zh_CN', - 'device': 'pad', + 'device': 'android', 'device_name': 'android', - 'device_type': '0', - 'fnval': '912', - 'disable_rcmd': '0', - 'https_url_req': '1', - 'mobi_app': 'android_hd', - 'module_select': '0', + 'device_type': 0, + 'fnval': 912, + 'disable_rcmd': 0, + 'https_url_req': 1, + 'mobi_app': 'android', + 'module_select': 0, 'network': 'wifi', 'page': pn, - 'page_size': '20', + 'page_size': 20, 'platform': 'android', - 'qn': '0', + 'qn': 0, 'sort_type': ?sortType, - 'tag_version': '1', + 'tag_version': 1, 's_locale': 'zh_CN', - 'scale': '2', + 'scale': 2, 'statistics': Constants.statisticsApp, - 'ts': (DateTime.now().millisecondsSinceEpoch ~/ 1000).toString(), + 'ts': DateTime.now().millisecondsSinceEpoch ~/ 1000, }; AppSign.appSign( params, @@ -265,6 +287,23 @@ class LiveHttp { var res = await Request().get( Api.liveSecondList, queryParameters: params, + options: Options( + headers: { + 'buvid': LoginHttp.buvid, + 'fp_local': + '1111111111111111111111111111111111111111111111111111111111111111', + 'fp_remote': + '1111111111111111111111111111111111111111111111111111111111111111', + 'session_id': '11111111', + 'env': 'prod', + 'app-key': 'android', + 'User-Agent': Constants.userAgentApp, + 'x-bili-trace-id': Constants.traceId, + 'x-bili-aurora-eid': '', + 'x-bili-aurora-zone': '', + 'bili-http-engine': 'cronet', + }, + ), ); if (res.data['code'] == 0) { return Success(LiveSecondData.fromJson(res.data['data'])); @@ -280,11 +319,13 @@ class LiveHttp { if (isLogin) 'access_key': Accounts.main.accessKey, 'appkey': Constants.appKey, 'actionKey': 'appkey', - 'build': '8430300', + 'build': 8430300, + 'channel': 'master', + 'version': '8.43.0', 'c_locale': 'zh_CN', - 'device': 'pad', - 'disable_rcmd': '0', - 'mobi_app': 'android_hd', + 'device': 'android', + 'disable_rcmd': 0, + 'mobi_app': 'android', 'platform': 'android', 's_locale': 'zh_CN', 'statistics': Constants.statisticsApp, @@ -317,11 +358,13 @@ class LiveHttp { if (isLogin) 'access_key': Accounts.main.accessKey, 'appkey': Constants.appKey, 'actionKey': 'appkey', - 'build': '8430300', + 'build': 8430300, + 'channel': 'master', + 'version': '8.43.0', 'c_locale': 'zh_CN', - 'device': 'pad', - 'disable_rcmd': '0', - 'mobi_app': 'android_hd', + 'device': 'android', + 'disable_rcmd': 0, + 'mobi_app': 'android', 'platform': 'android', 's_locale': 'zh_CN', 'statistics': Constants.statisticsApp, @@ -357,11 +400,13 @@ class LiveHttp { 'access_key': Accounts.main.accessKey, 'appkey': Constants.appKey, 'actionKey': 'appkey', - 'build': '8430300', + 'build': 8430300, + 'channel': 'master', + 'version': '8.43.0', 'c_locale': 'zh_CN', - 'device': 'pad', - 'disable_rcmd': '0', - 'mobi_app': 'android_hd', + 'device': 'android', + 'disable_rcmd': 0, + 'mobi_app': 'android', 'platform': 'android', 's_locale': 'zh_CN', 'statistics': Constants.statisticsApp, @@ -395,14 +440,16 @@ class LiveHttp { if (isLogin) 'access_key': Accounts.main.accessKey, 'appkey': Constants.appKey, 'actionKey': 'appkey', - 'build': '8430300', + 'build': 8430300, + 'channel': 'master', + 'version': '8.43.0', 'c_locale': 'zh_CN', - 'device': 'pad', - 'disable_rcmd': '0', + 'device': 'android', + 'disable_rcmd': 0, 'need_entrance': 1, 'parent_id': parentid, 'source_id': 2, - 'mobi_app': 'android_hd', + 'mobi_app': 'android', 'platform': 'android', 's_locale': 'zh_CN', 'statistics': Constants.statisticsApp, @@ -436,14 +483,16 @@ class LiveHttp { if (isLogin) 'access_key': Accounts.main.accessKey, 'appkey': Constants.appKey, 'actionKey': 'appkey', - 'build': '8430300', + 'build': 8430300, + 'channel': 'master', + 'version': '8.43.0', 'c_locale': 'zh_CN', - 'device': 'pad', + 'device': 'android', 'page': page, 'pagesize': 30, 'keyword': keyword, - 'disable_rcmd': '0', - 'mobi_app': 'android_hd', + 'disable_rcmd': 0, + 'mobi_app': 'android', 'platform': 'android', 's_locale': 'zh_CN', 'statistics': Constants.statisticsApp, diff --git a/lib/http/member.dart b/lib/http/member.dart index c82e1efc6..d0f9d5e8e 100644 --- a/lib/http/member.dart +++ b/lib/http/member.dart @@ -57,21 +57,22 @@ class MemberHttp { required int mid, required int page, }) async { - Map data = { - 'build': '8430300', + final params = { + 'build': 8430300, + 'channel': 'master', + 'version': '8.43.0', 'c_locale': 'zh_CN', - 'channel': 'bili', 'mobi_app': 'android', 'platform': 'android', - 'pn': page.toString(), - 'ps': '10', + 'pn': page, + 'ps': 10, 's_locale': 'zh_CN', 'statistics': Constants.statisticsApp, - 'vmid': mid.toString(), + 'vmid': mid, }; var res = await Request().get( Api.spaceArticle, - queryParameters: data, + queryParameters: params, options: Options( headers: { 'bili-http-engine': 'cronet', @@ -119,25 +120,26 @@ class MemberHttp { int? seriesId, includeCursor, }) async { - Map data = { - if (aid != null) 'aid': aid.toString(), - 'build': '8430300', + final params = { + 'aid': ?aid, + 'build': 8430300, + 'version': '8.43.0', 'c_locale': 'zh_CN', - 'channel': 'bili', + 'channel': 'master', 'mobi_app': 'android', 'platform': 'android', 's_locale': 'zh_CN', - 'ps': '20', - if (pn != null) 'pn': pn.toString(), - if (next != null) 'next': next.toString(), - if (seasonId != null) 'season_id': seasonId.toString(), - if (seriesId != null) 'series_id': seriesId.toString(), - 'qn': type == ContributeType.video ? '80' : '32', + 'ps': 20, + 'pn': ?pn, + 'next': ?next, + 'season_id': ?seasonId, + 'series_id': ?seriesId, + 'qn': type == ContributeType.video ? 80 : 32, 'order': ?order, 'sort': ?sort, - if (includeCursor != null) 'include_cursor': includeCursor.toString(), + 'include_cursor': ?includeCursor, 'statistics': Constants.statisticsApp, - 'vmid': mid.toString(), + 'vmid': mid, }; var res = await Request().get( switch (type) { @@ -148,7 +150,7 @@ class MemberHttp { ContributeType.bangumi => Api.spaceBangumi, ContributeType.comic => Api.spaceComic, }, - queryParameters: data, + queryParameters: params, options: Options( headers: { 'bili-http-engine': 'cronet', @@ -193,25 +195,26 @@ class MemberHttp { required contain, required index, }) async { - Map data = { - 'aid': aid.toString(), - 'before_size': beforeSize.toString(), - 'after_size': afterSize.toString(), - 'cid': cid.toString(), - 'contain': contain.toString(), - 'index': index.toString(), - 'build': '8430300', + final params = { + 'aid': aid, + 'before_size': beforeSize, + 'after_size': afterSize, + 'cid': cid, + 'contain': contain, + 'index': index, + 'build': 8430300, + 'version': '8.43.0', 'c_locale': 'zh_CN', - 'channel': 'bili', + 'channel': 'master', 'mobi_app': 'android', 'platform': 'android', 's_locale': 'zh_CN', 'statistics': Constants.statisticsApp, - 'vmid': mid.toString(), + 'vmid': mid, }; var res = await Request().get( Api.spaceStory, - queryParameters: data, + queryParameters: params, options: Options( headers: { 'bili-http-engine': 'cronet', @@ -230,20 +233,21 @@ class MemberHttp { int? mid, dynamic fromViewAid, }) async { - Map data = { - 'build': '8430300', + final params = { + 'build': 8430300, + 'version': '8.43.0', 'c_locale': 'zh_CN', - 'channel': 'bili', + 'channel': 'master', 'mobi_app': 'android', 'platform': 'android', 's_locale': 'zh_CN', 'from_view_aid': ?fromViewAid, 'statistics': Constants.statisticsApp, - 'vmid': mid.toString(), + 'vmid': mid, }; var res = await Request().get( Api.space, - queryParameters: data, + queryParameters: params, options: Options( headers: { 'bili-http-engine': 'cronet', @@ -341,7 +345,7 @@ class MemberHttp { 'keyword': ?keyword, 'order': order, 'platform': 'web', - 'web_location': '1550101', + 'web_location': 1550101, 'order_avoided': orderAvoided, 'dm_img_list': '[]', 'dm_img_str': dmImgStr, diff --git a/lib/http/search.dart b/lib/http/search.dart index d69fcebe2..a9c756b12 100644 --- a/lib/http/search.dart +++ b/lib/http/search.dart @@ -227,7 +227,9 @@ class SearchHttp { final res = await Request().get( Api.searchRecommend, queryParameters: { - 'build': '8430300', + 'build': 8430300, + 'channel': 'master', + 'version': '8.43.0', 'c_locale': 'zh_CN', 'mobi_app': 'android', 'platform': 'android', diff --git a/lib/http/video.dart b/lib/http/video.dart index 4db0e98a8..333db8c06 100644 --- a/lib/http/video.dart +++ b/lib/http/video.dart @@ -1,5 +1,4 @@ import 'dart:convert'; -import 'dart:developer'; import 'package:PiliPlus/common/constants.dart'; import 'package:PiliPlus/http/api.dart'; @@ -77,38 +76,38 @@ class VideoHttp { // 添加额外的loginState变量模拟未登录状态 static Future rcmdVideoListApp({required int freshIdx}) async { - Map data = { - 'build': '2001100', + final params = { + 'build': 2001100, 'c_locale': 'zh_CN', 'channel': 'master', - 'column': '4', + 'column': 4, 'device': 'pad', 'device_name': 'android', - 'device_type': '0', - 'disable_rcmd': '0', - 'flush': '5', - 'fnval': '976', - 'fnver': '0', - 'force_host': '2', //使用https - 'fourk': '1', - 'guidance': '0', - 'https_url_req': '0', - 'idx': freshIdx.toString(), + 'device_type': 0, + 'disable_rcmd': 0, + 'flush': 5, + 'fnval': 976, + 'fnver': 0, + 'force_host': 2, //使用https + 'fourk': 1, + 'guidance': 0, + 'https_url_req': 0, + 'idx': freshIdx, 'mobi_app': 'android_hd', 'network': 'wifi', 'platform': 'android', - 'player_net': '1', + 'player_net': 1, 'pull': freshIdx == 0 ? 'true' : 'false', - 'qn': '32', - 'recsys_mode': '0', + 'qn': 32, + 'recsys_mode': 0, 's_locale': 'zh_CN', 'splash_id': '', 'statistics': Constants.statistics, - 'voice_balance': '0', + 'voice_balance': 0, }; var res = await Request().get( Api.recommendListApp, - queryParameters: data, + queryParameters: params, options: Options( headers: { 'buvid': LoginHttp.buvid, @@ -465,7 +464,7 @@ class VideoHttp { 'id': id, 'reason_id': ?reasonId, 'feedback_id': ?feedbackId, - 'build': '1', + 'build': 1, 'mobi_app': 'android', }, ); @@ -493,7 +492,7 @@ class VideoHttp { 'id': id, 'reason_id': ?reasonId, 'feedback_id': ?feedbackId, - 'build': '1', + 'build': 1, 'mobi_app': 'android', }, ); @@ -542,7 +541,6 @@ class VideoHttp { data: data, options: Options(contentType: Headers.formUrlEncodedContentType), ); - log(res.toString()); if (res.data['code'] == 0) { return {'status': true, 'data': res.data['data']}; } else { @@ -564,7 +562,6 @@ class VideoHttp { 'csrf': Accounts.main.csrf, }, ); - log(res.toString()); if (res.data['code'] == 0) { return {'status': true}; } else { diff --git a/lib/pages/live/controller.dart b/lib/pages/live/controller.dart index 6ee722aa7..21e242774 100644 --- a/lib/pages/live/controller.dart +++ b/lib/pages/live/controller.dart @@ -3,6 +3,8 @@ import 'package:PiliPlus/http/live.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/models_new/live/live_feed_index/card_data_list_item.dart'; import 'package:PiliPlus/models_new/live/live_feed_index/card_list.dart'; +import 'package:PiliPlus/models_new/live/live_feed_index/data.dart'; +import 'package:PiliPlus/models_new/live/live_second_list/data.dart'; import 'package:PiliPlus/models_new/live/live_second_list/tag.dart'; import 'package:PiliPlus/pages/common/common_list_controller.dart'; import 'package:PiliPlus/services/account_service.dart'; @@ -48,16 +50,18 @@ class LiveController extends CommonListController { bool customHandleResponse(bool isRefresh, Success response) { if (isRefresh) { if (areaIndex.value == 0) { - if (response.response.hasMore == 0) { + LiveIndexData data = response.response; + if (data.hasMore == 0) { isEnd = true; } topState.value = Pair( - first: response.response.followItem, - second: response.response.areaItem, + first: data.followItem, + second: data.areaItem, ); } else { - count = response.response.count; - newTags = response.response.newTags; + LiveSecondData data = response.response; + count = data.count; + newTags = data.newTags; if (sortType != null) { tagIndex.value = newTags?.indexWhere((e) => e.sortType == sortType) ?? -1; @@ -117,6 +121,9 @@ class LiveController extends CommonListController { } void onSelectArea(int index, CardLiveItem? cardLiveItem) { + if (isLoading) { + return; // areaIndex conflict + } if (index == areaIndex.value) { return; } @@ -134,6 +141,9 @@ class LiveController extends CommonListController { } void onSelectTag(int index, String? sortType) { + if (isLoading) { + return; + } tagIndex.value = index; this.sortType = sortType; diff --git a/lib/pages/live_area_detail/child/controller.dart b/lib/pages/live_area_detail/child/controller.dart index 457bcea56..d6b7dd63e 100644 --- a/lib/pages/live_area_detail/child/controller.dart +++ b/lib/pages/live_area_detail/child/controller.dart @@ -60,6 +60,9 @@ class LiveAreaChildController ); void onSelectTag(int index, String? sortType) { + if (isLoading) { + return; + } tagIndex.value = index; this.sortType = sortType;