diff --git a/lib/grpc/app/playeronline/v1/playeronline.dart b/lib/grpc/app/playeronline/v1/playeronline.dart new file mode 100644 index 000000000..0b5a1211a --- /dev/null +++ b/lib/grpc/app/playeronline/v1/playeronline.dart @@ -0,0 +1,124 @@ +import 'dart:convert'; + +import 'package:PiliPalaX/grpc/device/device.pb.dart'; +import 'package:PiliPalaX/grpc/fawkes/fawkes.pb.dart'; +import 'package:PiliPalaX/grpc/locale/locale.pb.dart'; +import 'package:PiliPalaX/grpc/metadata/metadata.pb.dart'; +import 'package:PiliPalaX/grpc/network/network.pb.dart'; +import 'package:PiliPalaX/grpc/app/playeronline/v1/playeronline.pbgrpc.dart'; +import 'package:PiliPalaX/grpc/restriction/restriction.pb.dart'; +import 'package:PiliPalaX/utils/storage.dart'; +import 'package:PiliPalaX/utils/utils.dart'; +import 'package:fixnum/src/int64.dart'; +import 'package:grpc/grpc.dart'; + +class OnlineClient { + ClientChannel? _channel; + PlayerOnlineClient? _stub; + + OnlineClient() { + _channel = ClientChannel( + 'grpc.biliapi.net', + port: 443, + options: ChannelOptions( + credentials: ChannelCredentials.secure(), + ), + ); + _stub = PlayerOnlineClient(_channel!); + } + + Future playerOnline({ + int aid = 0, + int cid = 0, + }) async { + try { + int mid = GStorage.userInfo.get('userInfoCache').mid; + String accessKey = GStorage.localCache + .get(LocalCacheKey.accessKey, defaultValue: {})['value']; + String traceId = Utils.genTraceId(); + String eId = Utils.genAuroraEid(mid); + + final metadata = { + 'user-agent': + 'Dalvik/2.1.0 (Linux; U; Android 12; android Build/android) 7380300 os/android model/android mobi_app/android build/7380300 channel/master innerVer/7380300 osVer/12 network/2 grpc-java-cronet/1.36.1', + 'x-bili-gaia-vtoken': '', + 'x-bili-aurora-eid': eId, + 'x-bili-mid': mid.toString(), + 'x-bili-aurora-zone': '', + 'x-bili-trace-id': traceId, + 'authorization': 'identify_v1 $accessKey', + 'buvid': 'XX82B818F96FB2F312B3A1BA44DB41892FF99', + 'bili-http-engine': 'cronet', + 'te': 'trailers', + 'x-bili-fawkes-req-bin': base64Encode((FawkesReq() + ..appkey = 'android64' + ..env = 'prod' + ..sessionId = '5974f68d') + .writeToBuffer()), + 'x-bili-metadata-bin': base64Encode((Metadata() + ..accessKey = accessKey + ..mobiApp = 'android' + ..device = 'phone' + ..build = 7380300 + ..channel = 'bili' + ..buvid = 'XX82B818F96FB2F312B3A1BA44DB41892FF99' + ..platform = 'android') + .writeToBuffer()), + 'x-bili-device-bin': base64Encode((Device() + ..appId = 1 + ..build = 7380300 + ..buvid = 'XX82B818F96FB2F312B3A1BA44DB41892FF99' + ..mobiApp = 'android' + ..platform = 'android' + ..device = 'phone' + ..channel = 'bili' + ..brand = '' + ..model = '' + ..osver = '' + ..fpLocal = '' + ..fpRemote = '' + ..versionName = '' + ..fp = '' + ..fts = Int64(123456789)) + .writeToBuffer()), + 'x-bili-network-bin': base64Encode((Network() + ..type = NetworkType.WIFI + ..tf = TFType.TF_UNKNOWN + ..oid = 'CMCC') + .writeToBuffer()), + 'x-bili-restriction-bin': base64Encode((Restriction() + ..teenagersMode = false + ..lessonsMode = false + ..mode = ModeType.NORMAL + ..review = false + ..disableRcmd = false + ..basicMode = false) + .writeToBuffer()), + 'x-bili-locale-bin': base64Encode((Locale() + ..cLocale = LocaleIds(language: 'CN') + ..sLocale = LocaleIds(language: 'CN') + ..simCode = '' + ..timezone = 'Asia/Shanghai') + .writeToBuffer()), + 'x-bili-exps-bin': '', + }; + + final options = CallOptions( + metadata: metadata, + ); + + final request = PlayerOnlineReq() + ..aid = Int64(aid) + ..cid = Int64(cid) + ..playOpen = true; + final response = await _stub!.playerOnline(request, options: options); + print('Server response: ${response.totalText}'); + } catch (e) { + print('Caught error: $e'); + } + } + + Future shutdown() async { + await _channel?.shutdown(); + } +} diff --git a/lib/grpc/app/playeronline/v1/playeronline.pb.dart b/lib/grpc/app/playeronline/v1/playeronline.pb.dart new file mode 100644 index 000000000..1a611294f --- /dev/null +++ b/lib/grpc/app/playeronline/v1/playeronline.pb.dart @@ -0,0 +1,477 @@ +// +// Generated code. Do not modify. +// source: playeronline.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:core' as $core; + +import 'package:fixnum/fixnum.dart' as $fixnum; +import 'package:protobuf/protobuf.dart' as $pb; + +/// 空回复 +class NoReply extends $pb.GeneratedMessage { + factory NoReply() => create(); + NoReply._() : super(); + factory NoReply.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory NoReply.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'NoReply', package: const $pb.PackageName(_omitMessageNames ? '' : 'bilibili.app.playeronline.v1'), createEmptyInstance: create) + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + NoReply clone() => NoReply()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + NoReply copyWith(void Function(NoReply) updates) => super.copyWith((message) => updates(message as NoReply)) as NoReply; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static NoReply create() => NoReply._(); + NoReply createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static NoReply getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static NoReply? _defaultInstance; +} + +/// 获取在线人数-回复 +class PlayerOnlineReply extends $pb.GeneratedMessage { + factory PlayerOnlineReply({ + $core.String? totalText, + $fixnum.Int64? secNext, + $core.bool? bottomShow, + $core.bool? sdmShow, + $core.String? sdmText, + $fixnum.Int64? totalNumber, + $core.String? totalNumberText, + }) { + final $result = create(); + if (totalText != null) { + $result.totalText = totalText; + } + if (secNext != null) { + $result.secNext = secNext; + } + if (bottomShow != null) { + $result.bottomShow = bottomShow; + } + if (sdmShow != null) { + $result.sdmShow = sdmShow; + } + if (sdmText != null) { + $result.sdmText = sdmText; + } + if (totalNumber != null) { + $result.totalNumber = totalNumber; + } + if (totalNumberText != null) { + $result.totalNumberText = totalNumberText; + } + return $result; + } + PlayerOnlineReply._() : super(); + factory PlayerOnlineReply.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory PlayerOnlineReply.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'PlayerOnlineReply', package: const $pb.PackageName(_omitMessageNames ? '' : 'bilibili.app.playeronline.v1'), createEmptyInstance: create) + ..aOS(1, _omitFieldNames ? '' : 'totalText') + ..aInt64(2, _omitFieldNames ? '' : 'secNext') + ..aOB(3, _omitFieldNames ? '' : 'bottomShow') + ..aOB(4, _omitFieldNames ? '' : 'sdmShow') + ..aOS(5, _omitFieldNames ? '' : 'sdmText') + ..aInt64(6, _omitFieldNames ? '' : 'totalNumber') + ..aOS(7, _omitFieldNames ? '' : 'totalNumberText') + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + PlayerOnlineReply clone() => PlayerOnlineReply()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + PlayerOnlineReply copyWith(void Function(PlayerOnlineReply) updates) => super.copyWith((message) => updates(message as PlayerOnlineReply)) as PlayerOnlineReply; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static PlayerOnlineReply create() => PlayerOnlineReply._(); + PlayerOnlineReply createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static PlayerOnlineReply getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static PlayerOnlineReply? _defaultInstance; + + @$pb.TagNumber(1) + $core.String get totalText => $_getSZ(0); + @$pb.TagNumber(1) + set totalText($core.String v) { $_setString(0, v); } + @$pb.TagNumber(1) + $core.bool hasTotalText() => $_has(0); + @$pb.TagNumber(1) + void clearTotalText() => clearField(1); + + /// 下次轮询间隔时间 + @$pb.TagNumber(2) + $fixnum.Int64 get secNext => $_getI64(1); + @$pb.TagNumber(2) + set secNext($fixnum.Int64 v) { $_setInt64(1, v); } + @$pb.TagNumber(2) + $core.bool hasSecNext() => $_has(1); + @$pb.TagNumber(2) + void clearSecNext() => clearField(2); + + /// 是否底部显示 + @$pb.TagNumber(3) + $core.bool get bottomShow => $_getBF(2); + @$pb.TagNumber(3) + set bottomShow($core.bool v) { $_setBool(2, v); } + @$pb.TagNumber(3) + $core.bool hasBottomShow() => $_has(2); + @$pb.TagNumber(3) + void clearBottomShow() => clearField(3); + + @$pb.TagNumber(4) + $core.bool get sdmShow => $_getBF(3); + @$pb.TagNumber(4) + set sdmShow($core.bool v) { $_setBool(3, v); } + @$pb.TagNumber(4) + $core.bool hasSdmShow() => $_has(3); + @$pb.TagNumber(4) + void clearSdmShow() => clearField(4); + + @$pb.TagNumber(5) + $core.String get sdmText => $_getSZ(4); + @$pb.TagNumber(5) + set sdmText($core.String v) { $_setString(4, v); } + @$pb.TagNumber(5) + $core.bool hasSdmText() => $_has(4); + @$pb.TagNumber(5) + void clearSdmText() => clearField(5); + + @$pb.TagNumber(6) + $fixnum.Int64 get totalNumber => $_getI64(5); + @$pb.TagNumber(6) + set totalNumber($fixnum.Int64 v) { $_setInt64(5, v); } + @$pb.TagNumber(6) + $core.bool hasTotalNumber() => $_has(5); + @$pb.TagNumber(6) + void clearTotalNumber() => clearField(6); + + @$pb.TagNumber(7) + $core.String get totalNumberText => $_getSZ(6); + @$pb.TagNumber(7) + set totalNumberText($core.String v) { $_setString(6, v); } + @$pb.TagNumber(7) + $core.bool hasTotalNumberText() => $_has(6); + @$pb.TagNumber(7) + void clearTotalNumberText() => clearField(7); +} + +/// 获取在线人数-请求 +class PlayerOnlineReq extends $pb.GeneratedMessage { + factory PlayerOnlineReq({ + $fixnum.Int64? aid, + $fixnum.Int64? cid, + $core.bool? playOpen, + }) { + final $result = create(); + if (aid != null) { + $result.aid = aid; + } + if (cid != null) { + $result.cid = cid; + } + if (playOpen != null) { + $result.playOpen = playOpen; + } + return $result; + } + PlayerOnlineReq._() : super(); + factory PlayerOnlineReq.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory PlayerOnlineReq.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'PlayerOnlineReq', package: const $pb.PackageName(_omitMessageNames ? '' : 'bilibili.app.playeronline.v1'), createEmptyInstance: create) + ..aInt64(1, _omitFieldNames ? '' : 'aid') + ..aInt64(2, _omitFieldNames ? '' : 'cid') + ..aOB(3, _omitFieldNames ? '' : 'playOpen') + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + PlayerOnlineReq clone() => PlayerOnlineReq()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + PlayerOnlineReq copyWith(void Function(PlayerOnlineReq) updates) => super.copyWith((message) => updates(message as PlayerOnlineReq)) as PlayerOnlineReq; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static PlayerOnlineReq create() => PlayerOnlineReq._(); + PlayerOnlineReq createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static PlayerOnlineReq getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static PlayerOnlineReq? _defaultInstance; + + /// 稿件 avid + @$pb.TagNumber(1) + $fixnum.Int64 get aid => $_getI64(0); + @$pb.TagNumber(1) + set aid($fixnum.Int64 v) { $_setInt64(0, v); } + @$pb.TagNumber(1) + $core.bool hasAid() => $_has(0); + @$pb.TagNumber(1) + void clearAid() => clearField(1); + + /// 视频 cid + @$pb.TagNumber(2) + $fixnum.Int64 get cid => $_getI64(1); + @$pb.TagNumber(2) + set cid($fixnum.Int64 v) { $_setInt64(1, v); } + @$pb.TagNumber(2) + $core.bool hasCid() => $_has(1); + @$pb.TagNumber(2) + void clearCid() => clearField(2); + + /// 是否在播放中 + @$pb.TagNumber(3) + $core.bool get playOpen => $_getBF(2); + @$pb.TagNumber(3) + set playOpen($core.bool v) { $_setBool(2, v); } + @$pb.TagNumber(3) + $core.bool hasPlayOpen() => $_has(2); + @$pb.TagNumber(3) + void clearPlayOpen() => clearField(3); +} + +class PremiereInfoReply extends $pb.GeneratedMessage { + factory PremiereInfoReply({ + $core.String? premiereOverText, + $fixnum.Int64? participant, + $fixnum.Int64? interaction, + }) { + final $result = create(); + if (premiereOverText != null) { + $result.premiereOverText = premiereOverText; + } + if (participant != null) { + $result.participant = participant; + } + if (interaction != null) { + $result.interaction = interaction; + } + return $result; + } + PremiereInfoReply._() : super(); + factory PremiereInfoReply.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory PremiereInfoReply.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'PremiereInfoReply', package: const $pb.PackageName(_omitMessageNames ? '' : 'bilibili.app.playeronline.v1'), createEmptyInstance: create) + ..aOS(1, _omitFieldNames ? '' : 'premiereOverText') + ..aInt64(2, _omitFieldNames ? '' : 'participant') + ..aInt64(3, _omitFieldNames ? '' : 'interaction') + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + PremiereInfoReply clone() => PremiereInfoReply()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + PremiereInfoReply copyWith(void Function(PremiereInfoReply) updates) => super.copyWith((message) => updates(message as PremiereInfoReply)) as PremiereInfoReply; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static PremiereInfoReply create() => PremiereInfoReply._(); + PremiereInfoReply createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static PremiereInfoReply getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static PremiereInfoReply? _defaultInstance; + + @$pb.TagNumber(1) + $core.String get premiereOverText => $_getSZ(0); + @$pb.TagNumber(1) + set premiereOverText($core.String v) { $_setString(0, v); } + @$pb.TagNumber(1) + $core.bool hasPremiereOverText() => $_has(0); + @$pb.TagNumber(1) + void clearPremiereOverText() => clearField(1); + + @$pb.TagNumber(2) + $fixnum.Int64 get participant => $_getI64(1); + @$pb.TagNumber(2) + set participant($fixnum.Int64 v) { $_setInt64(1, v); } + @$pb.TagNumber(2) + $core.bool hasParticipant() => $_has(1); + @$pb.TagNumber(2) + void clearParticipant() => clearField(2); + + @$pb.TagNumber(3) + $fixnum.Int64 get interaction => $_getI64(2); + @$pb.TagNumber(3) + set interaction($fixnum.Int64 v) { $_setInt64(2, v); } + @$pb.TagNumber(3) + $core.bool hasInteraction() => $_has(2); + @$pb.TagNumber(3) + void clearInteraction() => clearField(3); +} + +class PremiereInfoReq extends $pb.GeneratedMessage { + factory PremiereInfoReq({ + $fixnum.Int64? aid, + }) { + final $result = create(); + if (aid != null) { + $result.aid = aid; + } + return $result; + } + PremiereInfoReq._() : super(); + factory PremiereInfoReq.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory PremiereInfoReq.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'PremiereInfoReq', package: const $pb.PackageName(_omitMessageNames ? '' : 'bilibili.app.playeronline.v1'), createEmptyInstance: create) + ..aInt64(1, _omitFieldNames ? '' : 'aid') + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + PremiereInfoReq clone() => PremiereInfoReq()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + PremiereInfoReq copyWith(void Function(PremiereInfoReq) updates) => super.copyWith((message) => updates(message as PremiereInfoReq)) as PremiereInfoReq; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static PremiereInfoReq create() => PremiereInfoReq._(); + PremiereInfoReq createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static PremiereInfoReq getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static PremiereInfoReq? _defaultInstance; + + @$pb.TagNumber(1) + $fixnum.Int64 get aid => $_getI64(0); + @$pb.TagNumber(1) + set aid($fixnum.Int64 v) { $_setInt64(0, v); } + @$pb.TagNumber(1) + $core.bool hasAid() => $_has(0); + @$pb.TagNumber(1) + void clearAid() => clearField(1); +} + +class ReportWatchReq extends $pb.GeneratedMessage { + factory ReportWatchReq({ + $fixnum.Int64? aid, + $core.String? biz, + $core.String? buvid, + }) { + final $result = create(); + if (aid != null) { + $result.aid = aid; + } + if (biz != null) { + $result.biz = biz; + } + if (buvid != null) { + $result.buvid = buvid; + } + return $result; + } + ReportWatchReq._() : super(); + factory ReportWatchReq.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory ReportWatchReq.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'ReportWatchReq', package: const $pb.PackageName(_omitMessageNames ? '' : 'bilibili.app.playeronline.v1'), createEmptyInstance: create) + ..aInt64(1, _omitFieldNames ? '' : 'aid') + ..aOS(2, _omitFieldNames ? '' : 'biz') + ..aOS(3, _omitFieldNames ? '' : 'buvid') + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + ReportWatchReq clone() => ReportWatchReq()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + ReportWatchReq copyWith(void Function(ReportWatchReq) updates) => super.copyWith((message) => updates(message as ReportWatchReq)) as ReportWatchReq; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static ReportWatchReq create() => ReportWatchReq._(); + ReportWatchReq createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static ReportWatchReq getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static ReportWatchReq? _defaultInstance; + + @$pb.TagNumber(1) + $fixnum.Int64 get aid => $_getI64(0); + @$pb.TagNumber(1) + set aid($fixnum.Int64 v) { $_setInt64(0, v); } + @$pb.TagNumber(1) + $core.bool hasAid() => $_has(0); + @$pb.TagNumber(1) + void clearAid() => clearField(1); + + @$pb.TagNumber(2) + $core.String get biz => $_getSZ(1); + @$pb.TagNumber(2) + set biz($core.String v) { $_setString(1, v); } + @$pb.TagNumber(2) + $core.bool hasBiz() => $_has(1); + @$pb.TagNumber(2) + void clearBiz() => clearField(2); + + @$pb.TagNumber(3) + $core.String get buvid => $_getSZ(2); + @$pb.TagNumber(3) + set buvid($core.String v) { $_setString(2, v); } + @$pb.TagNumber(3) + $core.bool hasBuvid() => $_has(2); + @$pb.TagNumber(3) + void clearBuvid() => clearField(3); +} + + +const _omitFieldNames = $core.bool.fromEnvironment('protobuf.omit_field_names'); +const _omitMessageNames = $core.bool.fromEnvironment('protobuf.omit_message_names'); diff --git a/lib/grpc/app/playeronline/v1/playeronline.pbenum.dart b/lib/grpc/app/playeronline/v1/playeronline.pbenum.dart new file mode 100644 index 000000000..260c6bc75 --- /dev/null +++ b/lib/grpc/app/playeronline/v1/playeronline.pbenum.dart @@ -0,0 +1,11 @@ +// +// Generated code. Do not modify. +// source: playeronline.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + diff --git a/lib/grpc/app/playeronline/v1/playeronline.pbgrpc.dart b/lib/grpc/app/playeronline/v1/playeronline.pbgrpc.dart new file mode 100644 index 000000000..90b5a4f04 --- /dev/null +++ b/lib/grpc/app/playeronline/v1/playeronline.pbgrpc.dart @@ -0,0 +1,99 @@ +// +// Generated code. Do not modify. +// source: playeronline.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:async' as $async; +import 'dart:core' as $core; + +import 'package:grpc/service_api.dart' as $grpc; +import 'package:protobuf/protobuf.dart' as $pb; + +import 'playeronline.pb.dart' as $0; + +export 'playeronline.pb.dart'; + +@$pb.GrpcServiceName('bilibili.app.playeronline.v1.PlayerOnline') +class PlayerOnlineClient extends $grpc.Client { + static final _$playerOnline = $grpc.ClientMethod<$0.PlayerOnlineReq, $0.PlayerOnlineReply>( + '/bilibili.app.playeronline.v1.PlayerOnline/PlayerOnline', + ($0.PlayerOnlineReq value) => value.writeToBuffer(), + ($core.List<$core.int> value) => $0.PlayerOnlineReply.fromBuffer(value)); + static final _$premiereInfo = $grpc.ClientMethod<$0.PremiereInfoReq, $0.PremiereInfoReply>( + '/bilibili.app.playeronline.v1.PlayerOnline/PremiereInfo', + ($0.PremiereInfoReq value) => value.writeToBuffer(), + ($core.List<$core.int> value) => $0.PremiereInfoReply.fromBuffer(value)); + static final _$reportWatch = $grpc.ClientMethod<$0.ReportWatchReq, $0.NoReply>( + '/bilibili.app.playeronline.v1.PlayerOnline/ReportWatch', + ($0.ReportWatchReq value) => value.writeToBuffer(), + ($core.List<$core.int> value) => $0.NoReply.fromBuffer(value)); + + PlayerOnlineClient($grpc.ClientChannel channel, + {$grpc.CallOptions? options, + $core.Iterable<$grpc.ClientInterceptor>? interceptors}) + : super(channel, options: options, + interceptors: interceptors); + + $grpc.ResponseFuture<$0.PlayerOnlineReply> playerOnline($0.PlayerOnlineReq request, {$grpc.CallOptions? options}) { + return $createUnaryCall(_$playerOnline, request, options: options); + } + + $grpc.ResponseFuture<$0.PremiereInfoReply> premiereInfo($0.PremiereInfoReq request, {$grpc.CallOptions? options}) { + return $createUnaryCall(_$premiereInfo, request, options: options); + } + + $grpc.ResponseFuture<$0.NoReply> reportWatch($0.ReportWatchReq request, {$grpc.CallOptions? options}) { + return $createUnaryCall(_$reportWatch, request, options: options); + } +} + +@$pb.GrpcServiceName('bilibili.app.playeronline.v1.PlayerOnline') +abstract class PlayerOnlineServiceBase extends $grpc.Service { + $core.String get $name => 'bilibili.app.playeronline.v1.PlayerOnline'; + + PlayerOnlineServiceBase() { + $addMethod($grpc.ServiceMethod<$0.PlayerOnlineReq, $0.PlayerOnlineReply>( + 'PlayerOnline', + playerOnline_Pre, + false, + false, + ($core.List<$core.int> value) => $0.PlayerOnlineReq.fromBuffer(value), + ($0.PlayerOnlineReply value) => value.writeToBuffer())); + $addMethod($grpc.ServiceMethod<$0.PremiereInfoReq, $0.PremiereInfoReply>( + 'PremiereInfo', + premiereInfo_Pre, + false, + false, + ($core.List<$core.int> value) => $0.PremiereInfoReq.fromBuffer(value), + ($0.PremiereInfoReply value) => value.writeToBuffer())); + $addMethod($grpc.ServiceMethod<$0.ReportWatchReq, $0.NoReply>( + 'ReportWatch', + reportWatch_Pre, + false, + false, + ($core.List<$core.int> value) => $0.ReportWatchReq.fromBuffer(value), + ($0.NoReply value) => value.writeToBuffer())); + } + + $async.Future<$0.PlayerOnlineReply> playerOnline_Pre($grpc.ServiceCall call, $async.Future<$0.PlayerOnlineReq> request) async { + return playerOnline(call, await request); + } + + $async.Future<$0.PremiereInfoReply> premiereInfo_Pre($grpc.ServiceCall call, $async.Future<$0.PremiereInfoReq> request) async { + return premiereInfo(call, await request); + } + + $async.Future<$0.NoReply> reportWatch_Pre($grpc.ServiceCall call, $async.Future<$0.ReportWatchReq> request) async { + return reportWatch(call, await request); + } + + $async.Future<$0.PlayerOnlineReply> playerOnline($grpc.ServiceCall call, $0.PlayerOnlineReq request); + $async.Future<$0.PremiereInfoReply> premiereInfo($grpc.ServiceCall call, $0.PremiereInfoReq request); + $async.Future<$0.NoReply> reportWatch($grpc.ServiceCall call, $0.ReportWatchReq request); +} diff --git a/lib/grpc/app/playeronline/v1/playeronline.pbjson.dart b/lib/grpc/app/playeronline/v1/playeronline.pbjson.dart new file mode 100644 index 000000000..55470c517 --- /dev/null +++ b/lib/grpc/app/playeronline/v1/playeronline.pbjson.dart @@ -0,0 +1,104 @@ +// +// Generated code. Do not modify. +// source: playeronline.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:convert' as $convert; +import 'dart:core' as $core; +import 'dart:typed_data' as $typed_data; + +@$core.Deprecated('Use noReplyDescriptor instead') +const NoReply$json = { + '1': 'NoReply', +}; + +/// Descriptor for `NoReply`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List noReplyDescriptor = $convert.base64Decode( + 'CgdOb1JlcGx5'); + +@$core.Deprecated('Use playerOnlineReplyDescriptor instead') +const PlayerOnlineReply$json = { + '1': 'PlayerOnlineReply', + '2': [ + {'1': 'total_text', '3': 1, '4': 1, '5': 9, '10': 'totalText'}, + {'1': 'sec_next', '3': 2, '4': 1, '5': 3, '10': 'secNext'}, + {'1': 'bottom_show', '3': 3, '4': 1, '5': 8, '10': 'bottomShow'}, + {'1': 'sdm_show', '3': 4, '4': 1, '5': 8, '10': 'sdmShow'}, + {'1': 'sdm_text', '3': 5, '4': 1, '5': 9, '10': 'sdmText'}, + {'1': 'total_number', '3': 6, '4': 1, '5': 3, '10': 'totalNumber'}, + {'1': 'total_number_text', '3': 7, '4': 1, '5': 9, '10': 'totalNumberText'}, + ], +}; + +/// Descriptor for `PlayerOnlineReply`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List playerOnlineReplyDescriptor = $convert.base64Decode( + 'ChFQbGF5ZXJPbmxpbmVSZXBseRIdCgp0b3RhbF90ZXh0GAEgASgJUgl0b3RhbFRleHQSGQoIc2' + 'VjX25leHQYAiABKANSB3NlY05leHQSHwoLYm90dG9tX3Nob3cYAyABKAhSCmJvdHRvbVNob3cS' + 'GQoIc2RtX3Nob3cYBCABKAhSB3NkbVNob3cSGQoIc2RtX3RleHQYBSABKAlSB3NkbVRleHQSIQ' + 'oMdG90YWxfbnVtYmVyGAYgASgDUgt0b3RhbE51bWJlchIqChF0b3RhbF9udW1iZXJfdGV4dBgH' + 'IAEoCVIPdG90YWxOdW1iZXJUZXh0'); + +@$core.Deprecated('Use playerOnlineReqDescriptor instead') +const PlayerOnlineReq$json = { + '1': 'PlayerOnlineReq', + '2': [ + {'1': 'aid', '3': 1, '4': 1, '5': 3, '10': 'aid'}, + {'1': 'cid', '3': 2, '4': 1, '5': 3, '10': 'cid'}, + {'1': 'play_open', '3': 3, '4': 1, '5': 8, '10': 'playOpen'}, + ], +}; + +/// Descriptor for `PlayerOnlineReq`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List playerOnlineReqDescriptor = $convert.base64Decode( + 'Cg9QbGF5ZXJPbmxpbmVSZXESEAoDYWlkGAEgASgDUgNhaWQSEAoDY2lkGAIgASgDUgNjaWQSGw' + 'oJcGxheV9vcGVuGAMgASgIUghwbGF5T3Blbg=='); + +@$core.Deprecated('Use premiereInfoReplyDescriptor instead') +const PremiereInfoReply$json = { + '1': 'PremiereInfoReply', + '2': [ + {'1': 'premiere_over_text', '3': 1, '4': 1, '5': 9, '10': 'premiereOverText'}, + {'1': 'participant', '3': 2, '4': 1, '5': 3, '10': 'participant'}, + {'1': 'interaction', '3': 3, '4': 1, '5': 3, '10': 'interaction'}, + ], +}; + +/// Descriptor for `PremiereInfoReply`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List premiereInfoReplyDescriptor = $convert.base64Decode( + 'ChFQcmVtaWVyZUluZm9SZXBseRIsChJwcmVtaWVyZV9vdmVyX3RleHQYASABKAlSEHByZW1pZX' + 'JlT3ZlclRleHQSIAoLcGFydGljaXBhbnQYAiABKANSC3BhcnRpY2lwYW50EiAKC2ludGVyYWN0' + 'aW9uGAMgASgDUgtpbnRlcmFjdGlvbg=='); + +@$core.Deprecated('Use premiereInfoReqDescriptor instead') +const PremiereInfoReq$json = { + '1': 'PremiereInfoReq', + '2': [ + {'1': 'aid', '3': 1, '4': 1, '5': 3, '10': 'aid'}, + ], +}; + +/// Descriptor for `PremiereInfoReq`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List premiereInfoReqDescriptor = $convert.base64Decode( + 'Cg9QcmVtaWVyZUluZm9SZXESEAoDYWlkGAEgASgDUgNhaWQ='); + +@$core.Deprecated('Use reportWatchReqDescriptor instead') +const ReportWatchReq$json = { + '1': 'ReportWatchReq', + '2': [ + {'1': 'aid', '3': 1, '4': 1, '5': 3, '10': 'aid'}, + {'1': 'biz', '3': 2, '4': 1, '5': 9, '10': 'biz'}, + {'1': 'buvid', '3': 3, '4': 1, '5': 9, '10': 'buvid'}, + ], +}; + +/// Descriptor for `ReportWatchReq`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List reportWatchReqDescriptor = $convert.base64Decode( + 'Cg5SZXBvcnRXYXRjaFJlcRIQCgNhaWQYASABKANSA2FpZBIQCgNiaXoYAiABKAlSA2JpehIUCg' + 'VidXZpZBgDIAEoCVIFYnV2aWQ='); + diff --git a/lib/grpc/device/device.pb.dart b/lib/grpc/device/device.pb.dart new file mode 100644 index 000000000..1f58d0036 --- /dev/null +++ b/lib/grpc/device/device.pb.dart @@ -0,0 +1,285 @@ +// +// Generated code. Do not modify. +// source: device.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:core' as $core; + +import 'package:fixnum/fixnum.dart' as $fixnum; +import 'package:protobuf/protobuf.dart' as $pb; + +/// 设备信息 +/// gRPC头部:x-bili-device-bin +class Device extends $pb.GeneratedMessage { + factory Device({ + $core.int? appId, + $core.int? build, + $core.String? buvid, + $core.String? mobiApp, + $core.String? platform, + $core.String? device, + $core.String? channel, + $core.String? brand, + $core.String? model, + $core.String? osver, + $core.String? fpLocal, + $core.String? fpRemote, + $core.String? versionName, + $core.String? fp, + $fixnum.Int64? fts, + }) { + final $result = create(); + if (appId != null) { + $result.appId = appId; + } + if (build != null) { + $result.build = build; + } + if (buvid != null) { + $result.buvid = buvid; + } + if (mobiApp != null) { + $result.mobiApp = mobiApp; + } + if (platform != null) { + $result.platform = platform; + } + if (device != null) { + $result.device = device; + } + if (channel != null) { + $result.channel = channel; + } + if (brand != null) { + $result.brand = brand; + } + if (model != null) { + $result.model = model; + } + if (osver != null) { + $result.osver = osver; + } + if (fpLocal != null) { + $result.fpLocal = fpLocal; + } + if (fpRemote != null) { + $result.fpRemote = fpRemote; + } + if (versionName != null) { + $result.versionName = versionName; + } + if (fp != null) { + $result.fp = fp; + } + if (fts != null) { + $result.fts = fts; + } + return $result; + } + Device._() : super(); + factory Device.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory Device.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'Device', package: const $pb.PackageName(_omitMessageNames ? '' : 'bilibili.metadata.device'), createEmptyInstance: create) + ..a<$core.int>(1, _omitFieldNames ? '' : 'appId', $pb.PbFieldType.O3) + ..a<$core.int>(2, _omitFieldNames ? '' : 'build', $pb.PbFieldType.O3) + ..aOS(3, _omitFieldNames ? '' : 'buvid') + ..aOS(4, _omitFieldNames ? '' : 'mobiApp') + ..aOS(5, _omitFieldNames ? '' : 'platform') + ..aOS(6, _omitFieldNames ? '' : 'device') + ..aOS(7, _omitFieldNames ? '' : 'channel') + ..aOS(8, _omitFieldNames ? '' : 'brand') + ..aOS(9, _omitFieldNames ? '' : 'model') + ..aOS(10, _omitFieldNames ? '' : 'osver') + ..aOS(11, _omitFieldNames ? '' : 'fpLocal') + ..aOS(12, _omitFieldNames ? '' : 'fpRemote') + ..aOS(13, _omitFieldNames ? '' : 'versionName') + ..aOS(14, _omitFieldNames ? '' : 'fp') + ..aInt64(15, _omitFieldNames ? '' : 'fts') + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + Device clone() => Device()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + Device copyWith(void Function(Device) updates) => super.copyWith((message) => updates(message as Device)) as Device; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static Device create() => Device._(); + Device createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static Device getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static Device? _defaultInstance; + + /// 产品id + /// 粉 白 蓝 直播姬 HD 海外 OTT 漫画 TV野版 小视频 网易漫画 网易漫画 网易漫画HD 国际版 东南亚版 + /// 1 2 3 4 5 6 7 8 9 10 11 12 13 14 30 + @$pb.TagNumber(1) + $core.int get appId => $_getIZ(0); + @$pb.TagNumber(1) + set appId($core.int v) { $_setSignedInt32(0, v); } + @$pb.TagNumber(1) + $core.bool hasAppId() => $_has(0); + @$pb.TagNumber(1) + void clearAppId() => clearField(1); + + /// 构建id + @$pb.TagNumber(2) + $core.int get build => $_getIZ(1); + @$pb.TagNumber(2) + set build($core.int v) { $_setSignedInt32(1, v); } + @$pb.TagNumber(2) + $core.bool hasBuild() => $_has(1); + @$pb.TagNumber(2) + void clearBuild() => clearField(2); + + /// 设备buvid + @$pb.TagNumber(3) + $core.String get buvid => $_getSZ(2); + @$pb.TagNumber(3) + set buvid($core.String v) { $_setString(2, v); } + @$pb.TagNumber(3) + $core.bool hasBuvid() => $_has(2); + @$pb.TagNumber(3) + void clearBuvid() => clearField(3); + + /// 包类型 + @$pb.TagNumber(4) + $core.String get mobiApp => $_getSZ(3); + @$pb.TagNumber(4) + set mobiApp($core.String v) { $_setString(3, v); } + @$pb.TagNumber(4) + $core.bool hasMobiApp() => $_has(3); + @$pb.TagNumber(4) + void clearMobiApp() => clearField(4); + + /// 平台类型 + /// ios android + @$pb.TagNumber(5) + $core.String get platform => $_getSZ(4); + @$pb.TagNumber(5) + set platform($core.String v) { $_setString(4, v); } + @$pb.TagNumber(5) + $core.bool hasPlatform() => $_has(4); + @$pb.TagNumber(5) + void clearPlatform() => clearField(5); + + /// 设备类型 + @$pb.TagNumber(6) + $core.String get device => $_getSZ(5); + @$pb.TagNumber(6) + set device($core.String v) { $_setString(5, v); } + @$pb.TagNumber(6) + $core.bool hasDevice() => $_has(5); + @$pb.TagNumber(6) + void clearDevice() => clearField(6); + + /// 渠道 + @$pb.TagNumber(7) + $core.String get channel => $_getSZ(6); + @$pb.TagNumber(7) + set channel($core.String v) { $_setString(6, v); } + @$pb.TagNumber(7) + $core.bool hasChannel() => $_has(6); + @$pb.TagNumber(7) + void clearChannel() => clearField(7); + + /// 手机品牌 + @$pb.TagNumber(8) + $core.String get brand => $_getSZ(7); + @$pb.TagNumber(8) + set brand($core.String v) { $_setString(7, v); } + @$pb.TagNumber(8) + $core.bool hasBrand() => $_has(7); + @$pb.TagNumber(8) + void clearBrand() => clearField(8); + + /// 手机型号 + @$pb.TagNumber(9) + $core.String get model => $_getSZ(8); + @$pb.TagNumber(9) + set model($core.String v) { $_setString(8, v); } + @$pb.TagNumber(9) + $core.bool hasModel() => $_has(8); + @$pb.TagNumber(9) + void clearModel() => clearField(9); + + /// 系统版本 + @$pb.TagNumber(10) + $core.String get osver => $_getSZ(9); + @$pb.TagNumber(10) + set osver($core.String v) { $_setString(9, v); } + @$pb.TagNumber(10) + $core.bool hasOsver() => $_has(9); + @$pb.TagNumber(10) + void clearOsver() => clearField(10); + + /// 本地设备指纹 + @$pb.TagNumber(11) + $core.String get fpLocal => $_getSZ(10); + @$pb.TagNumber(11) + set fpLocal($core.String v) { $_setString(10, v); } + @$pb.TagNumber(11) + $core.bool hasFpLocal() => $_has(10); + @$pb.TagNumber(11) + void clearFpLocal() => clearField(11); + + /// 远程设备指纹 + @$pb.TagNumber(12) + $core.String get fpRemote => $_getSZ(11); + @$pb.TagNumber(12) + set fpRemote($core.String v) { $_setString(11, v); } + @$pb.TagNumber(12) + $core.bool hasFpRemote() => $_has(11); + @$pb.TagNumber(12) + void clearFpRemote() => clearField(12); + + /// APP版本号 + @$pb.TagNumber(13) + $core.String get versionName => $_getSZ(12); + @$pb.TagNumber(13) + set versionName($core.String v) { $_setString(12, v); } + @$pb.TagNumber(13) + $core.bool hasVersionName() => $_has(12); + @$pb.TagNumber(13) + void clearVersionName() => clearField(13); + + /// 设备指纹, 不区分本地或远程设备指纹,作为推送目标的索引 + @$pb.TagNumber(14) + $core.String get fp => $_getSZ(13); + @$pb.TagNumber(14) + set fp($core.String v) { $_setString(13, v); } + @$pb.TagNumber(14) + $core.bool hasFp() => $_has(13); + @$pb.TagNumber(14) + void clearFp() => clearField(14); + + /// 首次启动时的毫秒时间戳 + @$pb.TagNumber(15) + $fixnum.Int64 get fts => $_getI64(14); + @$pb.TagNumber(15) + set fts($fixnum.Int64 v) { $_setInt64(14, v); } + @$pb.TagNumber(15) + $core.bool hasFts() => $_has(14); + @$pb.TagNumber(15) + void clearFts() => clearField(15); +} + + +const _omitFieldNames = $core.bool.fromEnvironment('protobuf.omit_field_names'); +const _omitMessageNames = $core.bool.fromEnvironment('protobuf.omit_message_names'); diff --git a/lib/grpc/device/device.pbenum.dart b/lib/grpc/device/device.pbenum.dart new file mode 100644 index 000000000..b225bf1e7 --- /dev/null +++ b/lib/grpc/device/device.pbenum.dart @@ -0,0 +1,11 @@ +// +// Generated code. Do not modify. +// source: device.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + diff --git a/lib/grpc/device/device.pbjson.dart b/lib/grpc/device/device.pbjson.dart new file mode 100644 index 000000000..7b15e27ec --- /dev/null +++ b/lib/grpc/device/device.pbjson.dart @@ -0,0 +1,47 @@ +// +// Generated code. Do not modify. +// source: device.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:convert' as $convert; +import 'dart:core' as $core; +import 'dart:typed_data' as $typed_data; + +@$core.Deprecated('Use deviceDescriptor instead') +const Device$json = { + '1': 'Device', + '2': [ + {'1': 'app_id', '3': 1, '4': 1, '5': 5, '10': 'appId'}, + {'1': 'build', '3': 2, '4': 1, '5': 5, '10': 'build'}, + {'1': 'buvid', '3': 3, '4': 1, '5': 9, '10': 'buvid'}, + {'1': 'mobi_app', '3': 4, '4': 1, '5': 9, '10': 'mobiApp'}, + {'1': 'platform', '3': 5, '4': 1, '5': 9, '10': 'platform'}, + {'1': 'device', '3': 6, '4': 1, '5': 9, '10': 'device'}, + {'1': 'channel', '3': 7, '4': 1, '5': 9, '10': 'channel'}, + {'1': 'brand', '3': 8, '4': 1, '5': 9, '10': 'brand'}, + {'1': 'model', '3': 9, '4': 1, '5': 9, '10': 'model'}, + {'1': 'osver', '3': 10, '4': 1, '5': 9, '10': 'osver'}, + {'1': 'fp_local', '3': 11, '4': 1, '5': 9, '10': 'fpLocal'}, + {'1': 'fp_remote', '3': 12, '4': 1, '5': 9, '10': 'fpRemote'}, + {'1': 'version_name', '3': 13, '4': 1, '5': 9, '10': 'versionName'}, + {'1': 'fp', '3': 14, '4': 1, '5': 9, '10': 'fp'}, + {'1': 'fts', '3': 15, '4': 1, '5': 3, '10': 'fts'}, + ], +}; + +/// Descriptor for `Device`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List deviceDescriptor = $convert.base64Decode( + 'CgZEZXZpY2USFQoGYXBwX2lkGAEgASgFUgVhcHBJZBIUCgVidWlsZBgCIAEoBVIFYnVpbGQSFA' + 'oFYnV2aWQYAyABKAlSBWJ1dmlkEhkKCG1vYmlfYXBwGAQgASgJUgdtb2JpQXBwEhoKCHBsYXRm' + 'b3JtGAUgASgJUghwbGF0Zm9ybRIWCgZkZXZpY2UYBiABKAlSBmRldmljZRIYCgdjaGFubmVsGA' + 'cgASgJUgdjaGFubmVsEhQKBWJyYW5kGAggASgJUgVicmFuZBIUCgVtb2RlbBgJIAEoCVIFbW9k' + 'ZWwSFAoFb3N2ZXIYCiABKAlSBW9zdmVyEhkKCGZwX2xvY2FsGAsgASgJUgdmcExvY2FsEhsKCW' + 'ZwX3JlbW90ZRgMIAEoCVIIZnBSZW1vdGUSIQoMdmVyc2lvbl9uYW1lGA0gASgJUgt2ZXJzaW9u' + 'TmFtZRIOCgJmcBgOIAEoCVICZnASEAoDZnRzGA8gASgDUgNmdHM='); + diff --git a/lib/grpc/fawkes/fawkes.pb.dart b/lib/grpc/fawkes/fawkes.pb.dart new file mode 100644 index 000000000..eb08648a0 --- /dev/null +++ b/lib/grpc/fawkes/fawkes.pb.dart @@ -0,0 +1,179 @@ +// +// Generated code. Do not modify. +// source: fawkes.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:core' as $core; + +import 'package:protobuf/protobuf.dart' as $pb; + +class FawkesReply extends $pb.GeneratedMessage { + factory FawkesReply({ + $core.String? config, + $core.String? ff, + $core.String? dd, + }) { + final $result = create(); + if (config != null) { + $result.config = config; + } + if (ff != null) { + $result.ff = ff; + } + if (dd != null) { + $result.dd = dd; + } + return $result; + } + FawkesReply._() : super(); + factory FawkesReply.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory FawkesReply.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'FawkesReply', package: const $pb.PackageName(_omitMessageNames ? '' : 'bilibili.metadata.fawkes'), createEmptyInstance: create) + ..aOS(1, _omitFieldNames ? '' : 'config') + ..aOS(2, _omitFieldNames ? '' : 'ff') + ..aOS(3, _omitFieldNames ? '' : 'dd') + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + FawkesReply clone() => FawkesReply()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + FawkesReply copyWith(void Function(FawkesReply) updates) => super.copyWith((message) => updates(message as FawkesReply)) as FawkesReply; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static FawkesReply create() => FawkesReply._(); + FawkesReply createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static FawkesReply getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static FawkesReply? _defaultInstance; + + /// 客户端在fawkes系统中对应的已发布最新的config版本号 + @$pb.TagNumber(1) + $core.String get config => $_getSZ(0); + @$pb.TagNumber(1) + set config($core.String v) { $_setString(0, v); } + @$pb.TagNumber(1) + $core.bool hasConfig() => $_has(0); + @$pb.TagNumber(1) + void clearConfig() => clearField(1); + + /// 客户端在fawkes系统中对应的已发布最新的ff版本号 + @$pb.TagNumber(2) + $core.String get ff => $_getSZ(1); + @$pb.TagNumber(2) + set ff($core.String v) { $_setString(1, v); } + @$pb.TagNumber(2) + $core.bool hasFf() => $_has(1); + @$pb.TagNumber(2) + void clearFf() => clearField(2); + + @$pb.TagNumber(3) + $core.String get dd => $_getSZ(2); + @$pb.TagNumber(3) + set dd($core.String v) { $_setString(2, v); } + @$pb.TagNumber(3) + $core.bool hasDd() => $_has(2); + @$pb.TagNumber(3) + void clearDd() => clearField(3); +} + +class FawkesReq extends $pb.GeneratedMessage { + factory FawkesReq({ + $core.String? appkey, + $core.String? env, + $core.String? sessionId, + }) { + final $result = create(); + if (appkey != null) { + $result.appkey = appkey; + } + if (env != null) { + $result.env = env; + } + if (sessionId != null) { + $result.sessionId = sessionId; + } + return $result; + } + FawkesReq._() : super(); + factory FawkesReq.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory FawkesReq.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'FawkesReq', package: const $pb.PackageName(_omitMessageNames ? '' : 'bilibili.metadata.fawkes'), createEmptyInstance: create) + ..aOS(1, _omitFieldNames ? '' : 'appkey') + ..aOS(2, _omitFieldNames ? '' : 'env') + ..aOS(3, _omitFieldNames ? '' : 'sessionId') + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + FawkesReq clone() => FawkesReq()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + FawkesReq copyWith(void Function(FawkesReq) updates) => super.copyWith((message) => updates(message as FawkesReq)) as FawkesReq; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static FawkesReq create() => FawkesReq._(); + FawkesReq createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static FawkesReq getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static FawkesReq? _defaultInstance; + + /// 客户端在fawkes系统的唯一名, 如 `android64` + @$pb.TagNumber(1) + $core.String get appkey => $_getSZ(0); + @$pb.TagNumber(1) + set appkey($core.String v) { $_setString(0, v); } + @$pb.TagNumber(1) + $core.bool hasAppkey() => $_has(0); + @$pb.TagNumber(1) + void clearAppkey() => clearField(1); + + /// 客户端在fawkes系统中的环境参数, 如 `prod` + @$pb.TagNumber(2) + $core.String get env => $_getSZ(1); + @$pb.TagNumber(2) + set env($core.String v) { $_setString(1, v); } + @$pb.TagNumber(2) + $core.bool hasEnv() => $_has(1); + @$pb.TagNumber(2) + void clearEnv() => clearField(2); + + /// 启动id, 8 位 0~9, a~z 组成的字符串 + @$pb.TagNumber(3) + $core.String get sessionId => $_getSZ(2); + @$pb.TagNumber(3) + set sessionId($core.String v) { $_setString(2, v); } + @$pb.TagNumber(3) + $core.bool hasSessionId() => $_has(2); + @$pb.TagNumber(3) + void clearSessionId() => clearField(3); +} + + +const _omitFieldNames = $core.bool.fromEnvironment('protobuf.omit_field_names'); +const _omitMessageNames = $core.bool.fromEnvironment('protobuf.omit_message_names'); diff --git a/lib/grpc/fawkes/fawkes.pbenum.dart b/lib/grpc/fawkes/fawkes.pbenum.dart new file mode 100644 index 000000000..326551903 --- /dev/null +++ b/lib/grpc/fawkes/fawkes.pbenum.dart @@ -0,0 +1,11 @@ +// +// Generated code. Do not modify. +// source: fawkes.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + diff --git a/lib/grpc/fawkes/fawkes.pbjson.dart b/lib/grpc/fawkes/fawkes.pbjson.dart new file mode 100644 index 000000000..8f7ef937b --- /dev/null +++ b/lib/grpc/fawkes/fawkes.pbjson.dart @@ -0,0 +1,45 @@ +// +// Generated code. Do not modify. +// source: fawkes.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:convert' as $convert; +import 'dart:core' as $core; +import 'dart:typed_data' as $typed_data; + +@$core.Deprecated('Use fawkesReplyDescriptor instead') +const FawkesReply$json = { + '1': 'FawkesReply', + '2': [ + {'1': 'config', '3': 1, '4': 1, '5': 9, '10': 'config'}, + {'1': 'ff', '3': 2, '4': 1, '5': 9, '10': 'ff'}, + {'1': 'dd', '3': 3, '4': 1, '5': 9, '10': 'dd'}, + ], +}; + +/// Descriptor for `FawkesReply`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List fawkesReplyDescriptor = $convert.base64Decode( + 'CgtGYXdrZXNSZXBseRIWCgZjb25maWcYASABKAlSBmNvbmZpZxIOCgJmZhgCIAEoCVICZmYSDg' + 'oCZGQYAyABKAlSAmRk'); + +@$core.Deprecated('Use fawkesReqDescriptor instead') +const FawkesReq$json = { + '1': 'FawkesReq', + '2': [ + {'1': 'appkey', '3': 1, '4': 1, '5': 9, '10': 'appkey'}, + {'1': 'env', '3': 2, '4': 1, '5': 9, '10': 'env'}, + {'1': 'session_id', '3': 3, '4': 1, '5': 9, '10': 'sessionId'}, + ], +}; + +/// Descriptor for `FawkesReq`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List fawkesReqDescriptor = $convert.base64Decode( + 'CglGYXdrZXNSZXESFgoGYXBwa2V5GAEgASgJUgZhcHBrZXkSEAoDZW52GAIgASgJUgNlbnYSHQ' + 'oKc2Vzc2lvbl9pZBgDIAEoCVIJc2Vzc2lvbklk'); + diff --git a/lib/grpc/locale/locale.pb.dart b/lib/grpc/locale/locale.pb.dart new file mode 100644 index 000000000..50ca24065 --- /dev/null +++ b/lib/grpc/locale/locale.pb.dart @@ -0,0 +1,202 @@ +// +// Generated code. Do not modify. +// source: locale.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:core' as $core; + +import 'package:protobuf/protobuf.dart' as $pb; + +/// 区域标识 +/// gRPC头部:x-bili-locale-bin +class Locale extends $pb.GeneratedMessage { + factory Locale({ + LocaleIds? cLocale, + LocaleIds? sLocale, + $core.String? simCode, + $core.String? timezone, + }) { + final $result = create(); + if (cLocale != null) { + $result.cLocale = cLocale; + } + if (sLocale != null) { + $result.sLocale = sLocale; + } + if (simCode != null) { + $result.simCode = simCode; + } + if (timezone != null) { + $result.timezone = timezone; + } + return $result; + } + Locale._() : super(); + factory Locale.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory Locale.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'Locale', package: const $pb.PackageName(_omitMessageNames ? '' : 'bilibili.metadata.locale'), createEmptyInstance: create) + ..aOM(1, _omitFieldNames ? '' : 'cLocale', subBuilder: LocaleIds.create) + ..aOM(2, _omitFieldNames ? '' : 'sLocale', subBuilder: LocaleIds.create) + ..aOS(3, _omitFieldNames ? '' : 'simCode') + ..aOS(4, _omitFieldNames ? '' : 'timezone') + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + Locale clone() => Locale()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + Locale copyWith(void Function(Locale) updates) => super.copyWith((message) => updates(message as Locale)) as Locale; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static Locale create() => Locale._(); + Locale createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static Locale getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static Locale? _defaultInstance; + + /// App设置的locale + @$pb.TagNumber(1) + LocaleIds get cLocale => $_getN(0); + @$pb.TagNumber(1) + set cLocale(LocaleIds v) { setField(1, v); } + @$pb.TagNumber(1) + $core.bool hasCLocale() => $_has(0); + @$pb.TagNumber(1) + void clearCLocale() => clearField(1); + @$pb.TagNumber(1) + LocaleIds ensureCLocale() => $_ensure(0); + + /// 系统默认的locale + @$pb.TagNumber(2) + LocaleIds get sLocale => $_getN(1); + @$pb.TagNumber(2) + set sLocale(LocaleIds v) { setField(2, v); } + @$pb.TagNumber(2) + $core.bool hasSLocale() => $_has(1); + @$pb.TagNumber(2) + void clearSLocale() => clearField(2); + @$pb.TagNumber(2) + LocaleIds ensureSLocale() => $_ensure(1); + + /// sim卡的国家码+运营商码 + @$pb.TagNumber(3) + $core.String get simCode => $_getSZ(2); + @$pb.TagNumber(3) + set simCode($core.String v) { $_setString(2, v); } + @$pb.TagNumber(3) + $core.bool hasSimCode() => $_has(2); + @$pb.TagNumber(3) + void clearSimCode() => clearField(3); + + /// 时区 + @$pb.TagNumber(4) + $core.String get timezone => $_getSZ(3); + @$pb.TagNumber(4) + set timezone($core.String v) { $_setString(3, v); } + @$pb.TagNumber(4) + $core.bool hasTimezone() => $_has(3); + @$pb.TagNumber(4) + void clearTimezone() => clearField(4); +} + +/// Defined by https://developer.apple.com/library/archive/documentation/MacOSX/Conceptual/BPInternational/LanguageandLocaleIDs/LanguageandLocaleIDs.html +class LocaleIds extends $pb.GeneratedMessage { + factory LocaleIds({ + $core.String? language, + $core.String? script, + $core.String? region, + }) { + final $result = create(); + if (language != null) { + $result.language = language; + } + if (script != null) { + $result.script = script; + } + if (region != null) { + $result.region = region; + } + return $result; + } + LocaleIds._() : super(); + factory LocaleIds.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory LocaleIds.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'LocaleIds', package: const $pb.PackageName(_omitMessageNames ? '' : 'bilibili.metadata.locale'), createEmptyInstance: create) + ..aOS(1, _omitFieldNames ? '' : 'language') + ..aOS(2, _omitFieldNames ? '' : 'script') + ..aOS(3, _omitFieldNames ? '' : 'region') + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + LocaleIds clone() => LocaleIds()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + LocaleIds copyWith(void Function(LocaleIds) updates) => super.copyWith((message) => updates(message as LocaleIds)) as LocaleIds; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static LocaleIds create() => LocaleIds._(); + LocaleIds createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static LocaleIds getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static LocaleIds? _defaultInstance; + + /// A language designator is a code that represents a language. + @$pb.TagNumber(1) + $core.String get language => $_getSZ(0); + @$pb.TagNumber(1) + set language($core.String v) { $_setString(0, v); } + @$pb.TagNumber(1) + $core.bool hasLanguage() => $_has(0); + @$pb.TagNumber(1) + void clearLanguage() => clearField(1); + + /// Writing systems. + @$pb.TagNumber(2) + $core.String get script => $_getSZ(1); + @$pb.TagNumber(2) + set script($core.String v) { $_setString(1, v); } + @$pb.TagNumber(2) + $core.bool hasScript() => $_has(1); + @$pb.TagNumber(2) + void clearScript() => clearField(2); + + /// A region designator is a code that represents a country or an area. + @$pb.TagNumber(3) + $core.String get region => $_getSZ(2); + @$pb.TagNumber(3) + set region($core.String v) { $_setString(2, v); } + @$pb.TagNumber(3) + $core.bool hasRegion() => $_has(2); + @$pb.TagNumber(3) + void clearRegion() => clearField(3); +} + + +const _omitFieldNames = $core.bool.fromEnvironment('protobuf.omit_field_names'); +const _omitMessageNames = $core.bool.fromEnvironment('protobuf.omit_message_names'); diff --git a/lib/grpc/locale/locale.pbenum.dart b/lib/grpc/locale/locale.pbenum.dart new file mode 100644 index 000000000..c9e8d6cd7 --- /dev/null +++ b/lib/grpc/locale/locale.pbenum.dart @@ -0,0 +1,11 @@ +// +// Generated code. Do not modify. +// source: locale.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + diff --git a/lib/grpc/locale/locale.pbjson.dart b/lib/grpc/locale/locale.pbjson.dart new file mode 100644 index 000000000..b5ebe2930 --- /dev/null +++ b/lib/grpc/locale/locale.pbjson.dart @@ -0,0 +1,48 @@ +// +// Generated code. Do not modify. +// source: locale.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:convert' as $convert; +import 'dart:core' as $core; +import 'dart:typed_data' as $typed_data; + +@$core.Deprecated('Use localeDescriptor instead') +const Locale$json = { + '1': 'Locale', + '2': [ + {'1': 'c_locale', '3': 1, '4': 1, '5': 11, '6': '.bilibili.metadata.locale.LocaleIds', '10': 'cLocale'}, + {'1': 's_locale', '3': 2, '4': 1, '5': 11, '6': '.bilibili.metadata.locale.LocaleIds', '10': 'sLocale'}, + {'1': 'sim_code', '3': 3, '4': 1, '5': 9, '10': 'simCode'}, + {'1': 'timezone', '3': 4, '4': 1, '5': 9, '10': 'timezone'}, + ], +}; + +/// Descriptor for `Locale`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List localeDescriptor = $convert.base64Decode( + 'CgZMb2NhbGUSPgoIY19sb2NhbGUYASABKAsyIy5iaWxpYmlsaS5tZXRhZGF0YS5sb2NhbGUuTG' + '9jYWxlSWRzUgdjTG9jYWxlEj4KCHNfbG9jYWxlGAIgASgLMiMuYmlsaWJpbGkubWV0YWRhdGEu' + 'bG9jYWxlLkxvY2FsZUlkc1IHc0xvY2FsZRIZCghzaW1fY29kZRgDIAEoCVIHc2ltQ29kZRIaCg' + 'h0aW1lem9uZRgEIAEoCVIIdGltZXpvbmU='); + +@$core.Deprecated('Use localeIdsDescriptor instead') +const LocaleIds$json = { + '1': 'LocaleIds', + '2': [ + {'1': 'language', '3': 1, '4': 1, '5': 9, '10': 'language'}, + {'1': 'script', '3': 2, '4': 1, '5': 9, '10': 'script'}, + {'1': 'region', '3': 3, '4': 1, '5': 9, '10': 'region'}, + ], +}; + +/// Descriptor for `LocaleIds`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List localeIdsDescriptor = $convert.base64Decode( + 'CglMb2NhbGVJZHMSGgoIbGFuZ3VhZ2UYASABKAlSCGxhbmd1YWdlEhYKBnNjcmlwdBgCIAEoCV' + 'IGc2NyaXB0EhYKBnJlZ2lvbhgDIAEoCVIGcmVnaW9u'); + diff --git a/lib/grpc/metadata/metadata.pb.dart b/lib/grpc/metadata/metadata.pb.dart new file mode 100644 index 000000000..d9c4d65f5 --- /dev/null +++ b/lib/grpc/metadata/metadata.pb.dart @@ -0,0 +1,161 @@ +// +// Generated code. Do not modify. +// source: metadata.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:core' as $core; + +import 'package:protobuf/protobuf.dart' as $pb; + +/// 请求元数据 +/// gRPC头部:x-bili-metadata-bin +class Metadata extends $pb.GeneratedMessage { + factory Metadata({ + $core.String? accessKey, + $core.String? mobiApp, + $core.String? device, + $core.int? build, + $core.String? channel, + $core.String? buvid, + $core.String? platform, + }) { + final $result = create(); + if (accessKey != null) { + $result.accessKey = accessKey; + } + if (mobiApp != null) { + $result.mobiApp = mobiApp; + } + if (device != null) { + $result.device = device; + } + if (build != null) { + $result.build = build; + } + if (channel != null) { + $result.channel = channel; + } + if (buvid != null) { + $result.buvid = buvid; + } + if (platform != null) { + $result.platform = platform; + } + return $result; + } + Metadata._() : super(); + factory Metadata.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory Metadata.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'Metadata', package: const $pb.PackageName(_omitMessageNames ? '' : 'bilibili.metadata'), createEmptyInstance: create) + ..aOS(1, _omitFieldNames ? '' : 'accessKey') + ..aOS(2, _omitFieldNames ? '' : 'mobiApp') + ..aOS(3, _omitFieldNames ? '' : 'device') + ..a<$core.int>(4, _omitFieldNames ? '' : 'build', $pb.PbFieldType.O3) + ..aOS(5, _omitFieldNames ? '' : 'channel') + ..aOS(6, _omitFieldNames ? '' : 'buvid') + ..aOS(7, _omitFieldNames ? '' : 'platform') + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + Metadata clone() => Metadata()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + Metadata copyWith(void Function(Metadata) updates) => super.copyWith((message) => updates(message as Metadata)) as Metadata; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static Metadata create() => Metadata._(); + Metadata createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static Metadata getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static Metadata? _defaultInstance; + + /// 登录 access_key + @$pb.TagNumber(1) + $core.String get accessKey => $_getSZ(0); + @$pb.TagNumber(1) + set accessKey($core.String v) { $_setString(0, v); } + @$pb.TagNumber(1) + $core.bool hasAccessKey() => $_has(0); + @$pb.TagNumber(1) + void clearAccessKey() => clearField(1); + + /// 包类型, 如 `android` + @$pb.TagNumber(2) + $core.String get mobiApp => $_getSZ(1); + @$pb.TagNumber(2) + set mobiApp($core.String v) { $_setString(1, v); } + @$pb.TagNumber(2) + $core.bool hasMobiApp() => $_has(1); + @$pb.TagNumber(2) + void clearMobiApp() => clearField(2); + + /// 运行设备, 留空即可 + @$pb.TagNumber(3) + $core.String get device => $_getSZ(2); + @$pb.TagNumber(3) + set device($core.String v) { $_setString(2, v); } + @$pb.TagNumber(3) + $core.bool hasDevice() => $_has(2); + @$pb.TagNumber(3) + void clearDevice() => clearField(3); + + /// 构建id, 如 `7380300` + @$pb.TagNumber(4) + $core.int get build => $_getIZ(3); + @$pb.TagNumber(4) + set build($core.int v) { $_setSignedInt32(3, v); } + @$pb.TagNumber(4) + $core.bool hasBuild() => $_has(3); + @$pb.TagNumber(4) + void clearBuild() => clearField(4); + + /// APP分发渠道, 如 `master` + @$pb.TagNumber(5) + $core.String get channel => $_getSZ(4); + @$pb.TagNumber(5) + set channel($core.String v) { $_setString(4, v); } + @$pb.TagNumber(5) + $core.bool hasChannel() => $_has(4); + @$pb.TagNumber(5) + void clearChannel() => clearField(5); + + /// 设备唯一标识 + @$pb.TagNumber(6) + $core.String get buvid => $_getSZ(5); + @$pb.TagNumber(6) + set buvid($core.String v) { $_setString(5, v); } + @$pb.TagNumber(6) + $core.bool hasBuvid() => $_has(5); + @$pb.TagNumber(6) + void clearBuvid() => clearField(6); + + /// 平台类型, 如 `android` + @$pb.TagNumber(7) + $core.String get platform => $_getSZ(6); + @$pb.TagNumber(7) + set platform($core.String v) { $_setString(6, v); } + @$pb.TagNumber(7) + $core.bool hasPlatform() => $_has(6); + @$pb.TagNumber(7) + void clearPlatform() => clearField(7); +} + + +const _omitFieldNames = $core.bool.fromEnvironment('protobuf.omit_field_names'); +const _omitMessageNames = $core.bool.fromEnvironment('protobuf.omit_message_names'); diff --git a/lib/grpc/metadata/metadata.pbenum.dart b/lib/grpc/metadata/metadata.pbenum.dart new file mode 100644 index 000000000..d291f3ba5 --- /dev/null +++ b/lib/grpc/metadata/metadata.pbenum.dart @@ -0,0 +1,11 @@ +// +// Generated code. Do not modify. +// source: metadata.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + diff --git a/lib/grpc/metadata/metadata.pbjson.dart b/lib/grpc/metadata/metadata.pbjson.dart new file mode 100644 index 000000000..a47b44ccc --- /dev/null +++ b/lib/grpc/metadata/metadata.pbjson.dart @@ -0,0 +1,36 @@ +// +// Generated code. Do not modify. +// source: metadata.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:convert' as $convert; +import 'dart:core' as $core; +import 'dart:typed_data' as $typed_data; + +@$core.Deprecated('Use metadataDescriptor instead') +const Metadata$json = { + '1': 'Metadata', + '2': [ + {'1': 'access_key', '3': 1, '4': 1, '5': 9, '10': 'accessKey'}, + {'1': 'mobi_app', '3': 2, '4': 1, '5': 9, '10': 'mobiApp'}, + {'1': 'device', '3': 3, '4': 1, '5': 9, '10': 'device'}, + {'1': 'build', '3': 4, '4': 1, '5': 5, '10': 'build'}, + {'1': 'channel', '3': 5, '4': 1, '5': 9, '10': 'channel'}, + {'1': 'buvid', '3': 6, '4': 1, '5': 9, '10': 'buvid'}, + {'1': 'platform', '3': 7, '4': 1, '5': 9, '10': 'platform'}, + ], +}; + +/// Descriptor for `Metadata`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List metadataDescriptor = $convert.base64Decode( + 'CghNZXRhZGF0YRIdCgphY2Nlc3Nfa2V5GAEgASgJUglhY2Nlc3NLZXkSGQoIbW9iaV9hcHAYAi' + 'ABKAlSB21vYmlBcHASFgoGZGV2aWNlGAMgASgJUgZkZXZpY2USFAoFYnVpbGQYBCABKAVSBWJ1' + 'aWxkEhgKB2NoYW5uZWwYBSABKAlSB2NoYW5uZWwSFAoFYnV2aWQYBiABKAlSBWJ1dmlkEhoKCH' + 'BsYXRmb3JtGAcgASgJUghwbGF0Zm9ybQ=='); + diff --git a/lib/grpc/network/network.pb.dart b/lib/grpc/network/network.pb.dart new file mode 100644 index 000000000..a1f486187 --- /dev/null +++ b/lib/grpc/network/network.pb.dart @@ -0,0 +1,105 @@ +// +// Generated code. Do not modify. +// source: network.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:core' as $core; + +import 'package:protobuf/protobuf.dart' as $pb; + +import 'network.pbenum.dart'; + +export 'network.pbenum.dart'; + +/// 网络类型标识 +/// gRPC头部:x-bili-network-bin +class Network extends $pb.GeneratedMessage { + factory Network({ + NetworkType? type, + TFType? tf, + $core.String? oid, + }) { + final $result = create(); + if (type != null) { + $result.type = type; + } + if (tf != null) { + $result.tf = tf; + } + if (oid != null) { + $result.oid = oid; + } + return $result; + } + Network._() : super(); + factory Network.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory Network.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'Network', package: const $pb.PackageName(_omitMessageNames ? '' : 'bilibili.metadata.network'), createEmptyInstance: create) + ..e(1, _omitFieldNames ? '' : 'type', $pb.PbFieldType.OE, defaultOrMaker: NetworkType.NT_UNKNOWN, valueOf: NetworkType.valueOf, enumValues: NetworkType.values) + ..e(2, _omitFieldNames ? '' : 'tf', $pb.PbFieldType.OE, defaultOrMaker: TFType.TF_UNKNOWN, valueOf: TFType.valueOf, enumValues: TFType.values) + ..aOS(3, _omitFieldNames ? '' : 'oid') + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + Network clone() => Network()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + Network copyWith(void Function(Network) updates) => super.copyWith((message) => updates(message as Network)) as Network; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static Network create() => Network._(); + Network createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static Network getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static Network? _defaultInstance; + + /// 网络类型 + @$pb.TagNumber(1) + NetworkType get type => $_getN(0); + @$pb.TagNumber(1) + set type(NetworkType v) { setField(1, v); } + @$pb.TagNumber(1) + $core.bool hasType() => $_has(0); + @$pb.TagNumber(1) + void clearType() => clearField(1); + + /// 免流类型 + @$pb.TagNumber(2) + TFType get tf => $_getN(1); + @$pb.TagNumber(2) + set tf(TFType v) { setField(2, v); } + @$pb.TagNumber(2) + $core.bool hasTf() => $_has(1); + @$pb.TagNumber(2) + void clearTf() => clearField(2); + + /// 运营商 + @$pb.TagNumber(3) + $core.String get oid => $_getSZ(2); + @$pb.TagNumber(3) + set oid($core.String v) { $_setString(2, v); } + @$pb.TagNumber(3) + $core.bool hasOid() => $_has(2); + @$pb.TagNumber(3) + void clearOid() => clearField(3); +} + + +const _omitFieldNames = $core.bool.fromEnvironment('protobuf.omit_field_names'); +const _omitMessageNames = $core.bool.fromEnvironment('protobuf.omit_message_names'); diff --git a/lib/grpc/network/network.pbenum.dart b/lib/grpc/network/network.pbenum.dart new file mode 100644 index 000000000..07df64b97 --- /dev/null +++ b/lib/grpc/network/network.pbenum.dart @@ -0,0 +1,67 @@ +// +// Generated code. Do not modify. +// source: network.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:core' as $core; + +import 'package:protobuf/protobuf.dart' as $pb; + +/// 网络类型 +class NetworkType extends $pb.ProtobufEnum { + static const NetworkType NT_UNKNOWN = NetworkType._(0, _omitEnumNames ? '' : 'NT_UNKNOWN'); + static const NetworkType WIFI = NetworkType._(1, _omitEnumNames ? '' : 'WIFI'); + static const NetworkType CELLULAR = NetworkType._(2, _omitEnumNames ? '' : 'CELLULAR'); + static const NetworkType OFFLINE = NetworkType._(3, _omitEnumNames ? '' : 'OFFLINE'); + static const NetworkType OTHERNET = NetworkType._(4, _omitEnumNames ? '' : 'OTHERNET'); + static const NetworkType ETHERNET = NetworkType._(5, _omitEnumNames ? '' : 'ETHERNET'); + + static const $core.List values = [ + NT_UNKNOWN, + WIFI, + CELLULAR, + OFFLINE, + OTHERNET, + ETHERNET, + ]; + + static final $core.Map<$core.int, NetworkType> _byValue = $pb.ProtobufEnum.initByValue(values); + static NetworkType? valueOf($core.int value) => _byValue[value]; + + const NetworkType._($core.int v, $core.String n) : super(v, n); +} + +/// 免流类型 +class TFType extends $pb.ProtobufEnum { + static const TFType TF_UNKNOWN = TFType._(0, _omitEnumNames ? '' : 'TF_UNKNOWN'); + static const TFType U_CARD = TFType._(1, _omitEnumNames ? '' : 'U_CARD'); + static const TFType U_PKG = TFType._(2, _omitEnumNames ? '' : 'U_PKG'); + static const TFType C_CARD = TFType._(3, _omitEnumNames ? '' : 'C_CARD'); + static const TFType C_PKG = TFType._(4, _omitEnumNames ? '' : 'C_PKG'); + static const TFType T_CARD = TFType._(5, _omitEnumNames ? '' : 'T_CARD'); + static const TFType T_PKG = TFType._(6, _omitEnumNames ? '' : 'T_PKG'); + + static const $core.List values = [ + TF_UNKNOWN, + U_CARD, + U_PKG, + C_CARD, + C_PKG, + T_CARD, + T_PKG, + ]; + + static final $core.Map<$core.int, TFType> _byValue = $pb.ProtobufEnum.initByValue(values); + static TFType? valueOf($core.int value) => _byValue[value]; + + const TFType._($core.int v, $core.String n) : super(v, n); +} + + +const _omitEnumNames = $core.bool.fromEnvironment('protobuf.omit_enum_names'); diff --git a/lib/grpc/network/network.pbjson.dart b/lib/grpc/network/network.pbjson.dart new file mode 100644 index 000000000..6c0f3e20c --- /dev/null +++ b/lib/grpc/network/network.pbjson.dart @@ -0,0 +1,68 @@ +// +// Generated code. Do not modify. +// source: network.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:convert' as $convert; +import 'dart:core' as $core; +import 'dart:typed_data' as $typed_data; + +@$core.Deprecated('Use networkTypeDescriptor instead') +const NetworkType$json = { + '1': 'NetworkType', + '2': [ + {'1': 'NT_UNKNOWN', '2': 0}, + {'1': 'WIFI', '2': 1}, + {'1': 'CELLULAR', '2': 2}, + {'1': 'OFFLINE', '2': 3}, + {'1': 'OTHERNET', '2': 4}, + {'1': 'ETHERNET', '2': 5}, + ], +}; + +/// Descriptor for `NetworkType`. Decode as a `google.protobuf.EnumDescriptorProto`. +final $typed_data.Uint8List networkTypeDescriptor = $convert.base64Decode( + 'CgtOZXR3b3JrVHlwZRIOCgpOVF9VTktOT1dOEAASCAoEV0lGSRABEgwKCENFTExVTEFSEAISCw' + 'oHT0ZGTElORRADEgwKCE9USEVSTkVUEAQSDAoIRVRIRVJORVQQBQ=='); + +@$core.Deprecated('Use tFTypeDescriptor instead') +const TFType$json = { + '1': 'TFType', + '2': [ + {'1': 'TF_UNKNOWN', '2': 0}, + {'1': 'U_CARD', '2': 1}, + {'1': 'U_PKG', '2': 2}, + {'1': 'C_CARD', '2': 3}, + {'1': 'C_PKG', '2': 4}, + {'1': 'T_CARD', '2': 5}, + {'1': 'T_PKG', '2': 6}, + ], +}; + +/// Descriptor for `TFType`. Decode as a `google.protobuf.EnumDescriptorProto`. +final $typed_data.Uint8List tFTypeDescriptor = $convert.base64Decode( + 'CgZURlR5cGUSDgoKVEZfVU5LTk9XThAAEgoKBlVfQ0FSRBABEgkKBVVfUEtHEAISCgoGQ19DQV' + 'JEEAMSCQoFQ19QS0cQBBIKCgZUX0NBUkQQBRIJCgVUX1BLRxAG'); + +@$core.Deprecated('Use networkDescriptor instead') +const Network$json = { + '1': 'Network', + '2': [ + {'1': 'type', '3': 1, '4': 1, '5': 14, '6': '.bilibili.metadata.network.NetworkType', '10': 'type'}, + {'1': 'tf', '3': 2, '4': 1, '5': 14, '6': '.bilibili.metadata.network.TFType', '10': 'tf'}, + {'1': 'oid', '3': 3, '4': 1, '5': 9, '10': 'oid'}, + ], +}; + +/// Descriptor for `Network`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List networkDescriptor = $convert.base64Decode( + 'CgdOZXR3b3JrEjoKBHR5cGUYASABKA4yJi5iaWxpYmlsaS5tZXRhZGF0YS5uZXR3b3JrLk5ldH' + 'dvcmtUeXBlUgR0eXBlEjEKAnRmGAIgASgOMiEuYmlsaWJpbGkubWV0YWRhdGEubmV0d29yay5U' + 'RlR5cGVSAnRmEhAKA29pZBgDIAEoCVIDb2lk'); + diff --git a/lib/grpc/restriction/restriction.pb.dart b/lib/grpc/restriction/restriction.pb.dart new file mode 100644 index 000000000..bf0c952b7 --- /dev/null +++ b/lib/grpc/restriction/restriction.pb.dart @@ -0,0 +1,148 @@ +// +// Generated code. Do not modify. +// source: restriction.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:core' as $core; + +import 'package:protobuf/protobuf.dart' as $pb; + +import 'restriction.pbenum.dart'; + +export 'restriction.pbenum.dart'; + +/// 限制条件 +class Restriction extends $pb.GeneratedMessage { + factory Restriction({ + $core.bool? teenagersMode, + $core.bool? lessonsMode, + ModeType? mode, + $core.bool? review, + $core.bool? disableRcmd, + $core.bool? basicMode, + }) { + final $result = create(); + if (teenagersMode != null) { + $result.teenagersMode = teenagersMode; + } + if (lessonsMode != null) { + $result.lessonsMode = lessonsMode; + } + if (mode != null) { + $result.mode = mode; + } + if (review != null) { + $result.review = review; + } + if (disableRcmd != null) { + $result.disableRcmd = disableRcmd; + } + if (basicMode != null) { + $result.basicMode = basicMode; + } + return $result; + } + Restriction._() : super(); + factory Restriction.fromBuffer($core.List<$core.int> i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromBuffer(i, r); + factory Restriction.fromJson($core.String i, [$pb.ExtensionRegistry r = $pb.ExtensionRegistry.EMPTY]) => create()..mergeFromJson(i, r); + + static final $pb.BuilderInfo _i = $pb.BuilderInfo(_omitMessageNames ? '' : 'Restriction', package: const $pb.PackageName(_omitMessageNames ? '' : 'bilibili.metadata.restriction'), createEmptyInstance: create) + ..aOB(1, _omitFieldNames ? '' : 'teenagersMode') + ..aOB(2, _omitFieldNames ? '' : 'lessonsMode') + ..e(3, _omitFieldNames ? '' : 'mode', $pb.PbFieldType.OE, defaultOrMaker: ModeType.NORMAL, valueOf: ModeType.valueOf, enumValues: ModeType.values) + ..aOB(4, _omitFieldNames ? '' : 'review') + ..aOB(5, _omitFieldNames ? '' : 'disableRcmd') + ..aOB(6, _omitFieldNames ? '' : 'basicMode') + ..hasRequiredFields = false + ; + + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.deepCopy] instead. ' + 'Will be removed in next major version') + Restriction clone() => Restriction()..mergeFromMessage(this); + @$core.Deprecated( + 'Using this can add significant overhead to your binary. ' + 'Use [GeneratedMessageGenericExtensions.rebuild] instead. ' + 'Will be removed in next major version') + Restriction copyWith(void Function(Restriction) updates) => super.copyWith((message) => updates(message as Restriction)) as Restriction; + + $pb.BuilderInfo get info_ => _i; + + @$core.pragma('dart2js:noInline') + static Restriction create() => Restriction._(); + Restriction createEmptyInstance() => create(); + static $pb.PbList createRepeated() => $pb.PbList(); + @$core.pragma('dart2js:noInline') + static Restriction getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor(create); + static Restriction? _defaultInstance; + + /// 青少年模式开关状态 + @$pb.TagNumber(1) + $core.bool get teenagersMode => $_getBF(0); + @$pb.TagNumber(1) + set teenagersMode($core.bool v) { $_setBool(0, v); } + @$pb.TagNumber(1) + $core.bool hasTeenagersMode() => $_has(0); + @$pb.TagNumber(1) + void clearTeenagersMode() => clearField(1); + + /// 课堂模式开关状态 + @$pb.TagNumber(2) + $core.bool get lessonsMode => $_getBF(1); + @$pb.TagNumber(2) + set lessonsMode($core.bool v) { $_setBool(1, v); } + @$pb.TagNumber(2) + $core.bool hasLessonsMode() => $_has(1); + @$pb.TagNumber(2) + void clearLessonsMode() => clearField(2); + + /// 模式类型(旧版) + @$pb.TagNumber(3) + ModeType get mode => $_getN(2); + @$pb.TagNumber(3) + set mode(ModeType v) { setField(3, v); } + @$pb.TagNumber(3) + $core.bool hasMode() => $_has(2); + @$pb.TagNumber(3) + void clearMode() => clearField(3); + + /// app 审核review状态 + @$pb.TagNumber(4) + $core.bool get review => $_getBF(3); + @$pb.TagNumber(4) + set review($core.bool v) { $_setBool(3, v); } + @$pb.TagNumber(4) + $core.bool hasReview() => $_has(3); + @$pb.TagNumber(4) + void clearReview() => clearField(4); + + /// 客户端是否选择关闭个性化推荐 + @$pb.TagNumber(5) + $core.bool get disableRcmd => $_getBF(4); + @$pb.TagNumber(5) + set disableRcmd($core.bool v) { $_setBool(4, v); } + @$pb.TagNumber(5) + $core.bool hasDisableRcmd() => $_has(4); + @$pb.TagNumber(5) + void clearDisableRcmd() => clearField(5); + + @$pb.TagNumber(6) + $core.bool get basicMode => $_getBF(5); + @$pb.TagNumber(6) + set basicMode($core.bool v) { $_setBool(5, v); } + @$pb.TagNumber(6) + $core.bool hasBasicMode() => $_has(5); + @$pb.TagNumber(6) + void clearBasicMode() => clearField(6); +} + + +const _omitFieldNames = $core.bool.fromEnvironment('protobuf.omit_field_names'); +const _omitMessageNames = $core.bool.fromEnvironment('protobuf.omit_message_names'); diff --git a/lib/grpc/restriction/restriction.pbenum.dart b/lib/grpc/restriction/restriction.pbenum.dart new file mode 100644 index 000000000..746080cdc --- /dev/null +++ b/lib/grpc/restriction/restriction.pbenum.dart @@ -0,0 +1,37 @@ +// +// Generated code. Do not modify. +// source: restriction.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:core' as $core; + +import 'package:protobuf/protobuf.dart' as $pb; + +/// 模式类型 +class ModeType extends $pb.ProtobufEnum { + static const ModeType NORMAL = ModeType._(0, _omitEnumNames ? '' : 'NORMAL'); + static const ModeType TEENAGERS = ModeType._(1, _omitEnumNames ? '' : 'TEENAGERS'); + static const ModeType LESSONS = ModeType._(2, _omitEnumNames ? '' : 'LESSONS'); + static const ModeType BASIC = ModeType._(3, _omitEnumNames ? '' : 'BASIC'); + + static const $core.List values = [ + NORMAL, + TEENAGERS, + LESSONS, + BASIC, + ]; + + static final $core.Map<$core.int, ModeType> _byValue = $pb.ProtobufEnum.initByValue(values); + static ModeType? valueOf($core.int value) => _byValue[value]; + + const ModeType._($core.int v, $core.String n) : super(v, n); +} + + +const _omitEnumNames = $core.bool.fromEnvironment('protobuf.omit_enum_names'); diff --git a/lib/grpc/restriction/restriction.pbjson.dart b/lib/grpc/restriction/restriction.pbjson.dart new file mode 100644 index 000000000..42b6da9bb --- /dev/null +++ b/lib/grpc/restriction/restriction.pbjson.dart @@ -0,0 +1,52 @@ +// +// Generated code. Do not modify. +// source: restriction.proto +// +// @dart = 2.12 + +// ignore_for_file: annotate_overrides, camel_case_types, comment_references +// ignore_for_file: constant_identifier_names, library_prefixes +// ignore_for_file: non_constant_identifier_names, prefer_final_fields +// ignore_for_file: unnecessary_import, unnecessary_this, unused_import + +import 'dart:convert' as $convert; +import 'dart:core' as $core; +import 'dart:typed_data' as $typed_data; + +@$core.Deprecated('Use modeTypeDescriptor instead') +const ModeType$json = { + '1': 'ModeType', + '2': [ + {'1': 'NORMAL', '2': 0}, + {'1': 'TEENAGERS', '2': 1}, + {'1': 'LESSONS', '2': 2}, + {'1': 'BASIC', '2': 3}, + ], +}; + +/// Descriptor for `ModeType`. Decode as a `google.protobuf.EnumDescriptorProto`. +final $typed_data.Uint8List modeTypeDescriptor = $convert.base64Decode( + 'CghNb2RlVHlwZRIKCgZOT1JNQUwQABINCglURUVOQUdFUlMQARILCgdMRVNTT05TEAISCQoFQk' + 'FTSUMQAw=='); + +@$core.Deprecated('Use restrictionDescriptor instead') +const Restriction$json = { + '1': 'Restriction', + '2': [ + {'1': 'teenagers_mode', '3': 1, '4': 1, '5': 8, '10': 'teenagersMode'}, + {'1': 'lessons_mode', '3': 2, '4': 1, '5': 8, '10': 'lessonsMode'}, + {'1': 'mode', '3': 3, '4': 1, '5': 14, '6': '.bilibili.metadata.restriction.ModeType', '10': 'mode'}, + {'1': 'review', '3': 4, '4': 1, '5': 8, '10': 'review'}, + {'1': 'disable_rcmd', '3': 5, '4': 1, '5': 8, '10': 'disableRcmd'}, + {'1': 'basic_mode', '3': 6, '4': 1, '5': 8, '10': 'basicMode'}, + ], +}; + +/// Descriptor for `Restriction`. Decode as a `google.protobuf.DescriptorProto`. +final $typed_data.Uint8List restrictionDescriptor = $convert.base64Decode( + 'CgtSZXN0cmljdGlvbhIlCg50ZWVuYWdlcnNfbW9kZRgBIAEoCFINdGVlbmFnZXJzTW9kZRIhCg' + 'xsZXNzb25zX21vZGUYAiABKAhSC2xlc3NvbnNNb2RlEjsKBG1vZGUYAyABKA4yJy5iaWxpYmls' + 'aS5tZXRhZGF0YS5yZXN0cmljdGlvbi5Nb2RlVHlwZVIEbW9kZRIWCgZyZXZpZXcYBCABKAhSBn' + 'JldmlldxIhCgxkaXNhYmxlX3JjbWQYBSABKAhSC2Rpc2FibGVSY21kEh0KCmJhc2ljX21vZGUY' + 'BiABKAhSCWJhc2ljTW9kZQ=='); + diff --git a/lib/pages/video/detail/view.dart b/lib/pages/video/detail/view.dart index cdb4c85cd..e40eec1b3 100644 --- a/lib/pages/video/detail/view.dart +++ b/lib/pages/video/detail/view.dart @@ -13,6 +13,7 @@ import 'package:PiliPalaX/pages/video/detail/introduction/widgets/intro_detail.d as video; import 'package:PiliPalaX/pages/video/detail/reply_reply/view.dart'; import 'package:PiliPalaX/pages/video/detail/widgets/ai_detail.dart'; +import 'package:PiliPalaX/grpc/app/playeronline/v1/playeronline.dart'; import 'package:PiliPalaX/utils/extension.dart'; import 'package:PiliPalaX/utils/id_utils.dart'; import 'package:auto_orientation/auto_orientation.dart'; @@ -87,14 +88,23 @@ class _VideoDetailPageState extends State final scaffoldKey = GlobalKey(); + final onlineClient = OnlineClient(); + @override void initState() { super.initState(); + PlPlayerController.setPlayCallBack(playCallBack); if (Get.arguments != null && Get.arguments['heroTag'] != null) { heroTag = Get.arguments['heroTag']; } videoDetailController = Get.put(VideoDetailController(), tag: heroTag); + + onlineClient.playerOnline( + aid: IdUtils.bv2av(videoDetailController.bvid), + cid: videoDetailController.cid.value, + ); + _videoReplyController = Get.put( VideoReplyController(videoDetailController.oid.value, '0', '1'), tag: heroTag); diff --git a/lib/utils/utils.dart b/lib/utils/utils.dart index ff86061ed..7b4cefe9f 100644 --- a/lib/utils/utils.dart +++ b/lib/utils/utils.dart @@ -25,6 +25,74 @@ import '../models/github/latest.dart'; class Utils { static final Random random = Random(); + static String genAuroraEid(int uid) { + if (uid == 0) { + return ''; // Return null for a UID of 0 + } + + // 1. Convert UID to a byte array. + List midByte = utf8.encode(uid.toString()); + List resultByte = List.filled(midByte.length, 0); + + // 2. XOR each byte with the corresponding byte from the key. + const key = 'ad1va46a7lza'; + for (int i = 0; i < midByte.length; i++) { + resultByte[i] = midByte[i] ^ key.codeUnitAt(i % key.length); + } + + // 3. Perform Base64 encoding without padding. + String base64Encoded = + base64.encode(resultByte).replaceAll('=', ''); // Remove padding + + // Return the resulting x-bili-aurora-eid. + return base64Encoded; + } + + static String genRandomString(int length) { + const characters = '0123456789abcdefghijklmnopqrstuvwxyz'; + Random random = Random(); + return List.generate( + length, (index) => characters[random.nextInt(characters.length)]) + .join(); + } + + static String genTraceId() { + // 1. Generate a 32-character random string (random_id). + String randomId = genRandomString(32); + + // 2. Take the first 24 characters of random_id as random_trace_id. + StringBuffer randomTraceId = StringBuffer(randomId.substring(0, 24)); + + // 3. Initialize an array b_arr with a length of 3, initial values are 0. + List bArr = List.filled(3, 0); + + // Get the current timestamp. + int ts = DateTime.now().millisecondsSinceEpoch ~/ 1000; + + // Using a loop to traverse b_arr from high to low. + for (int i = 2; i >= 0; i--) { + ts >>= 8; // Right shift ts by 8 bits. + bArr[i] = (ts ~/ 128) % 2 == 0 + ? (ts % 256) + : (ts % 256) - 256; // Assign value based on condition. + } + + // 4. Convert each element in b_arr to a two-digit hexadecimal string and append to random_trace_id. + for (int value in bArr) { + randomTraceId + .write(value.toRadixString(16).padLeft(2, '0')); // Convert to hex. + } + + // 5. Append the 31st and 32nd characters of random_id to random_trace_id. + randomTraceId.write(randomId.substring(30, 32)); + + // 6. Finally, concatenate as '{random_trace_id}:{random_trace_id[16..32]}:0:0'. + String randomTraceIdFinal = + '${randomTraceId.toString()}:${randomTraceId.toString().substring(16, 32)}:0:0'; + + return randomTraceIdFinal; + } + static void viewBangumi({ dynamic seasonId, dynamic epId, diff --git a/pubspec.lock b/pubspec.lock index 887e08fa9..4ff8ae499 100644 --- a/pubspec.lock +++ b/pubspec.lock @@ -821,6 +821,22 @@ packages: url: "https://pub.dev" source: hosted version: "2.1.2" + google_identity_services_web: + dependency: transitive + description: + name: google_identity_services_web + sha256: "5be191523702ba8d7a01ca97c17fca096822ccf246b0a9f11923a6ded06199b6" + url: "https://pub.dev" + source: hosted + version: "0.3.1+4" + googleapis_auth: + dependency: transitive + description: + name: googleapis_auth + sha256: befd71383a955535060acde8792e7efc11d2fccd03dd1d3ec434e85b68775938 + url: "https://pub.dev" + source: hosted + version: "1.6.0" graphs: dependency: transitive description: @@ -829,6 +845,14 @@ packages: url: "https://pub.dev" source: hosted version: "2.3.2" + grpc: + dependency: "direct main" + description: + name: grpc + sha256: "5b99b7a420937d4361ece68b798c9af8e04b5bc128a7859f2a4be87427694813" + url: "https://pub.dev" + source: hosted + version: "4.0.1" gt3_flutter_plugin: dependency: "direct main" description: diff --git a/pubspec.yaml b/pubspec.yaml index 713fe3624..4f9c526fd 100644 --- a/pubspec.yaml +++ b/pubspec.yaml @@ -112,7 +112,7 @@ dependencies: git: url: https://github.com/orz12/auto_orientation.git ref: master - protobuf: ^3.0.0 + protobuf: ^3.1.0 animations: ^2.0.8 # 获取appx信息 @@ -166,6 +166,7 @@ dependencies: path: packages/chat_bottom_container image_picker: ^1.1.2 intl: ^0.19.0 + grpc: ^4.0.1 dependency_overrides: # mime: