opt: buvid

This commit is contained in:
My-Responsitories
2025-09-23 12:20:07 +08:00
parent d727e2a62a
commit da1ea68f8b
11 changed files with 102 additions and 62 deletions

View File

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

View File

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