Undoable hiding based on tags, title keywords, and uploader name.
当前为
// ==UserScript==
// @name E-H Better Gallery Hiding
// @description Undoable hiding based on tags, title keywords, and uploader name.
// @author Hen-Tie
// @homepage https://hen-tie.tumblr.com/
// @namespace https://greasyfork.org/en/users/8336
// @include /^https?:\/\/(e-|ex)hentai\.org\/$/
// @include /^https?:\/\/(e-|ex)hentai\.org\/(\?page=.*|\?f_.*|tag\/.*|uploader\/.*)$/
// @grant none
// @require https://ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js
// @icon https://i.imgur.com/pMMVGRx.png
// @version 3.11
// ==/UserScript==
/*───────────────────┐
│ CONFIGURATION │
├────────────────────┼──────────────────────────┬──────────────────────────────┐
│ uploader hiding │ title hiding │ flag hiding │
├────────────────────┼──────────────────────────┼──────────────────────────────┤
│ edit "var blocked" │ edit "var hidePixiv" │ flag tags with #FF0000 │
│ case insensitive │ edit "var hideOngoing" │ it will be hidden, but can │
│ format: │ edit "var hidePortfolio" │ be toggled as desired │
│ ['user1','user2'] │ format: │ │
│ │ true/false │ │
└────────────────────┴──────────────────────────┴─────────────────────────────*/
var softHiding = false; //default to fading-out galleries, instead of hiding
var blocked = []; //blocked uploaders
var hidePixiv = true; //pixiv art dumps
var hideOngoing = true; //ongoing in title
var hidePortfolio = true; //other artist dumps
/*────────────────────────────────────────────────────────────────────────────*/
//track removed galleries
var removed, fRemoved, uRemoved, oRemoved, pRemoved, aRemoved;
removed = fRemoved = uRemoved = oRemoved = pRemoved = aRemoved = 0;
//all view modes
$('table.itg>tbody>tr, .gl1t').each(function() {
var uploader = $(this).find('.glhide div a, .gl3e div a').text().toLowerCase();
var galTitle = $(this).find('.glink, .gl4t.glname').text();
$.each(blocked, function(index,value) {
blocked[index] = value.toLowerCase();
});
//tag flagged
//gallery with flagged tag in colour #FF0000 is to be blocked
if ($(this).find('.gt[style$="background:radial-gradient(#df0000,#FF0000) !important"]').length > 0) {
hidden($(this));
removed++, fRemoved++;
}
//ongoing gallery
else if(/[([]wip[)\]]|ongoing|on going|en progreso|\(in progress\)|\[in progress\]/i.test(galTitle) && hideOngoing) {
hidden($(this));
removed++, oRemoved++;
}
//pixiv gallery
else if(/pixiv|fanbox/i.test(galTitle) && hidePixiv) {
hidden($(this));
removed++, pRemoved++;
}
//artist gallery
else if(/hentai-foundry|artist archives|twitter|artist galleries|artist ?[-:]|\(artist\)|\[artist\]/i.test(galTitle) && hidePortfolio) {
hidden($(this));
removed++, aRemoved++;
}
//uploader blocked - unavailable in thumbnail mode
else if ($.inArray(uploader, blocked) !== -1) {
hidden($(this));
removed++, uRemoved++;
}
});
//display removed count with mouseover data
var ctrlAnchor = $('p.ip:first-child');
if (removed > 0) {
var removedInfo = 'Flagged:'+fRemoved+' Uploader:'+uRemoved+' Ongoing:'+oRemoved+' Pixiv:'+pRemoved+' Artist:'+aRemoved;
if (softHiding) {
ctrlAnchor.append('<div class="eh-bgh-controls">(<em class="eh-bgh-hiddenCount" title="'+removedInfo+'">Soft-Hiding '+removed+'</em> / <a class="eh-bgh-toggle" href="javascript:;" title="Temporarily disable E-H Better Gallery Hiding">Disable</a>)</div>');
} else {
ctrlAnchor.append('<div class="eh-bgh-controls">(<em class="eh-bgh-hiddenCount" title="'+removedInfo+'">Hiding '+removed+'</em> / <a class="eh-bgh-toggle" href="javascript:;" title="Temporarily disable E-H Better Gallery Hiding">Disable</a>)</div>');
}
}
function hidden(elem) {
if (softHiding) {
elem.addClass('eh-bgh-hidden');
} else {
elem.addClass('eh-bgh-hidden').hide();
}
}
//temporarily disable hiding
$('.eh-bgh-toggle').click(function() {
var toggle = $('.eh-bgh-toggle');
toggle.toggleClass('eh-bgh-showing');
$('.eh-bgh-hidden').toggle();
if (toggle.hasClass('eh-bgh-showing')) {
toggle.text('Enable');
} else {
toggle.text('Disable');
}
});
$('head').append(`<style>
.ip {line-height: 1.4;}
.eh-bgh-controls {display:block; text-align:center; padding:3px 1px;}
.eh-bgh-hidden .gl1e img, .eh-bgh-hidden .gl3t img, tr.eh-bgh-hidden {opacity: .2; transition:200ms ease-out;}
.eh-bgh-hidden .gl3t img:hover, .eh-bgh-hidden .gl1e img:hover, tr.eh-bgh-hidden:hover {opacity: 1;}
.eh-bgh-hiddenCount {border-bottom: 1px dotted currentColor;}
</style>`);