NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript==
// @name Block Bad Guys on U2 (forked from joshu)
// @version 0.1.2
// @description 屏蔽黑名单上成员的发言
// @author ChengChung
// @include http*://u2.dmhy.org/*
// @grant none
// @updateURL https://openuserjs.org/meta/gyakkun/Block_Bad_Guys_on_U2_(Forked_from_joshu).meta.js
// @license MIT
// ==/UserScript==
(function () {
'use strict';
var url = window.location.pathname;
var para = window.location.search;
const BLOCK_LIST = [43579, 38404, 44850,];
const ENABLE_GLOBAL = true;
const ENABLE_CHAT = true;
const ENABLE_TORRENT_COMMENT = true;
const ENABLE_FORUM_POST = true;
const ENABLE_FORUM_LIST_ITEM = true;
const SHOUTBOX_URL = /^\/shoutbox.php$/i;
const TORRENT_DETAIL_URL = /^\/details.php$/i;
const OFFER_URL = /^\/offers.php$/i;
const FORUM_URL = /^\/forums.php$/i;
const OFFER_DETAIL = /^\?.*id=\d+.*/i;
const TOPIC_DETAIL = /^\?.*action=viewtopic.*/i;
const TOPIC_LIST = /^\?.*action=viewforum.*/i;
const UID_REG = /userdetails\.php\?id=(\d+)/i;
const SHOUTBOX_ITEM_SELECTOR = "body > table > tbody > tr:nth-child(1) > td > div";
const TORRENT_DETAIL_COMMENT_ITEM_SELECTOR = "#outer > table.main > tbody > tr > td > table > tbody > tr > td > div";
const FORUM_POSTS_ITEM_SELECTOR = "#outer > table:nth-child(3) > tbody > tr > td > table:nth-child(2) > tbody > tr > td > div";
const FORUM_POSTS_LIST_ITEM_SELECTOR = "#outer > table:nth-child(4) > tbody > tr";
const CHAT_UID_SELECTOR = "> span.nowrap > a";
//黑名单被引用时
const CHAT_UID_SELECTOR_2 = "> span[style='word-break: break-all; word-wrap: break-word;'] > bdo > b > a";
//在"全部展开"中被引用时
const CHAT_UID_SELECTOR_3 = "> span.expandable-content> span[style='word-break: break-all; word-wrap: break-word;'] > bdo > b > a";
//const CHAT_UID_SELECTOR_3 = "> span[style='word-break: break-all; word-wrap: break-word;'] > bdo > span.expandable-content > b > a";
const COMMENT_UID_SELECTOR = "table > tbody > tr > td:nth-child(1) > span > a";
const TOPIC_LIST_ITEM_UID_SELECTOR = "td:nth-child(2) > span > a";
const HINT = "BLOCKED";
var RemoveChatFunc = function () {
var that = $(this);
if ($(this).find("span.expandable-content> span[style='word-break: break-all; word-wrap: break-word;'] > bdo > b").length > 0) {
$(this).find(CHAT_UID_SELECTOR_3).each(function () {
try {
var uid = Number($(this).attr("href").match(UID_REG)[1]);
if ($.inArray(uid, BLOCK_LIST) >= 0) {
that.hide();
}
} catch (err) {}
});
}
if ($(this).find("span[style='word-break: break-all; word-wrap: break-word;']> bdo > b").length > 0) {
$(this).find(CHAT_UID_SELECTOR_2).each(function () {
try {
var uid = Number($(this).attr("href").match(UID_REG)[1]);
if ($.inArray(uid, BLOCK_LIST) >= 0) {
that.hide();
}
} catch (err) {}
});
}
// U2娘没有身份页面呢
if ($(this).find("span.nowrap").length > 0) {
var uid = Number($(this).find(CHAT_UID_SELECTOR).attr("href").match(UID_REG)[1]);
if ($.inArray(uid, BLOCK_LIST) >= 0) {
// 移除黑名单对U2娘提问时U2娘的回答
if ($(this).prev().find("span.nowrap").length === 0) {
$(this).prev().remove();
}
$(this).remove();
}
}
};
var RemoveCommentFunc = function () {
// 排除候选前候选后分隔栏,并排除已删号者的筛选
if ($(this).find(COMMENT_UID_SELECTOR).length > 0) {
var uid = Number($(this).find(COMMENT_UID_SELECTOR).attr("href").match(UID_REG)[1]);
if ($.inArray(uid, BLOCK_LIST) >= 0) {
$(this).next().remove();
$(this).remove();
}
}
};
var RemoveListItemFunc = function () {
// 排除已删号者的筛选
if ($(this).find(TOPIC_LIST_ITEM_UID_SELECTOR).length > 0) {
var uid = Number($(this).find(TOPIC_LIST_ITEM_UID_SELECTOR).attr("href").match(UID_REG)[1]);
if ($.inArray(uid, BLOCK_LIST) >= 0) {
$(this).remove();
}
}
};
if (ENABLE_GLOBAL) {
if (ENABLE_CHAT && url.match(SHOUTBOX_URL) !== null) {
$(SHOUTBOX_ITEM_SELECTOR).each(RemoveChatFunc);
}
if (ENABLE_TORRENT_COMMENT && (url.match(TORRENT_DETAIL_URL) !== null || (url.match(OFFER_URL) !== null && para.match(OFFER_DETAIL) !== null))) {
$(TORRENT_DETAIL_COMMENT_ITEM_SELECTOR).each(RemoveCommentFunc);
}
if (url.match(FORUM_URL) !== null) {
if (ENABLE_FORUM_POST && para.match(TOPIC_DETAIL) !== null) {
$(FORUM_POSTS_ITEM_SELECTOR).each(RemoveCommentFunc);
} else if (ENABLE_FORUM_LIST_ITEM && para.match(TOPIC_LIST) !== null) {
$(FORUM_POSTS_LIST_ITEM_SELECTOR).each(RemoveListItemFunc);
}
}
}
})();