E-H Better Gallery Hiding

Undoable hiding based on tags, title keywords, and uploader name.

اعتبارا من 11-12-2019. شاهد أحدث إصدار.

You will need to install an extension such as Tampermonkey, Greasemonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Violentmonkey to install this script.

You will need to install an extension such as Tampermonkey or Userscripts to install this script.

You will need to install an extension such as Tampermonkey to install this script.

You will need to install a user script manager extension to install this script.

(I already have a user script manager, let me install it!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

ستحتاج إلى تثبيت إضافة مثل Stylus لتثبيت هذا النمط.

ستحتاج إلى تثبيت إضافة لإدارة أنماط المستخدم لتتمكن من تثبيت هذا النمط.

ستحتاج إلى تثبيت إضافة لإدارة أنماط المستخدم لتثبيت هذا النمط.

ستحتاج إلى تثبيت إضافة لإدارة أنماط المستخدم لتثبيت هذا النمط.

(لدي بالفعل مثبت أنماط للمستخدم، دعني أقم بتثبيته!)

// ==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.13
// ==/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 = false; //pixiv art dumps
var hideOngoing = false; //ongoing in title
var hidePortfolio = false; //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(/patreon|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');
	}
});

//add custom css
$('head').append(`<style data-jqstyle="ehBGH">
.eh-bgh-controls {display:block; text-align:center; padding:3px 1px;}
tr.eh-bgh-hidden {opacity: .2; transition:200ms ease-out;}
tr.eh-bgh-hidden:hover {opacity: 1;}
.eh-bgh-hiddenCount {border-bottom: 1px dotted currentColor;}
</style>`);