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 => {