-
Notifications
You must be signed in to change notification settings - Fork 5
Expand file tree
/
Copy pathckylin-bilibili-comments-filter.user.js
More file actions
163 lines (149 loc) · 4.58 KB
/
Copy pathckylin-bilibili-comments-filter.user.js
File metadata and controls
163 lines (149 loc) · 4.58 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
// ==UserScript==
// @name 哔哩哔哩-评论过滤
// @namespace ckylin-bilibili-comments-filter
// @version 1.0
// @description 过滤指定用户或关键词
// @author CKylinMC
// @include *.bilibili.com/*
// @grant GM.getValue
// @grant GM.setValue
// @grant GM.info
// @grant GM.registerMenuCommand
// @grant GM_getValue
// @grant GM_setValue
// @grant GM_info
// @grant GM_registerMenuCommand
// @require https://cdn.jsdelivr.net/npm/jquery@3.4.0/dist/jquery.min.js
// @license GPL-3.0-only
// ==/UserScript==
GM_registerMenuCommand("添加屏蔽的用户ID", () => {
CK_askForNewBlockedUID();
});
GM_registerMenuCommand("移除屏蔽的用户ID", () => {
CK_askForDelBlockedUID();
alert("刷新生效");
});
GM_registerMenuCommand("添加屏蔽的关键词", () => {
CK_askForNewBlockedWord();
});
GM_registerMenuCommand("移除屏蔽的关键词", () => {
CK_askForDelBlockedWord();
alert("刷新生效");
});
GM_registerMenuCommand("显示所有屏蔽", () => {
CK_showAllBlocked();
});
GM_registerMenuCommand("重置", () => {
CK_initBlockedValues(true);
alert("刷新生效");
});
window.ck_block_comments_data = {
uselocal: true,
uids: [],
words: []
};
async function CK_initBlockedValues(forcereset = false) {
if (window.ck_block_comments_data.uselocal) return;
var UIDS = await GM.getValue("ck_blocked_uids");
if (UIDS == undefined || forcereset) UIDS = [];
window.ck_block_comments_data.uids = UIDS;
var WORDS = await GM.getValue("ck_blocked_words");
if (WORDS == undefined || forcereset) WORDS = [];
window.ck_block_comments_data.words = WORDS;
CK_saveBlockedData();
}
async function CK_saveBlockedData() {
GM.setValue("ck_blocked_uids", window.ck_block_comments_data.uids);
GM.setValue("ck_blocked_words", window.ck_block_comments_data.words);
}
function CK_isEmpty(val) {
if (val == undefined) return true;
if (val == null) return true;
if (val.length == 0) return true;
return false;
}
function CK_askForNewBlockedUID() {
var blocked = prompt("添加要屏蔽的用户ID");
if (!CK_isEmpty(blocked)) {
CK_addNewBlockedUID(blocked);
}
}
function CK_askForDelBlockedUID() {
var blocked = prompt("输入要取消屏蔽的用户ID");
if (!CK_isEmpty(blocked)) {
CK_delBlockedUID(blocked);
}
}
function CK_askForNewBlockedWord() {
var blocked = prompt("添加要屏蔽的关键词");
if (!CK_isEmpty(blocked)) {
CK_addNewBlockedWord(blocked);
}
}
function CK_askForDelBlockedWord() {
var blocked = prompt("输入要取消屏蔽的关键词");
if (!CK_isEmpty(blocked)) {
CK_delBlockedWord(blocked);
}
}
function CK_showAllBlocked() {
var uids = CK_getAllBlockedUID();
var words = CK_getAllBlockedWord();
var content = "被屏蔽的UID:\n";
content += uids.join("\n")
content += "\n被屏蔽的关键字:\n";
content += words.join("\n");
alert(content);
}
function CK_addNewBlockedUID(UID) {
window.ck_block_comments_data.uids.push(UID);
CK_saveBlockedData();
}
function CK_delBlockedUID(UID) {
if (window.ck_block_comments_data.uids.contains(UID)) {
window.ck_block_comments_data.uids.remove(UID);
CK_saveBlockedData();
}
}
function CK_getAllBlockedUID() {
return window.ck_block_comments_data.uids;
}
function CK_addNewBlockedWord(word) {
window.ck_block_comments_data.words.push(word);
CK_saveBlockedData();
}
function CK_delBlockedWord(word) {
if (window.ck_block_comments_data.words.contains(word)) {
window.ck_block_comments_data.words.remove(word);
CK_saveBlockedData();
}
}
function CK_getAllBlockedWord() {
return window.ck_block_comments_data.words;
}
function CK_removeAllBlockedComments() {
if (jQuery) {
var UIDs = CK_getAllBlockedUID();
UIDs.forEach(e => {
jQuery("[data-usercard-mid='" + e + "']").parents(".reply-wrap").remove();
});
var words = CK_getAllBlockedWord();
words.forEach(e => {
jQuery(".reply-wrap p:contains('" + e + "')").parents(".reply-wrap").remove()
jQuery(".reply-wrap span:contains('" + e + "')").parents(".reply-wrap").remove()
});
}
}
function CK_startLookingForBlockedComments() {
CK_initBlockedValues();
if ('blockedcommentaddon' in window) {
return;
}
window.blockedcommentaddon = true;
setInterval(() => {
CK_removeAllBlockedComments();
}, 2000);
}
jQuery(() => {
CK_startLookingForBlockedComments()
});