Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 15 additions & 13 deletions plugins/better_danmaku_filter/better_danmaku_filter.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
const pluginManifest = {
id: 'better_danmaku_filter',
name: '智能弹幕精选',
version: '1.1.2',
version: '1.1.3',
minHostVersion: '1.10.6',
description: '智能精选弹幕,过滤低质量弹幕,保留优质内容',
author: 'Retr0',
Expand Down Expand Up @@ -212,6 +212,13 @@ function maxCharRatio(s) {
return max / s.length;
}

function getTargetKeepCount(totalCount, p) {
if (p.expectedDanmakuCount > 0) {
return Math.max(1, Math.round(p.expectedDanmakuCount * 1000));
}
return Math.max(1, Math.round(totalCount * p.ratio / 100));
}

function similarity(a, b) {
var la = a.length, lb = b.length;
if (!la || !lb) return 0;
Expand Down Expand Up @@ -423,13 +430,7 @@ function filterDanmaku(items, p) {
var candidates = result.filter(function(r) { return !r._prefiltered; });
candidates.sort(function(a, b) { return b._score - a._score; });

var keepCount;

if (p.expectedDanmakuCount > 0) {
keepCount = Math.max(1, Math.round(p.expectedDanmakuCount * 1000));
} else {
keepCount = Math.max(1, Math.round(candidates.length * p.ratio / 100));
}
var keepCount = getTargetKeepCount(candidates.length, p);

var kept = candidates.slice(0, Math.min(keepCount, candidates.length));

Expand Down Expand Up @@ -468,11 +469,6 @@ function filterDanmaku(items, p) {
return finalKept;
}

function pluginOnInitialize() {
loadParams();
ui.showSnackBar('弹幕精选插件已启用');
}

function pluginOnDestroy() {
ui.showSnackBar('弹幕精选插件已禁用');
}
Expand All @@ -496,6 +492,12 @@ function pluginOnEvent(event) {

loadParams();

var targetKeepCount = getTargetKeepCount(commentsArray.length, params);
if (targetKeepCount >= commentsArray.length) {
ui.showSnackBar('弹幕精选跳过: ' + originalCount + ' 条不超过期望数数 ');
return;
}

var filtered = filterDanmaku(commentsArray, params);
var filteredCount = filtered.length;

Expand Down
Loading