diff --git a/F95_BRATR_Management_Ratings_Helper.js b/F95_BRATR_Management_Ratings_Helper.js
index 86e4279..e873f0d 100644
--- a/F95_BRATR_Management_Ratings_Helper.js
+++ b/F95_BRATR_Management_Ratings_Helper.js
@@ -1,7 +1,7 @@
// ==UserScript==
// @name F95 BRATR Management Ratings Helper
// @namespace Ryahn
-// @version 1.4.1
+// @version 1.4.2
// @description Triage panel for /bratr-ratings/management: highlight low-effort reviews, filter, export CSV.
// @match https://f95zone.to/bratr-ratings/management*
// @match https://f95zone.to/bratr-ratings/*/management*
@@ -73,7 +73,8 @@
{ label: 'amazing', rx: /\bamazing!?(\b|$)/i },
{ label: 'top N', rx: /\btop\s+\d+\b/i },
{ label: 'pretty sex scenes', rx: /\bpretty sex scenes\b/i },
- { label: 'downloads flex', rx: /\bdownload(ed)? hundreds of games\b/i }
+ { label: 'downloads flex', rx: /\bdownload(ed)? hundreds of games\b/i },
+ { label: 'mentions 200 (char rule)', rx: /\b200(?:\s*[- ]?(?:char(?:s|acters?)?|word(?:s)?|limit|minimum|min))?\b/i }
];
// Spam/bypass heuristics
@@ -156,7 +157,7 @@
}
// Diagnose low-effort
- function diagnoseLowEffort(r, cutoff=220) {
+ function diagnoseLowEffort(r, cutoff=200) {
const reasons = [];
const body = r.bodyTxt || '';
@@ -195,7 +196,7 @@
-
+
@@ -261,7 +262,7 @@
else { body.style.display = 'none'; panel.querySelector('.bh-collapse').textContent = '+'; }
});
panel.querySelector('.bh-reset').addEventListener('click', () => {
- ui.min.value = 0; ui.maxlen.value = 220; ui.user.value = ''; ui.lowonly.checked = true; ui.from.value = ''; ui.to.value = '';
+ ui.min.value = 0; ui.maxlen.value = 200; ui.user.value = ''; ui.lowonly.checked = true; ui.from.value = ''; ui.to.value = '';
render();
});
['input','change'].forEach(ev => {
@@ -295,7 +296,7 @@
}
function render() {
- const maxlen = parseInt(ui.maxlen.value || '220', 10);
+ const maxlen = parseInt(ui.maxlen.value || '200', 10);
const live = reviews.filter(r => !r.deleted);
const lowCount = live.filter(r => diagnoseLowEffort(r, maxlen).low).length;
const avgRating = avg(live.map(r => r.rating || 0)).toFixed(2);
@@ -363,7 +364,7 @@
// Tint live page with reasons as tooltip
function retint() {
- const maxlen = parseInt(ui.maxlen?.value || '220', 10);
+ const maxlen = parseInt(ui.maxlen?.value || '200', 10);
reviews.forEach(r => {
if (r.deleted) {
r.node.style.outline = '';
@@ -388,7 +389,7 @@
// Copy CSV of current view, with reasons column
panel.querySelector('.bh-copy').addEventListener('click', () => {
const rows = currentRows();
- const maxlen = parseInt(ui.maxlen?.value || '220', 10);
+ const maxlen = parseInt(ui.maxlen?.value || '200', 10);
const header = ['author','rating','thread','threadUrl','timeIso','effLen','rawLen','deleted','low','reasons','body'];
const lines = [header.join(',')];
rows.forEach(r => {