Skip to content

Commit 6247806

Browse files
committed
新增 [屏蔽关键词(帖子标题)] 功能; 优化 [屏蔽用户、自动隐藏阅读权限 255 的帖子] 功能
1 parent 0c75bf0 commit 6247806

1 file changed

Lines changed: 69 additions & 24 deletions

File tree

Hostloc-Enhanced.user.js

Lines changed: 69 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
// ==UserScript==
22
// @name 全球主机交流论坛增强
3-
// @version 1.1.5
3+
// @version 1.1.6
44
// @author X.I.U
5-
// @description 自动签到(访问空间)、屏蔽指定用户(黑名单)、自动无缝翻页、自动显示帖子内隐藏回复、自动隐藏阅读权限 255 的帖子、回到顶部(右键点击两侧空白处)
5+
// @description 自动签到(访问空间)、屏蔽用户(黑名单)、屏蔽关键词(帖子标题)、自动无缝翻页、自动显示帖子内隐藏回复、自动隐藏阅读权限 255 的帖子、回到顶部(右键点击两侧空白处)
66
// @match *://hostloc.com/*
77
// @icon https://www.hostloc.com/favicon.ico
88
// @grant GM_xmlhttpRequest
@@ -21,8 +21,10 @@
2121
var menu_ALL = [
2222
['menu_autoSignIn', '自动签到', '自动签到', true],
2323
['menu_reAutoSignIn', '重新签到', '重新签到', ''],
24-
['menu_blockUsers', '屏蔽指定用户', '屏蔽指定用户', false],
24+
['menu_blockUsers', '屏蔽用户', '屏蔽用户', false],
2525
['menu_customBlockUsers', '自定义屏蔽用户', '自定义屏蔽用户', []],
26+
['menu_blockKeywords', '屏蔽关键词(帖子标题)', '屏蔽关键词(帖子标题)', false],
27+
['menu_customBlockKeywords', '自定义屏蔽关键词', '自定义屏蔽关键词', []],
2628
['menu_thread_pageLoading', '帖子内自动翻页', '帖子内自动翻页', true],
2729
['menu_showhide', '自动显示隐藏回复', '自动显示隐藏回复', true],
2830
['menu_delate255', '自动隐藏阅读权限 255 的帖子', '自动隐藏阅读权限 255 的帖子', true],
@@ -46,6 +48,8 @@
4648
menu_ID[i] = GM_registerMenuCommand(`[ ⚑ ] ${menu_ALL[i][1]}`, function(){reAutoSignIn()});
4749
} else if (menu_ALL[i][0] === 'menu_customBlockUsers') {
4850
menu_ID[i] = GM_registerMenuCommand(`[ ⚑ ] ${menu_ALL[i][1]}`, function(){customBlockUsers()});
51+
} else if (menu_ALL[i][0] === 'menu_customBlockKeywords') {
52+
menu_ID[i] = GM_registerMenuCommand(`[ ⚑ ] ${menu_ALL[i][1]}`, function(){customBlockKeywords()});
4953
} else {
5054
menu_ID[i] = GM_registerMenuCommand(`[ ${menu_ALL[i][3]?'√':'×'} ] ${menu_ALL[i][1]}`, function(){menu_switch(`${menu_ALL[i][3]}`,`${menu_ALL[i][0]}`,`${menu_ALL[i][2]}`)});
5155
}
@@ -134,23 +138,27 @@
134138
if (patt_thread.test(location.pathname) || location.search.indexOf('mod=viewthread') > -1) { // 帖子内
135139
if (menu_value('menu_thread_pageLoading')) {
136140
curSite = DBSite.thread;
137-
hidePgbtn(); // 隐藏帖子内的 [下一页] 按钮
141+
hidePgbtn(); // 隐藏帖子内的 [下一页] 按钮
138142
}
139-
showPosts(); // 自动显示帖子内被隐藏的回复
140-
blockUsers('thread');
143+
showPosts(); // 自动显示帖子内被隐藏的回复
144+
blockUsers('thread'); // 屏蔽用户(黑名单)
141145
} else if (patt_forum.test(location.pathname) || location.search.indexOf('mod=forumdisplay') > -1) { // 各板块帖子列表
142146
curSite = DBSite.forum;
143-
if (menu_value('menu_delate255')) delate255(); // 自动隐藏阅读权限 255 的帖子
144-
blockUsers('forum');
145-
}else if (patt_guide.test(location.search)) { // 导读帖子列表
147+
if (menu_value('menu_delate255')) { // 自动隐藏阅读权限 255 的帖子
148+
delate255();
149+
setTimeout(delate255, 1500); // 为了避免有时候网页加载太慢时没有隐藏成功的问题
150+
}
151+
blockUsers('forum'); // 屏蔽用户(黑名单)
152+
blockKeywords(); // 屏蔽关键词(帖子标题)
153+
}else if (patt_guide.test(location.search)) { // 导读帖子列表
146154
curSite = DBSite.guide;
147-
} else if(location.pathname === '/search.php') { // 搜索结果列表
155+
} else if(location.pathname === '/search.php') { // 搜索结果列表
148156
curSite = DBSite.search;
149-
blockUsers('search');
157+
blockUsers('search'); // 屏蔽用户(黑名单)
150158
} else if(location.pathname === '/home.php' && location.search.indexOf('mod=space&do=notice&view=mypost') > -1) { // 消息(帖子/点评/提到)
151-
blockUsers('notice');
159+
blockUsers('notice'); // 屏蔽用户(黑名单)
152160
} else if(location.pathname === '/home.php' && location.search === '?mod=space&do=pm') { // 消息(私人聊天)
153-
blockUsers('pm');
161+
blockUsers('pm'); // 屏蔽用户(黑名单)
154162
}
155163

156164
curSite.pageUrl = ""; // 下一页URL
@@ -217,7 +225,7 @@
217225
};
218226

219227

220-
// 屏蔽指定用户
228+
// 屏蔽用户
221229
function blockUsers(type) {
222230
if (!menu_value('menu_blockUsers')) return
223231
if (!menu_value('menu_customBlockUsers') || menu_value('menu_customBlockUsers').length < 1) return
@@ -256,6 +264,44 @@
256264
}
257265

258266

267+
// 自定义屏蔽关键词(帖子标题)
268+
function customBlockKeywords() {
269+
let nowBlockKeywords = '';
270+
GM_getValue('menu_customBlockKeywords').forEach(function(item){nowBlockKeywords = nowBlockKeywords + '|' + item})
271+
let newBlockKeywords = prompt('编辑 [自定义屏蔽关键词],刷新网页后生效\n(不同关键词之间使用 "|" 分隔,\n(例如:嘿嘿|呵呵|嘎嘎,如果只有一个就不需要 "|" 了。', nowBlockKeywords.replace('|',''));
272+
if (newBlockKeywords === '') {
273+
GM_setValue('menu_customBlockKeywords', []);
274+
registerMenuCommand(); // 重新注册脚本菜单
275+
} else if (newBlockKeywords != null) {
276+
GM_setValue('menu_customBlockKeywords', newBlockKeywords.split('|'));
277+
registerMenuCommand(); // 重新注册脚本菜单
278+
}
279+
};
280+
281+
282+
// 屏蔽关键词(帖子标题)
283+
function blockKeywords() {
284+
if (!menu_value('menu_blockKeywords')) return
285+
if (!menu_value('menu_customBlockKeywords') || menu_value('menu_customBlockKeywords').length < 1) return
286+
//console.log('1111');
287+
let listItem = document.querySelectorAll('[id^="normalthread_"]');
288+
//console.log(listItem);
289+
if (listItem.length < 1) return
290+
listItem.forEach(function(item){ // 遍历所有帖子标题
291+
//console.log(item);
292+
menu_value('menu_customBlockKeywords').forEach(function(item1){ // 遍历关键词
293+
let itemName = item.querySelector('th a.s.xst'); // 寻找帖子标题
294+
//console.log(itemName);
295+
//console.log(item1, itemName.innerText);
296+
if (itemName && itemName.innerText.indexOf(item1) > -1) {
297+
console.log(item1, itemName.innerText);
298+
item.remove(); // 删除帖子
299+
}
300+
})
301+
})
302+
}
303+
304+
259305
// 自动翻页
260306
function pageLoading() {
261307
if (curSite.SiteTypeID > 0){
@@ -267,15 +313,14 @@
267313
let autopbn = document.querySelector('#autopbn');
268314
if (autopbn && autopbn.innerText === "下一页 »"){ // 如果已经在加载中了,就忽略
269315
autopbn.click();
270-
if (menu_value('menu_delate255')) { // 自动隐藏阅读权限 255 的帖子
271-
let timer = setInterval(function(){
272-
if (document.querySelector('#autopbn').innerText === "下一页 »") {
273-
delate255();
274-
blockUsers('forum');
275-
clearInterval(timer);
276-
}
277-
}, 10);
278-
}
316+
let timer = setInterval(function(){ // 在下一页加载完成后
317+
if (document.querySelector('#autopbn').innerText === "下一页 »") {
318+
if (menu_value('menu_delate255')) delate255(); // 隐藏 255 权限帖子
319+
if (menu_value('menu_blockUsers')) blockUsers('forum'); // 屏蔽用户(黑名单)
320+
if (menu_value('menu_blockKeywords')) blockKeywords(); // 屏蔽关键词(帖子标题)
321+
clearInterval(timer);
322+
}
323+
}, 10);
279324
}
280325
}else{
281326
ShowPager.loadMorePage();
@@ -409,7 +454,7 @@
409454
pageElems.forEach(function (one) {
410455
toElement.insertAdjacentElement(addTo, one);
411456
});
412-
if (menu_value('menu_blockUsers')) { // 屏蔽指定用户
457+
if (menu_value('menu_blockUsers')) { // 屏蔽用户(黑名单)
413458
if (patt_thread.test(location.pathname) || location.search.indexOf('mod=viewthread') > -1) {
414459
blockUsers('thread');
415460
} else if (location.pathname === '/search.php') {

0 commit comments

Comments
 (0)