Blacklist and Whitelist of Forum Threads for the E-Hentai Forums

Blacklists and whitelists specified forum threads, plus various tweaks.

As of 2015-04-04. See the latest version.

// ==UserScript==
// @name            Blacklist and Whitelist of Forum Threads for the E-Hentai Forums
// @description     Blacklists and whitelists specified forum threads, plus various tweaks.
// @include         http://forums.e-hentai.org/index.php?*
// @version 0.0.1.20150404172746
// @namespace https://greasyfork.org/users/2233
// ==/UserScript==

/*** Settings ***/

var hide_unread_imgs = true
var hide_closed_shops = true
var highlight_auctions = true
var highlight_shop_owners = true
if(typeof do_not_hide == 'undefined') {
    var do_not_hide = ['danixxx', 'djackallstar', 'Kyoko Hori']
}
if(typeof wts_shop_owners_to_highlight == 'undefined') {
    var wts_shop_owners_to_highlight = ['boulay', 'djackallstar', 'Mantra64', 'Pickled Cow', 'spicepie', 'ST-Ru', 'Teana Lanster', 'tychocelchu', 'VriskaSerket', 'wannaf', 'Zack_CN']
}
if(typeof wtb_shop_owners_to_highlight == 'undefined') {
    var wtb_shop_owners_to_highlight = ['Apoly', 'atomicpuppy', 'Cats Lover', 'cwx', 'danixxx', 'djackallstar', 'dongchun', 'frankmelody', 'gc00018', 'Kyoko Hori', 'morineko', 'piyin', 'raisarakun', 'SinBear', 'TCPG', 'warachiasion']
}
if(typeof wts_blist == 'undefined') {
    var wts_blist = [72877, 31783, 96543, 51688, 85197, 105670, 163637, 171583, 162125, 171591]
}
if(typeof wtb_blist == 'undefined') {
    var wtb_blist = [105668, 94876, 166903]
}
if(typeof chat_wlist == 'undefined') {
    var chat_wlist = [20466, 22234, 29703, 65126]
}

/*** End of Settings ***/

var wnd = window
var doc = wnd.document
var loc = location
var href = loc.href

var $  = function(e, css) { if(!css) { css=e; e=doc }; return e.querySelector(css) }
var $$ = function(e, css) { if(!css) { css=e; e=doc }; return e.querySelectorAll(css) }

var showforum = href.match(/showforum=(\d+)/)
if(!showforum) { showforum = href.match(/&?\bf=(\d+)/) }
if(!showforum) { throw 'exit' }
showforum = showforum[1]

// Hide unread imgs
if(hide_unread_imgs) {
    var imgs = $$('img[src="style_images/ambience/newpost.gif"]')
    for(var i=0, len=imgs.length; i<len; i++) { imgs[i].style.display = 'none' }
    var imgs = $$('img[src="style_images/fusion/newpost.gif"]')
    for(var i=0, len=imgs.length; i<len; i++) { imgs[i].style.display = 'none' }
}

// Hide closed shops
if(hide_closed_shops) {
    if(showforum == '77' || showforum == '78') {
        var lnks = $$('td.row1 > div > span > a[id^="tid-link-"]')
        for(var i=0, len=lnks.length; i<len; i++) {
            if(/\b(auction|lottery|free)\b/i.test(lnks[i].textContent)) { continue }
            var owner = $(lnks[i].parentNode.parentNode.parentNode.parentNode, 'td.row2 > a[href*="showuser"]')
            if(do_not_hide.indexOf(owner.textContent) != -1){ continue }
            if(/\b(close|closed|complete|delete|done|end|none|nothing|shut)/i.test(lnks[i].textContent)) {
                lnks[i].parentNode.parentNode.parentNode.parentNode.style.display = 'none'
            }
            var desc = $(lnks[i].parentNode.parentNode, 'span#tid-desc-'+lnks[i].id.match(/(\d+)/)[1])
            if(/\b(close|closed|complete|delete|done|end|none|nothing|shut)\b/i.test(desc.textContent)) {
                desc.parentNode.parentNode.parentNode.parentNode.style.display = 'none'
            }
        }
    }
}

// Highlight auctions
if(highlight_auctions) {
    if(showforum == '77') {
        var lnks = $$('td.row1 > div > span > a[id^="tid-link-"]')
        for(var i=0, len=lnks.length; i<len; i++) {
            if(/\b(auction|lottery|free)\b/i.test(lnks[i].textContent)) {
                var owner = $(lnks[i].parentNode.parentNode.parentNode.parentNode, 'td.row2 > a[href*="showuser"]')
                if(owner.style.color == '') { owner.style.color = 'blue'}
            }
        }
    }
}

// Highlight shop owners
if(highlight_shop_owners) {
    var fav = []
    if(showforum == '77') { fav = wts_shop_owners_to_highlight } // WTS
    else if(showforum == '78') { fav = wtb_shop_owners_to_highlight } // WTB
    var owner = $$('td.row2 > a[href*="showuser"]')
    for(var i=0, len=owner.length; i<len; i++) {
        if((fav.indexOf(owner[i].textContent) != -1) && (owner[i].style.color == '')) { owner[i].style.color = 'red' }
    }
}

// Hide specified forum threads
var blist = wlist = []
if(showforum == '76')      { wlist = chat_wlist } // Chat
else if(showforum == '77') { blist = wts_blist } // WTS
else if(showforum == '78') { blist = wtb_blist } // WTB
if(blist.length) {
    for(var i=0, len=blist.length; i<len; i++) {
        try {
            $('#tid-link-'+blist[i]).parentNode.parentNode.parentNode.parentNode.style.display = 'none'
        } catch(e) {}
    }
}
else if(wlist.length) {
    var lnks = $$('td.row1 > div > span > a[id^="tid-link-"]')
    for(var i=0, len=lnks.length; i<len; i++) {
        if(!/^tid-link-/.test(lnks[i].id)) { continue }
        var tid = parseInt(lnks[i].id.match(/tid-link-(\d+)/)[1])
        if(wlist.indexOf(tid)==-1) {
            try {
                lnks[i].parentNode.parentNode.parentNode.parentNode.style.display = 'none'
            } catch(e) {}
        }
    }
}