diff --git a/lib/common/constants.dart b/lib/common/constants.dart index deae5d47b..a1603c695 100644 --- a/lib/common/constants.dart +++ b/lib/common/constants.dart @@ -21,16 +21,17 @@ class Constants { static const String traceId = '11111111111111111111111111111111:1111111111111111:0:0'; static const String userAgent = - 'Mozilla/5.0 BiliDroid/1.46.2 (bbcallen@gmail.com) os/android model/vivo mobi_app/android_hd build/2001100 channel/yingyongbao innerVer/2001100 osVer/14 network/2'; + 'Mozilla/5.0 BiliDroid/2.0.1 (bbcallen@gmail.com) os/android model/android_hd mobi_app/android_hd build/2001100 channel/master innerVer/2001100 osVer/15 network/2'; static const String statistics = - '{"appId":5,"platform":3,"version":"1.46.2","abtest":""}'; + '{"appId":5,"platform":3,"version":"2.0.1","abtest":""}'; // 请求时会自动encodeComponent // app static const String userAgentApp = - 'Mozilla/5.0 BiliDroid/8.43.0 (bbcallen@gmail.com) os/android model/android mobi_app/android build/8430300 channel/bili innerVer/8430300 osVer/15 network/2'; + 'Mozilla/5.0 BiliDroid/8.43.0 (bbcallen@gmail.com) os/android model/android mobi_app/android build/8430300 channel/master innerVer/8430300 osVer/15 network/2'; + static const String statisticsApp = - '{"appId":5,"platform":3,"version":"8.43.0","abtest":""}'; + '{"appId":1,"platform":3,"version":"8.43.0","abtest":""}'; static const urlPattern = r'https?://[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|]'; diff --git a/lib/grpc/dm.dart b/lib/grpc/dm.dart index 16499a62e..535a13c66 100644 --- a/lib/grpc/dm.dart +++ b/lib/grpc/dm.dart @@ -1,5 +1,6 @@ import 'package:PiliPlus/grpc/bilibili/community/service/dm/v1.pb.dart'; -import 'package:PiliPlus/grpc/grpc_repo.dart'; +import 'package:PiliPlus/grpc/grpc_req.dart'; +import 'package:PiliPlus/grpc/url.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:fixnum/fixnum.dart'; @@ -9,7 +10,7 @@ class DmGrpc { required int segmentIndex, int type = 1, }) { - return GrpcRepo.request( + return GrpcReq.request( GrpcUrl.dmSegMobile, DmSegMobileReq( oid: Int64(cid), diff --git a/lib/grpc/dyn.dart b/lib/grpc/dyn.dart index 4dde19c5d..1b9cec22c 100644 --- a/lib/grpc/dyn.dart +++ b/lib/grpc/dyn.dart @@ -1,5 +1,11 @@ -import 'package:PiliPlus/grpc/bilibili/app/dynamic/v1.pb.dart'; -import 'package:PiliPlus/grpc/grpc_repo.dart'; +import 'package:PiliPlus/grpc/bilibili/app/dynamic/v1.pb.dart' + show DynRedReq, TabOffset, DynRedReply; +import 'package:PiliPlus/grpc/bilibili/app/dynamic/v2.pb.dart' + show OpusType, OpusDetailReq, OpusDetailResp; +import 'package:PiliPlus/grpc/grpc_req.dart'; +import 'package:PiliPlus/grpc/url.dart'; +import 'package:PiliPlus/http/loading_state.dart'; +import 'package:fixnum/fixnum.dart'; class DynGrpc { // static Future dynSpace({ @@ -19,11 +25,25 @@ class DynGrpc { // } static Future dynRed() async { - final res = await GrpcRepo.request( + final res = await GrpcReq.request( GrpcUrl.dynRed, DynRedReq(tabOffset: [TabOffset(tab: 1)]), DynRedReply.fromBuffer, ); return res.dataOrNull?.dynRedItem.count.toInt(); } + + static Future> opusDetail({ + OpusType? opusType, + required int oid, + }) async { + return GrpcReq.request( + GrpcUrl.opusDetail, + OpusDetailReq( + opusType: opusType, + oid: Int64(oid), + ), + OpusDetailResp.fromBuffer, + ); + } } diff --git a/lib/grpc/grpc_repo.dart b/lib/grpc/grpc_req.dart similarity index 56% rename from lib/grpc/grpc_repo.dart rename to lib/grpc/grpc_req.dart index 1ec2f510c..67cd7e28d 100644 --- a/lib/grpc/grpc_repo.dart +++ b/lib/grpc/grpc_req.dart @@ -7,7 +7,6 @@ import 'package:PiliPlus/grpc/bilibili/metadata/device.pb.dart'; import 'package:PiliPlus/grpc/bilibili/metadata/fawkes.pb.dart'; import 'package:PiliPlus/grpc/bilibili/metadata/locale.pb.dart'; import 'package:PiliPlus/grpc/bilibili/metadata/network.pb.dart' as network; -import 'package:PiliPlus/grpc/bilibili/metadata/restriction.pb.dart'; import 'package:PiliPlus/grpc/google/rpc/status.pb.dart'; import 'package:PiliPlus/http/constants.dart'; import 'package:PiliPlus/http/init.dart'; @@ -18,64 +17,16 @@ import 'package:PiliPlus/utils/login_utils.dart'; import 'package:PiliPlus/utils/utils.dart'; import 'package:archive/archive.dart'; import 'package:dio/dio.dart'; -import 'package:fixnum/fixnum.dart'; import 'package:flutter/foundation.dart' show kDebugMode; import 'package:protobuf/protobuf.dart' show GeneratedMessage; -class GrpcUrl { - // static const playerOnline = - // '/bilibili.app.playeronline.v1.PlayerOnline/PlayerOnline'; - // static const popular = '/bilibili.app.show.v1.Popular/Index'; - - // dynamic - static const dynV1 = '/bilibili.app.dynamic.v1.Dynamic'; - static const dynV2 = '/bilibili.app.dynamic.v2.Dynamic'; - static const opusV2 = '/bilibili.app.dynamic.v2.Opus'; - static const dynRed = '$dynV1/DynRed'; - static const opusSpaceFlow = '$opusV2/OpusSpaceFlow'; - // static const dynSpace = '$dynV2/DynSpace'; - - // danmaku - static const dmSegMobile = '/bilibili.community.service.dm.v1.DM/DmSegMobile'; - - // reply - static const reply = '/bilibili.main.community.reply.v1.Reply'; - static const mainList = '$reply/MainList'; - static const detailList = '$reply/DetailList'; - static const dialogList = '$reply/DialogList'; - // static const replyInfo = '$reply/ReplyInfo'; - - // im - static const im = '/bilibili.im.interface.v1.ImInterface'; - static const im2 = '/bilibili.app.im.v1.im'; - static const sendMsg = '$im/SendMsg'; - static const shareList = '$im/ShareList'; - static const sessionMain = '$im2/SessionMain'; - static const sessionSecondary = '$im2/SessionSecondary'; - static const clearUnread = '$im2/ClearUnread'; - static const sessionUpdate = '$im2/SessionUpdate'; - static const pinSession = '$im2/PinSession'; - static const unpinSession = '$im2/UnpinSession'; - static const deleteSessionList = '$im2/DeleteSessionList'; - static const getImSettings = '$im2/GetImSettings'; - static const setImSettings = '$im2/SetImSettings'; - static const keywordBlockingList = '$im2/KeywordBlockingList'; - static const keywordBlockingAdd = '$im2/KeywordBlockingAdd'; - static const keywordBlockingDelete = '$im2/KeywordBlockingDelete'; - static const syncFetchSessionMsgs = '$im/SyncFetchSessionMsgs'; - static const getTotalUnread = '$im/GetTotalUnread'; - - // view - static const viewunite = '/bilibili.app.viewunite.v1.View'; - static const view = '$viewunite/View'; -} - -class GrpcRepo { +class GrpcReq { static String? _accessKey = Accounts.main.accessKey; static const _build = 2001100; - static const _biliChannel = 'bili'; + static const _versionName = '2.0.1'; + static const _biliChannel = 'master'; static const _mobiApp = 'android_hd'; - static const _phone = 'phone'; + static const _device = 'android'; static final _buvid = LoginUtils.buvid; static final _traceId = IdUtils.genTraceId(); @@ -91,19 +42,20 @@ class GrpcRepo { headers['x-bili-metadata-bin'] = base64Encode(Metadata( accessKey: _accessKey ?? '', mobiApp: _mobiApp, - device: _phone, + device: _device, build: _build, channel: _biliChannel, buvid: _buvid, - platform: _mobiApp, + platform: _device, ).writeToBuffer()); + options = Options(headers: headers, responseType: ResponseType.bytes); } static final Map headers = { Headers.contentTypeHeader: 'application/grpc', 'grpc-encoding': 'gzip', 'gzip-accept-encoding': 'gzip,identity', - 'user-agent': '${Constants.userAgent} grpc-java-cronet/1.36.1', + 'user-agent': Constants.userAgent, 'x-bili-gaia-vtoken': '', 'x-bili-aurora-zone': '', 'x-bili-trace-id': _traceId, @@ -111,58 +63,45 @@ class GrpcRepo { 'buvid': _buvid, 'bili-http-engine': 'cronet', 'te': 'trailers', - 'x-bili-fawkes-req-bin': base64Encode( - FawkesReq(appkey: _mobiApp, env: 'prod', sessionId: _sessionId) - .writeToBuffer()), + 'x-bili-fawkes-req-bin': base64Encode(FawkesReq( + appkey: _mobiApp, + env: 'prod', + sessionId: _sessionId, + ).writeToBuffer()), 'x-bili-metadata-bin': base64Encode(Metadata( accessKey: _accessKey ?? '', mobiApp: _mobiApp, - device: _phone, + device: _device, build: _build, channel: _biliChannel, buvid: _buvid, - platform: _mobiApp, + platform: _device, ).writeToBuffer()), 'x-bili-device-bin': base64Encode(Device( - appId: 1, - build: _build, - buvid: _buvid, - mobiApp: _mobiApp, - platform: _mobiApp, - device: _phone, - channel: _biliChannel, - brand: _phone, - model: _phone, - osver: '14', - fpLocal: '', - fpRemote: '', - versionName: _build.toString(), - fp: '', - fts: Int64()) - .writeToBuffer()), + appId: 5, + build: _build, + buvid: _buvid, + mobiApp: _mobiApp, + platform: _device, + channel: _biliChannel, + brand: _device, + model: _device, + osver: '15', + versionName: _versionName, + ).writeToBuffer()), 'x-bili-network-bin': base64Encode(network.Network( - type: network.NetworkType.WIFI, - tf: network.TFType.TF_UNKNOWN, - oid: '') - .writeToBuffer()), - 'x-bili-restriction-bin': base64Encode(Restriction( - teenagersMode: false, - lessonsMode: false, - mode: ModeType.NORMAL, - review: false, - disableRcmd: false, - basicMode: false) - .writeToBuffer()), + type: network.NetworkType.WIFI, + ).writeToBuffer()), 'x-bili-locale-bin': base64Encode(Locale( - cLocale: LocaleIds(language: 'zh', region: 'CN'), - sLocale: LocaleIds(language: 'zh', region: 'CN'), - simCode: '', - timezone: 'Asia/Shanghai') - .writeToBuffer()), + cLocale: LocaleIds(language: 'zh', region: 'CN', script: 'Hans'), + sLocale: LocaleIds(language: 'zh', region: 'CN', script: 'Hans'), + timezone: 'Asia/Shanghai', + ).writeToBuffer()), 'x-bili-exps-bin': '', }; - static final _unprintableRegExp = RegExp(r"[^\u4e00-\u9fa5,。;!?UP]"); + static Options options = + Options(headers: headers, responseType: ResponseType.bytes); static Uint8List compressProtobuf(Uint8List proto) { proto = const GZipEncoder().encodeBytes(proto); @@ -186,8 +125,7 @@ class GrpcRepo { static Future> request(String url, GeneratedMessage request, T Function(Uint8List) grpcParser) async { final response = await Request().post(HttpString.appBaseUrl + url, - data: compressProtobuf(request.writeToBuffer()), - options: Options(headers: headers, responseType: ResponseType.bytes)); + data: compressProtobuf(request.writeToBuffer()), options: options); if (response.data is Map) { return Error(response.data['message']); @@ -219,9 +157,7 @@ class GrpcRepo { ? 'CODE: ${grpcMsg.code}(${grpcMsg.message})\nMSG: $errMsg' : errMsg; } catch (e) { - msg = utf8 - .decode(msgBytes, allowMalformed: true) - .replaceAll(_unprintableRegExp, ''); + msg = utf8.decode(msgBytes, allowMalformed: true); } } return Error(msg); diff --git a/lib/grpc/im.dart b/lib/grpc/im.dart index 2e6ebe196..335f6424f 100644 --- a/lib/grpc/im.dart +++ b/lib/grpc/im.dart @@ -1,7 +1,8 @@ import 'package:PiliPlus/grpc/bilibili/app/im/v1.pb.dart'; import 'package:PiliPlus/grpc/bilibili/im/interfaces/v1.pb.dart'; import 'package:PiliPlus/grpc/bilibili/im/type.pb.dart'; -import 'package:PiliPlus/grpc/grpc_repo.dart'; +import 'package:PiliPlus/grpc/grpc_req.dart'; +import 'package:PiliPlus/grpc/url.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:fixnum/fixnum.dart'; import 'package:protobuf/protobuf.dart' show PbMap; @@ -14,7 +15,7 @@ class ImGrpc { required String content, MsgType msgType = MsgType.EN_MSG_TYPE_TEXT, }) { - return GrpcRepo.request( + return GrpcReq.request( GrpcUrl.sendMsg, ReqSendMsg( msg: Msg( @@ -34,7 +35,7 @@ class ImGrpc { } static Future> shareList({int size = 10}) { - return GrpcRepo.request( + return GrpcReq.request( GrpcUrl.shareList, ReqShareList(size: size), RspShareList.fromBuffer, @@ -46,7 +47,7 @@ class ImGrpc { Int64? endSeqno, Int64? beginSeqno, }) { - return GrpcRepo.request( + return GrpcReq.request( GrpcUrl.syncFetchSessionMsgs, ReqSessionMsg( talkerId: Int64(talkerId), @@ -63,7 +64,7 @@ class ImGrpc { static Future> sessionMain({ PbMap? offset, }) { - return GrpcRepo.request( + return GrpcReq.request( GrpcUrl.sessionMain, SessionMainReq( paginationParams: PaginationParams(offsets: offset), @@ -76,7 +77,7 @@ class ImGrpc { PbMap? offset, SessionPageType? pageType, }) { - return GrpcRepo.request( + return GrpcReq.request( GrpcUrl.sessionSecondary, SessionSecondaryReq( paginationParams: PaginationParams(offsets: offset), @@ -90,7 +91,7 @@ class ImGrpc { SessionPageType? pageType, SessionId? sessionId, }) { - return GrpcRepo.request( + return GrpcReq.request( GrpcUrl.clearUnread, ClearUnreadReq( pageType: pageType, @@ -104,7 +105,7 @@ class ImGrpc { SessionPageType? pageType, SessionId? sessionId, }) { - return GrpcRepo.request( + return GrpcReq.request( GrpcUrl.sessionUpdate, SessionUpdateReq( pageType: pageType, @@ -118,7 +119,7 @@ class ImGrpc { SessionId? sessionId, Int64? topTimeMicros, }) { - return GrpcRepo.request( + return GrpcReq.request( GrpcUrl.pinSession, PinSessionReq( sessionId: sessionId, @@ -131,7 +132,7 @@ class ImGrpc { static Future> unpinSession({ SessionId? sessionId, }) { - return GrpcRepo.request( + return GrpcReq.request( GrpcUrl.unpinSession, UnPinSessionReq( sessionId: sessionId, @@ -143,7 +144,7 @@ class ImGrpc { static Future> deleteSessionList({ SessionPageType? pageType, }) { - return GrpcRepo.request( + return GrpcReq.request( GrpcUrl.deleteSessionList, DeleteSessionListReq( pageType: pageType, @@ -154,7 +155,7 @@ class ImGrpc { static Future> getImSettings( {IMSettingType? type}) { - return GrpcRepo.request( + return GrpcReq.request( GrpcUrl.getImSettings, GetImSettingsReq( type: type, @@ -165,7 +166,7 @@ class ImGrpc { static Future> setImSettings( {PbMap? settings}) { - return GrpcRepo.request( + return GrpcReq.request( GrpcUrl.setImSettings, SetImSettingsReq( settings: settings, @@ -175,7 +176,7 @@ class ImGrpc { } static Future> keywordBlockingList() { - return GrpcRepo.request( + return GrpcReq.request( GrpcUrl.keywordBlockingList, KeywordBlockingListReq(), KeywordBlockingListReply.fromBuffer, @@ -184,7 +185,7 @@ class ImGrpc { static Future> keywordBlockingAdd( String keyword) { - return GrpcRepo.request( + return GrpcReq.request( GrpcUrl.keywordBlockingAdd, KeywordBlockingAddReq(keyword: keyword), KeywordBlockingAddReply.fromBuffer, @@ -193,7 +194,7 @@ class ImGrpc { static Future> keywordBlockingDelete( String keyword) { - return GrpcRepo.request( + return GrpcReq.request( GrpcUrl.keywordBlockingDelete, KeywordBlockingDeleteReq(keyword: keyword), KeywordBlockingDeleteReply.fromBuffer, @@ -202,7 +203,7 @@ class ImGrpc { static Future> getTotalUnread( {int? unreadType}) { - return GrpcRepo.request( + return GrpcReq.request( GrpcUrl.getTotalUnread, ReqTotalUnread(unreadType: unreadType, showUnfollowList: 1), RspTotalUnread.fromBuffer, diff --git a/lib/grpc/reply.dart b/lib/grpc/reply.dart index 3186ce937..65d2ea69b 100644 --- a/lib/grpc/reply.dart +++ b/lib/grpc/reply.dart @@ -1,7 +1,8 @@ import 'package:PiliPlus/common/constants.dart'; import 'package:PiliPlus/grpc/bilibili/main/community/reply/v1.pb.dart'; import 'package:PiliPlus/grpc/bilibili/pagination.pb.dart'; -import 'package:PiliPlus/grpc/grpc_repo.dart'; +import 'package:PiliPlus/grpc/grpc_req.dart'; +import 'package:PiliPlus/grpc/url.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/utils/storage_pref.dart'; import 'package:fixnum/fixnum.dart'; @@ -45,7 +46,7 @@ class ReplyGrpc { required String? offset, required Int64? cursorNext, }) async { - final res = await GrpcRepo.request( + final res = await GrpcReq.request( GrpcUrl.mainList, MainListReq( oid: Int64(oid), @@ -87,7 +88,7 @@ class ReplyGrpc { required Mode mode, required String? offset, }) async { - final res = await GrpcRepo.request( + final res = await GrpcReq.request( GrpcUrl.detailList, DetailListReq( oid: Int64(oid), @@ -111,7 +112,7 @@ class ReplyGrpc { required int dialog, required String? offset, }) async { - final res = await GrpcRepo.request( + final res = await GrpcReq.request( GrpcUrl.dialogList, DialogListReq( oid: Int64(oid), diff --git a/lib/grpc/space.dart b/lib/grpc/space.dart index 58b3102a3..ec27ff366 100644 --- a/lib/grpc/space.dart +++ b/lib/grpc/space.dart @@ -1,6 +1,7 @@ import 'package:PiliPlus/grpc/bilibili/app/dynamic/v2.pb.dart'; import 'package:PiliPlus/grpc/bilibili/pagination.pb.dart'; -import 'package:PiliPlus/grpc/grpc_repo.dart'; +import 'package:PiliPlus/grpc/grpc_req.dart'; +import 'package:PiliPlus/grpc/url.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:fixnum/fixnum.dart'; @@ -10,7 +11,7 @@ class SpaceGrpc { String? next, required String filterType, }) { - return GrpcRepo.request( + return GrpcReq.request( GrpcUrl.opusSpaceFlow, OpusSpaceFlowReq( hostMid: Int64(hostMid), diff --git a/lib/grpc/url.dart b/lib/grpc/url.dart new file mode 100644 index 000000000..eefb7b10d --- /dev/null +++ b/lib/grpc/url.dart @@ -0,0 +1,48 @@ +class GrpcUrl { + // static const playerOnline = + // '/bilibili.app.playeronline.v1.PlayerOnline/PlayerOnline'; + // static const popular = '/bilibili.app.show.v1.Popular/Index'; + + // dynamic + static const dynV1 = '/bilibili.app.dynamic.v1.Dynamic'; + // static const dynV2 = '/bilibili.app.dynamic.v2.Dynamic'; + static const opusV2 = '/bilibili.app.dynamic.v2.Opus'; + static const dynRed = '$dynV1/DynRed'; + static const opusSpaceFlow = '$opusV2/OpusSpaceFlow'; + static const opusDetail = '$opusV2/OpusDetail'; + // static const dynSpace = '$dynV2/DynSpace'; + + // danmaku + static const dmSegMobile = '/bilibili.community.service.dm.v1.DM/DmSegMobile'; + + // reply + static const reply = '/bilibili.main.community.reply.v1.Reply'; + static const mainList = '$reply/MainList'; + static const detailList = '$reply/DetailList'; + static const dialogList = '$reply/DialogList'; + // static const replyInfo = '$reply/ReplyInfo'; + + // im + static const im = '/bilibili.im.interface.v1.ImInterface'; + static const im2 = '/bilibili.app.im.v1.im'; + static const sendMsg = '$im/SendMsg'; + static const shareList = '$im/ShareList'; + static const sessionMain = '$im2/SessionMain'; + static const sessionSecondary = '$im2/SessionSecondary'; + static const clearUnread = '$im2/ClearUnread'; + static const sessionUpdate = '$im2/SessionUpdate'; + static const pinSession = '$im2/PinSession'; + static const unpinSession = '$im2/UnpinSession'; + static const deleteSessionList = '$im2/DeleteSessionList'; + static const getImSettings = '$im2/GetImSettings'; + static const setImSettings = '$im2/SetImSettings'; + static const keywordBlockingList = '$im2/KeywordBlockingList'; + static const keywordBlockingAdd = '$im2/KeywordBlockingAdd'; + static const keywordBlockingDelete = '$im2/KeywordBlockingDelete'; + static const syncFetchSessionMsgs = '$im/SyncFetchSessionMsgs'; + static const getTotalUnread = '$im/GetTotalUnread'; + + // view + static const viewunite = '/bilibili.app.viewunite.v1.View'; + static const view = '$viewunite/View'; +} diff --git a/lib/grpc/view.dart b/lib/grpc/view.dart index 5b28e4038..99f7a5fd8 100644 --- a/lib/grpc/view.dart +++ b/lib/grpc/view.dart @@ -1,13 +1,14 @@ import 'package:PiliPlus/grpc/bilibili/app/viewunite/v1.pb.dart' show ViewReq, ViewReply; -import 'package:PiliPlus/grpc/grpc_repo.dart'; +import 'package:PiliPlus/grpc/grpc_req.dart'; +import 'package:PiliPlus/grpc/url.dart'; import 'package:PiliPlus/http/loading_state.dart'; class ViewGrpc { static Future> view({ required String bvid, }) { - return GrpcRepo.request( + return GrpcReq.request( GrpcUrl.view, ViewReq( bvid: bvid, diff --git a/lib/http/live.dart b/lib/http/live.dart index b6c7c16dc..9f56b60cc 100644 --- a/lib/http/live.dart +++ b/lib/http/live.dart @@ -164,10 +164,10 @@ class LiveHttp { if (isLogin) 'access_key': Accounts.main.accessKey, 'appkey': Constants.appKey, 'actionKey': 'appkey', - 'build': '8350200', + 'build': '8430300', 'c_locale': 'zh_CN', 'device': 'pad', - 'device_name': 'vivo', + 'device_name': 'android', 'device_type': '0', 'fnval': '912', 'disable_rcmd': '0', @@ -180,7 +180,7 @@ class LiveHttp { if (isLogin) 'relation_page': '1', 's_locale': 'zh_CN', 'scale': '2', - 'statistics': Constants.statistics, + 'statistics': Constants.statisticsApp, 'ts': DateTime.now().millisecondsSinceEpoch ~/ 1000, }; AppSign.appSign( @@ -229,10 +229,10 @@ class LiveHttp { 'actionKey': 'appkey', if (areaId != null) 'area_id': areaId, if (parentAreaId != null) 'parent_area_id': parentAreaId, - 'build': '8350200', + 'build': '8430300', 'c_locale': 'zh_CN', 'device': 'pad', - 'device_name': 'vivo', + 'device_name': 'android', 'device_type': '0', 'fnval': '912', 'disable_rcmd': '0', @@ -248,7 +248,7 @@ class LiveHttp { 'tag_version': '1', 's_locale': 'zh_CN', 'scale': '2', - 'statistics': Constants.statistics, + 'statistics': Constants.statisticsApp, 'ts': (DateTime.now().millisecondsSinceEpoch ~/ 1000).toString(), }; AppSign.appSign( @@ -274,14 +274,14 @@ class LiveHttp { if (isLogin) 'access_key': Accounts.main.accessKey, 'appkey': Constants.appKey, 'actionKey': 'appkey', - 'build': '8350200', + 'build': '8430300', 'c_locale': 'zh_CN', 'device': 'pad', 'disable_rcmd': '0', 'mobi_app': 'android_hd', 'platform': 'android', 's_locale': 'zh_CN', - 'statistics': Constants.statistics, + 'statistics': Constants.statisticsApp, 'ts': DateTime.now().millisecondsSinceEpoch ~/ 1000, }; AppSign.appSign( @@ -309,14 +309,14 @@ class LiveHttp { if (isLogin) 'access_key': Accounts.main.accessKey, 'appkey': Constants.appKey, 'actionKey': 'appkey', - 'build': '8350200', + 'build': '8430300', 'c_locale': 'zh_CN', 'device': 'pad', 'disable_rcmd': '0', 'mobi_app': 'android_hd', 'platform': 'android', 's_locale': 'zh_CN', - 'statistics': Constants.statistics, + 'statistics': Constants.statisticsApp, 'ts': DateTime.now().millisecondsSinceEpoch ~/ 1000, }; AppSign.appSign( @@ -347,14 +347,14 @@ class LiveHttp { 'access_key': Accounts.main.accessKey, 'appkey': Constants.appKey, 'actionKey': 'appkey', - 'build': '8350200', + 'build': '8430300', 'c_locale': 'zh_CN', 'device': 'pad', 'disable_rcmd': '0', 'mobi_app': 'android_hd', 'platform': 'android', 's_locale': 'zh_CN', - 'statistics': Constants.statistics, + 'statistics': Constants.statisticsApp, 'ts': DateTime.now().millisecondsSinceEpoch ~/ 1000, }; AppSign.appSign( @@ -385,7 +385,7 @@ class LiveHttp { if (isLogin) 'access_key': Accounts.main.accessKey, 'appkey': Constants.appKey, 'actionKey': 'appkey', - 'build': '8350200', + 'build': '8430300', 'c_locale': 'zh_CN', 'device': 'pad', 'disable_rcmd': '0', @@ -395,7 +395,7 @@ class LiveHttp { 'mobi_app': 'android_hd', 'platform': 'android', 's_locale': 'zh_CN', - 'statistics': Constants.statistics, + 'statistics': Constants.statisticsApp, 'ts': DateTime.now().millisecondsSinceEpoch ~/ 1000, }; AppSign.appSign( @@ -426,7 +426,7 @@ class LiveHttp { if (isLogin) 'access_key': Accounts.main.accessKey, 'appkey': Constants.appKey, 'actionKey': 'appkey', - 'build': '8350200', + 'build': '8430300', 'c_locale': 'zh_CN', 'device': 'pad', 'page': page, @@ -436,7 +436,7 @@ class LiveHttp { 'mobi_app': 'android_hd', 'platform': 'android', 's_locale': 'zh_CN', - 'statistics': Constants.statistics, + 'statistics': Constants.statisticsApp, 'ts': DateTime.now().millisecondsSinceEpoch ~/ 1000, 'type': type.name, }; diff --git a/lib/http/login.dart b/lib/http/login.dart index 8561acc9f..9dd842213 100644 --- a/lib/http/login.dart +++ b/lib/http/login.dart @@ -98,7 +98,7 @@ class LoginHttp { 'build': '2001100', 'buvid': buvid, 'c_locale': 'zh_CN', - 'channel': 'yingyongbao', + 'channel': 'master', 'cid': cid, // if (deviceTouristId != null) 'device_tourist_id': deviceTouristId, 'disable_rcmd': '0', @@ -147,7 +147,7 @@ class LoginHttp { // 'build': '2001100', // 'buvid': buvid, // 'c_locale': 'zh_CN', - // 'channel': 'yingyongbao', + // 'channel': 'master', // 'deviceInfo': 'xxxxxx', // 'disable_rcmd': '0', // 'dt': Uri.encodeComponent(Encrypter(RSA(publicKey: publicKey)) @@ -199,7 +199,7 @@ class LoginHttp { 'build': '2001100', 'buvid': buvid, 'c_locale': 'zh_CN', - 'channel': 'yingyongbao', + 'channel': 'master', 'device': 'phone', 'device_id': deviceId, //'device_meta': '', @@ -267,7 +267,7 @@ class LoginHttp { 'buvid': buvid, 'c_locale': 'zh_CN', 'captcha_key': captchaKey, - 'channel': 'yingyongbao', + 'channel': 'master', 'cid': cid, 'code': code, 'device': 'phone', @@ -441,7 +441,7 @@ class LoginHttp { 'build': '2001100', 'buvid': buvid, // 'c_locale': 'zh_CN', - // 'channel': 'yingyongbao', + // 'channel': 'master', 'code': code, // 'device': 'phone', // 'device_id': deviceId, diff --git a/lib/http/search.dart b/lib/http/search.dart index b04c2df6d..6dfced173 100644 --- a/lib/http/search.dart +++ b/lib/http/search.dart @@ -245,7 +245,7 @@ class SearchHttp { final res = await Request().get( Api.searchRecommend, queryParameters: { - 'build': '8350200', + 'build': '8430300', 'c_locale': 'zh_CN', 'mobi_app': 'android', 'platform': 'android', diff --git a/lib/http/video.dart b/lib/http/video.dart index a6b43fcc2..0d76fa9e4 100644 --- a/lib/http/video.dart +++ b/lib/http/video.dart @@ -76,10 +76,10 @@ class VideoHttp { Map data = { 'build': '2001100', 'c_locale': 'zh_CN', - 'channel': 'yingyongbao', + 'channel': 'master', 'column': '4', 'device': 'pad', - 'device_name': 'vivo', + 'device_name': 'android', 'device_type': '0', 'disable_rcmd': '0', 'flush': '5', diff --git a/lib/pages/member_profile/view.dart b/lib/pages/member_profile/view.dart index 4e67ff922..1ed0e58b4 100644 --- a/lib/pages/member_profile/view.dart +++ b/lib/pages/member_profile/view.dart @@ -64,9 +64,9 @@ class _EditProfilePageState extends State { Future _getInfo() async { Map data = { - 'build': '1462100', + 'build': '2001100', 'c_locale': 'zh_CN', - 'channel': 'yingyongbao', + 'channel': 'master', 'mobi_app': 'android_hd', 'platform': 'android', 's_locale': 'zh_CN', @@ -336,9 +336,9 @@ class _EditProfilePageState extends State { } Map data = { 'access_key': accessKey!, - 'build': '1462100', + 'build': '2001100', 'c_locale': 'zh_CN', - 'channel': 'yingyongbao', + 'channel': 'master', 'mobi_app': 'android_hd', 'platform': 'android', 's_locale': 'zh_CN', diff --git a/lib/utils/login_utils.dart b/lib/utils/login_utils.dart index 2ebec2164..7a774f277 100644 --- a/lib/utils/login_utils.dart +++ b/lib/utils/login_utils.dart @@ -1,6 +1,6 @@ import 'dart:math'; -import 'package:PiliPlus/grpc/grpc_repo.dart'; +import 'package:PiliPlus/grpc/grpc_req.dart'; import 'package:PiliPlus/http/loading_state.dart'; import 'package:PiliPlus/http/user.dart'; import 'package:PiliPlus/models/common/dynamic/dynamics_type.dart'; @@ -26,7 +26,7 @@ class LoginUtils { static Future onLoginMain() async { final account = Accounts.main; - GrpcRepo.updateHeaders(account.accessKey); + GrpcReq.updateHeaders(account.accessKey); try { final cookies = account.cookieJar.toList(); final webManager = web.CookieManager(); @@ -105,7 +105,7 @@ class LoginUtils { ..face.value = '' ..isLogin.value = false; - GrpcRepo.updateHeaders(null); + GrpcReq.updateHeaders(null); await Future.wait([ web.CookieManager().deleteAllCookies(),