refactor: migrate to gRPC [wip]

This commit is contained in:
bggRGjQaUbCoE
2024-10-10 11:24:46 +08:00
parent 16bce5b7f7
commit 2ccfd788e6
27 changed files with 2443 additions and 1 deletions

View File

@@ -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<void> 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<void> shutdown() async {
await _channel?.shutdown();
}
}

View File

@@ -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<NoReply> createRepeated() => $pb.PbList<NoReply>();
@$core.pragma('dart2js:noInline')
static NoReply getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<NoReply>(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<PlayerOnlineReply> createRepeated() => $pb.PbList<PlayerOnlineReply>();
@$core.pragma('dart2js:noInline')
static PlayerOnlineReply getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<PlayerOnlineReply>(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<PlayerOnlineReq> createRepeated() => $pb.PbList<PlayerOnlineReq>();
@$core.pragma('dart2js:noInline')
static PlayerOnlineReq getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<PlayerOnlineReq>(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<PremiereInfoReply> createRepeated() => $pb.PbList<PremiereInfoReply>();
@$core.pragma('dart2js:noInline')
static PremiereInfoReply getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<PremiereInfoReply>(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<PremiereInfoReq> createRepeated() => $pb.PbList<PremiereInfoReq>();
@$core.pragma('dart2js:noInline')
static PremiereInfoReq getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<PremiereInfoReq>(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<ReportWatchReq> createRepeated() => $pb.PbList<ReportWatchReq>();
@$core.pragma('dart2js:noInline')
static ReportWatchReq getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<ReportWatchReq>(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');

View File

@@ -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

View File

@@ -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);
}

View File

@@ -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=');

View File

@@ -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<Device> createRepeated() => $pb.PbList<Device>();
@$core.pragma('dart2js:noInline')
static Device getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<Device>(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');

View File

@@ -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

View File

@@ -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=');

View File

@@ -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<FawkesReply> createRepeated() => $pb.PbList<FawkesReply>();
@$core.pragma('dart2js:noInline')
static FawkesReply getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<FawkesReply>(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<FawkesReq> createRepeated() => $pb.PbList<FawkesReq>();
@$core.pragma('dart2js:noInline')
static FawkesReq getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<FawkesReq>(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');

View File

@@ -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

View File

@@ -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');

View File

@@ -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<LocaleIds>(1, _omitFieldNames ? '' : 'cLocale', subBuilder: LocaleIds.create)
..aOM<LocaleIds>(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<Locale> createRepeated() => $pb.PbList<Locale>();
@$core.pragma('dart2js:noInline')
static Locale getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<Locale>(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<LocaleIds> createRepeated() => $pb.PbList<LocaleIds>();
@$core.pragma('dart2js:noInline')
static LocaleIds getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<LocaleIds>(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');

View File

@@ -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

View File

@@ -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');

View File

@@ -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<Metadata> createRepeated() => $pb.PbList<Metadata>();
@$core.pragma('dart2js:noInline')
static Metadata getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<Metadata>(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');

View File

@@ -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

View File

@@ -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==');

View File

@@ -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<NetworkType>(1, _omitFieldNames ? '' : 'type', $pb.PbFieldType.OE, defaultOrMaker: NetworkType.NT_UNKNOWN, valueOf: NetworkType.valueOf, enumValues: NetworkType.values)
..e<TFType>(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<Network> createRepeated() => $pb.PbList<Network>();
@$core.pragma('dart2js:noInline')
static Network getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<Network>(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');

View File

@@ -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<NetworkType> values = <NetworkType> [
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<TFType> values = <TFType> [
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');

View File

@@ -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');

View File

@@ -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<ModeType>(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<Restriction> createRepeated() => $pb.PbList<Restriction>();
@$core.pragma('dart2js:noInline')
static Restriction getDefault() => _defaultInstance ??= $pb.GeneratedMessage.$_defaultFor<Restriction>(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');

View File

@@ -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<ModeType> values = <ModeType> [
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');

View File

@@ -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==');

View File

@@ -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<VideoDetailPage>
final scaffoldKey = GlobalKey<ScaffoldState>();
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);

View File

@@ -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<int> midByte = utf8.encode(uid.toString());
List<int> resultByte = List<int>.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<int> 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,

View File

@@ -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:

View File

@@ -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: