mirror of
https://github.com/bggRGjQaUbCoE/PiliPlus.git
synced 2026-07-12 12:20:13 +08:00
opt: buvid
This commit is contained in:
@@ -2,6 +2,7 @@ import 'package:PiliPlus/common/constants.dart';
|
||||
import 'package:PiliPlus/models/common/account_type.dart';
|
||||
import 'package:PiliPlus/utils/accounts.dart';
|
||||
import 'package:PiliPlus/utils/id_utils.dart';
|
||||
import 'package:PiliPlus/utils/login_utils.dart';
|
||||
import 'package:cookie_jar/cookie_jar.dart';
|
||||
import 'package:hive/hive.dart';
|
||||
|
||||
@@ -32,6 +33,8 @@ sealed class Account {
|
||||
|
||||
String? get refresh => throw UnimplementedError();
|
||||
|
||||
String get buvid => throw UnimplementedError();
|
||||
|
||||
const Account();
|
||||
}
|
||||
|
||||
@@ -51,6 +54,9 @@ class LoginAccount extends Account {
|
||||
@override
|
||||
@HiveField(3)
|
||||
final Set<AccountType> type;
|
||||
@override
|
||||
@HiveField(4)
|
||||
final String buvid;
|
||||
|
||||
@override
|
||||
bool activited = false;
|
||||
@@ -69,11 +75,19 @@ class LoginAccount extends Account {
|
||||
late final String csrf =
|
||||
cookieJar.domainCookies['bilibili.com']!['/']!['bili_jct']!.cookie.value;
|
||||
|
||||
@override
|
||||
Future<void> delete() => _box.delete(_midStr);
|
||||
bool _hasDelete = false;
|
||||
|
||||
@override
|
||||
Future<void> onChange() => _box.put(_midStr, this);
|
||||
Future<void> delete() {
|
||||
assert(_hasDelete = true);
|
||||
return _box.delete(_midStr);
|
||||
}
|
||||
|
||||
@override
|
||||
Future<void> onChange() {
|
||||
assert(!_hasDelete);
|
||||
return _box.put(_midStr, this);
|
||||
}
|
||||
|
||||
@override
|
||||
Map<String, dynamic>? toJson() => {
|
||||
@@ -81,6 +95,7 @@ class LoginAccount extends Account {
|
||||
'accessKey': accessKey,
|
||||
'refresh': refresh,
|
||||
'type': type.map((i) => i.index).toList(),
|
||||
'buvid': buvid,
|
||||
};
|
||||
|
||||
late final String _midStr = cookieJar
|
||||
@@ -95,7 +110,9 @@ class LoginAccount extends Account {
|
||||
this.accessKey,
|
||||
this.refresh, [
|
||||
Set<AccountType>? type,
|
||||
]) : type = type ?? {} {
|
||||
String? buvid,
|
||||
]) : type = type ?? {},
|
||||
buvid = buvid ?? LoginUtils.generateBuvid() {
|
||||
cookieJar.setBuvid3();
|
||||
}
|
||||
|
||||
@@ -104,6 +121,7 @@ class LoginAccount extends Account {
|
||||
json['accessKey'],
|
||||
json['refresh'],
|
||||
(json['type'] as Iterable?)?.map((i) => AccountType.values[i]).toSet(),
|
||||
json['buvid'],
|
||||
);
|
||||
|
||||
@override
|
||||
@@ -131,12 +149,15 @@ class AnonymousAccount extends Account {
|
||||
final String csrf = '';
|
||||
@override
|
||||
final Map<String, String> headers = Constants.baseHeaders;
|
||||
@override
|
||||
String buvid = LoginUtils.generateBuvid();
|
||||
|
||||
@override
|
||||
bool activited = false;
|
||||
|
||||
@override
|
||||
Future<void> delete() async {
|
||||
buvid = LoginUtils.generateBuvid();
|
||||
await cookieJar.deleteAll();
|
||||
cookieJar.setBuvid3();
|
||||
}
|
||||
|
||||
@@ -18,13 +18,14 @@ class LoginAccountAdapter extends TypeAdapter<LoginAccount> {
|
||||
fields[1] as String?,
|
||||
fields[2] as String?,
|
||||
(fields[3] as List?)?.cast<AccountType>().toSet(),
|
||||
fields[4] as String?,
|
||||
);
|
||||
}
|
||||
|
||||
@override
|
||||
void write(BinaryWriter writer, LoginAccount obj) {
|
||||
writer
|
||||
..writeByte(4)
|
||||
..writeByte(5)
|
||||
..writeByte(0)
|
||||
..write(obj.cookieJar)
|
||||
..writeByte(1)
|
||||
@@ -32,7 +33,9 @@ class LoginAccountAdapter extends TypeAdapter<LoginAccount> {
|
||||
..writeByte(2)
|
||||
..write(obj.refresh)
|
||||
..writeByte(3)
|
||||
..write(obj.type.toList());
|
||||
..write(obj.type.toList())
|
||||
..writeByte(4)
|
||||
..write(obj.buvid);
|
||||
}
|
||||
|
||||
@override
|
||||
|
||||
Reference in New Issue
Block a user