Update F95_BRATR_Management_Ratings_Helper.js
Added 200 char check when user mentions it
This commit is contained in:
parent
aaa36886c9
commit
b3fac15c8f
@ -1,7 +1,7 @@
|
|||||||
// ==UserScript==
|
// ==UserScript==
|
||||||
// @name F95 BRATR Management Ratings Helper
|
// @name F95 BRATR Management Ratings Helper
|
||||||
// @namespace Ryahn
|
// @namespace Ryahn
|
||||||
// @version 1.4.1
|
// @version 1.4.2
|
||||||
// @description Triage panel for /bratr-ratings/management: highlight low-effort reviews, filter, export CSV.
|
// @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*
|
||||||
// @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: 'amazing', rx: /\bamazing!?(\b|$)/i },
|
||||||
{ label: 'top N', rx: /\btop\s+\d+\b/i },
|
{ label: 'top N', rx: /\btop\s+\d+\b/i },
|
||||||
{ label: 'pretty sex scenes', rx: /\bpretty sex scenes\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
|
// Spam/bypass heuristics
|
||||||
@ -156,7 +157,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Diagnose low-effort
|
// Diagnose low-effort
|
||||||
function diagnoseLowEffort(r, cutoff=220) {
|
function diagnoseLowEffort(r, cutoff=200) {
|
||||||
const reasons = [];
|
const reasons = [];
|
||||||
const body = r.bodyTxt || '';
|
const body = r.bodyTxt || '';
|
||||||
|
|
||||||
@ -195,7 +196,7 @@
|
|||||||
<div class="bh-body">
|
<div class="bh-body">
|
||||||
<div class="bh-controls">
|
<div class="bh-controls">
|
||||||
<label>Min ★ <input type="number" step="0.5" min="0" max="5" class="bh-minrating" value="0"></label>
|
<label>Min ★ <input type="number" step="0.5" min="0" max="5" class="bh-minrating" value="0"></label>
|
||||||
<label>Low-effort length cutoff <input type="number" min="0" class="bh-maxlen" value="220"></label>
|
<label>Low-effort length cutoff <input type="number" min="0" class="bh-maxlen" value="200"></label>
|
||||||
<label>User <input type="text" class="bh-user" placeholder="author contains"></label>
|
<label>User <input type="text" class="bh-user" placeholder="author contains"></label>
|
||||||
<label>Date from <input type="datetime-local" class="bh-from"></label>
|
<label>Date from <input type="datetime-local" class="bh-from"></label>
|
||||||
<label>Date to <input type="datetime-local" class="bh-to"></label>
|
<label>Date to <input type="datetime-local" class="bh-to"></label>
|
||||||
@ -261,7 +262,7 @@
|
|||||||
else { body.style.display = 'none'; panel.querySelector('.bh-collapse').textContent = '+'; }
|
else { body.style.display = 'none'; panel.querySelector('.bh-collapse').textContent = '+'; }
|
||||||
});
|
});
|
||||||
panel.querySelector('.bh-reset').addEventListener('click', () => {
|
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();
|
render();
|
||||||
});
|
});
|
||||||
['input','change'].forEach(ev => {
|
['input','change'].forEach(ev => {
|
||||||
@ -295,7 +296,7 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
function render() {
|
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 live = reviews.filter(r => !r.deleted);
|
||||||
const lowCount = live.filter(r => diagnoseLowEffort(r, maxlen).low).length;
|
const lowCount = live.filter(r => diagnoseLowEffort(r, maxlen).low).length;
|
||||||
const avgRating = avg(live.map(r => r.rating || 0)).toFixed(2);
|
const avgRating = avg(live.map(r => r.rating || 0)).toFixed(2);
|
||||||
@ -363,7 +364,7 @@
|
|||||||
|
|
||||||
// Tint live page with reasons as tooltip
|
// Tint live page with reasons as tooltip
|
||||||
function retint() {
|
function retint() {
|
||||||
const maxlen = parseInt(ui.maxlen?.value || '220', 10);
|
const maxlen = parseInt(ui.maxlen?.value || '200', 10);
|
||||||
reviews.forEach(r => {
|
reviews.forEach(r => {
|
||||||
if (r.deleted) {
|
if (r.deleted) {
|
||||||
r.node.style.outline = '';
|
r.node.style.outline = '';
|
||||||
@ -388,7 +389,7 @@
|
|||||||
// Copy CSV of current view, with reasons column
|
// Copy CSV of current view, with reasons column
|
||||||
panel.querySelector('.bh-copy').addEventListener('click', () => {
|
panel.querySelector('.bh-copy').addEventListener('click', () => {
|
||||||
const rows = currentRows();
|
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 header = ['author','rating','thread','threadUrl','timeIso','effLen','rawLen','deleted','low','reasons','body'];
|
||||||
const lines = [header.join(',')];
|
const lines = [header.join(',')];
|
||||||
rows.forEach(r => {
|
rows.forEach(r => {
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user