fix regex & use set in uid (#296)

* fix regex count & use set in uid

* fix regex
This commit is contained in:
My-Responsitories
2025-02-21 02:42:28 +00:00
committed by GitHub
parent 1cd8d4913d
commit cc1951c721
4 changed files with 35 additions and 47 deletions

View File

@@ -256,8 +256,10 @@ class PlPlayerController {
/// 弹幕权重
int danmakuWeight = 0;
List danmakuFilterRule = [];
RegExp? dmRegExp;
int filterCount = 0;
List dmFilterString = [];
List<RegExp> dmRegExp = [];
Set dmUid = {};
// 关联弹幕控制器
DanmakuController? danmakuController;
bool showDanmaku = true;
@@ -396,16 +398,20 @@ class PlPlayerController {
List regex = [];
List rules = GStorage.localCache
.get(LocalCacheKey.danmakuFilterRule, defaultValue: []);
danmakuFilterRule = rules.where((item) {
if (item['type'] != 1) {
return true;
} else {
regex.add(item['filter']);
return false;
filterCount = rules.length;
rules.forEach((item) {
switch (item['type']) {
case 0:
dmFilterString.add(item['filter']);
break;
case 1:
dmRegExp.add(RegExp(item['filter'], caseSensitive: false));
break;
case 2:
dmUid.add(item['filter']);
break;
}
}).toList();
dmRegExp =
regex.isNotEmpty ? RegExp(regex.join('|'), caseSensitive: false) : null;
});
blockTypes = setting.get(SettingBoxKey.danmakuBlockType, defaultValue: []);
showArea = setting.get(SettingBoxKey.danmakuShowArea, defaultValue: 0.5);
// 不透明度