1
1
// ==UserScript==
2
- // @name 首页与超展开内容屏蔽
3
- // @namespace tv.bgm.cedar.homepagerakuencontentblacklist
4
- // @version 2.2
2
+ // @name Bangumi多页面内容屏蔽
3
+ // @namespace tv.bgm.cedar.bangumicontentblacklist
4
+ // @version 2.2.1
5
5
// @description 根据指定关键词或ID屏蔽首页热门条目, 小组讨论
6
6
// @author Cedar
7
7
// @include /^https?://((bangumi|bgm)\.tv|chii\.in)/$/
@@ -840,7 +840,7 @@ async function rakuenFilter() {
840
840
parsedList = filteredList . map ( x => x . topicId ) ;
841
841
indexes = await model . IDFilter ( parsedList , null , true ) ;
842
842
for ( let idx of indexes ) {
843
- itemList [ idx ] . style . display = "none" ;
843
+ filteredList [ idx ] . node . style . display = "none" ;
844
844
}
845
845
846
846
// 筛选小组的标题关键词
@@ -941,6 +941,7 @@ async function rakuenFilter() {
941
941
}
942
942
}
943
943
944
+ // discover filter 筛选“随便看看”
944
945
async function discoverFilter ( ) {
945
946
let model = await Model . build ( ) ;
946
947
@@ -998,7 +999,7 @@ class ConfigUI {
998
999
let action = e . target . dataset . action ;
999
1000
if ( action ) {
1000
1001
let el = e . target . closest ( '.content-blacklist-config>li' ) ;
1001
- if ( el ) this [ action ] ( el ) ;
1002
+ if ( el ) this [ `_action_ ${ action } ` ] ( el ) ;
1002
1003
}
1003
1004
}
1004
1005
@@ -1020,7 +1021,11 @@ class ConfigUI {
1020
1021
let itemListEl = createElement ( 'ul' , { className : 'content-blacklist-config' } , [
1021
1022
...items . map ( this . _toConfigItemEl ) ,
1022
1023
createElement ( 'li' , { className : 'new' } , [
1023
- createElement ( 'button' , { className : 'new-button' , dataset : { action : 'new' } , textContent : '新增' } , null , null )
1024
+ createElement ( 'button' , {
1025
+ className : 'new-button' ,
1026
+ dataset : { action : 'new' } ,
1027
+ textContent : '新增' ,
1028
+ } )
1024
1029
] )
1025
1030
] ) ;
1026
1031
return createElement (
@@ -1045,17 +1050,19 @@ class IDConfigUI extends ConfigUI {
1045
1050
* 不过,注意!目前的功能还比较简单,暂时不需要“编辑”“更新”“取消”按钮, 也不需要edit-wrapper
1046
1051
* 只需要删除功能
1047
1052
* 布局如下
1048
- <li class='item'>
1053
+ <li class='item' data-type='id.group_topic' data-id='123456' >
1049
1054
<div class='edit-wrapper'>
1055
+ <!-- 暂时不需要与编辑相关的元素
1050
1056
<form>
1051
1057
<label>
1052
1058
<span>链接:</span>
1053
1059
<input name='url' class='edit-input'>
1054
1060
</label>
1055
1061
</form>
1062
+ -->
1056
1063
</div>
1057
- <div class='type' data-type='id.group_topic' >小组帖子ID</div>
1058
- <div class='id', data-id='123456' >
1064
+ <div class='type'>小组帖子ID</div>
1065
+ <div class='id'>
1059
1066
<a href='/group/topic/123456'>123456</a></div>
1060
1067
</div>
1061
1068
<div class='action'>
@@ -1082,13 +1089,14 @@ class IDConfigUI extends ConfigUI {
1082
1089
], null
1083
1090
);
1084
1091
*/
1085
- let typeWrapper = createElement (
1086
- 'div' , { className : 'type' , dataset : { type : item . type } } ,
1087
- [ ID_TYPE . toReadableString ( item . type ) ] ) ;
1092
+ let typeWrapper = createElement ( 'div' , {
1093
+ className : 'type' ,
1094
+ textContent : ID_TYPE . toReadableString ( item . type )
1095
+ } ) ;
1088
1096
1089
1097
let idWrapper = createElement (
1090
- 'div' , { className : 'id' , dataset : { id : item . id } } ,
1091
- [ createElement ( 'a' , { href : url , target : '_blank' , rel : 'noreferrer noopener' } , [ item . id ] ) ]
1098
+ 'div' , { className : 'id' } ,
1099
+ [ createElement ( 'a' , { href : url , target : '_blank' , rel : 'noreferrer noopener' , textContent : item . id } ) ]
1092
1100
) ;
1093
1101
1094
1102
let actionWrapper = createElement ( 'div' , { className : 'action' } , [
@@ -1099,7 +1107,10 @@ class IDConfigUI extends ConfigUI {
1099
1107
createElement ( 'button' , { className : 'delete-button' , dataset : { action : 'delete' } , textContent : '删除' } ) ,
1100
1108
] ) ;
1101
1109
1102
- let li = createElement ( 'li' , { className : 'item' } , [ typeWrapper , idWrapper , actionWrapper ] ) ;
1110
+ let li = createElement (
1111
+ 'li' , { className : 'item' , dataset : { type : item . type , id : item . id } } ,
1112
+ [ typeWrapper , idWrapper , actionWrapper ]
1113
+ ) ;
1103
1114
return li ;
1104
1115
}
1105
1116
@@ -1140,13 +1151,13 @@ class IDConfigUI extends ConfigUI {
1140
1151
return li ;
1141
1152
}
1142
1153
1143
- new ( li ) {
1154
+ _action_new ( li ) {
1144
1155
let el = this . _getAddNewEl ( ) ;
1145
1156
li . insertAdjacentElement ( 'beforebegin' , el ) ;
1146
1157
//li.parentElement.removeChild(li);
1147
1158
}
1148
1159
1149
- async add ( li ) {
1160
+ async _action_add ( li ) {
1150
1161
let buttons = li . querySelectorAll ( 'button' ) ;
1151
1162
buttons . forEach ( btn => { btn . disabled = true ; } ) ;
1152
1163
let url = new FormData ( li . querySelector ( '.edit-wrapper form' ) ) . get ( 'url' ) ;
@@ -1170,15 +1181,15 @@ class IDConfigUI extends ConfigUI {
1170
1181
li . parentElement . removeChild ( li ) ;
1171
1182
}
1172
1183
1173
- cancelAdd ( li ) {
1184
+ _action_cancelAdd ( li ) {
1174
1185
li . parentElement . removeChild ( li ) ;
1175
1186
}
1176
1187
1177
- async delete ( li ) {
1188
+ async _action_delete ( li ) {
1178
1189
let buttons = li . querySelectorAll ( 'button' ) ;
1179
1190
buttons . forEach ( btn => { btn . disabled = true ; } ) ;
1180
- let type = li . querySelector ( 'div.type' ) . dataset . type ;
1181
- let id = li . querySelector ( 'div.id' ) . dataset . id ;
1191
+ let type = li . dataset . type ;
1192
+ let id = li . dataset . id ;
1182
1193
try {
1183
1194
await this . _model . deleteID ( { type, id} ) ;
1184
1195
} catch ( e ) {
@@ -1206,15 +1217,17 @@ class KeywordConfigUI extends ConfigUI {
1206
1217
* 不过,注意!目前的功能还比较简单,暂时不需要“编辑”“更新”“取消”按钮, 也不需要edit-wrapper
1207
1218
* 只需要删除功能
1208
1219
* 布局如下
1209
- <li>
1220
+ <li data-type='kw.group_topic' data-match='里番'>
1221
+ <!-- 暂时不需要与编辑相关的元素
1210
1222
<div class='edit-wrapper'>
1211
1223
<label>
1212
1224
<span>关键词:</span>
1213
1225
<input name='match' class='edit-input'>
1214
1226
</label>
1215
1227
</div>
1228
+ -->
1216
1229
<div class='type'>小组帖子</div>
1217
- <div class='match' data-match='里番' >里番</div>
1230
+ <div class='match'>里番</div>
1218
1231
<div class='action'>
1219
1232
<button class='update-button' data-action='update'>更新</button>
1220
1233
<button class='cancel-button' data-action='cancel'>取消</button>
@@ -1231,13 +1244,12 @@ class KeywordConfigUI extends ConfigUI {
1231
1244
// createElement('input', {name: 'url', className: 'edit-input', val: url})
1232
1245
// ])
1233
1246
// ]);
1234
- let typeWrapper = createElement (
1235
- 'div' , { className : 'type' , dataset : { type : item . type } } ,
1236
- [ KW_TYPE . toReadableString ( item . type ) ] ) ;
1247
+ let typeWrapper = createElement ( 'div' , {
1248
+ className : 'type' ,
1249
+ textContent : KW_TYPE . toReadableString ( item . type )
1250
+ } ) ;
1237
1251
1238
- let kwWrapper = createElement (
1239
- 'div' , { className : 'match' , dataset : { match : item . match } } , [ item . match ]
1240
- ) ;
1252
+ let kwWrapper = createElement ( 'div' , { className : 'match' , textContent : item . match } ) ;
1241
1253
1242
1254
let actionWrapper = createElement ( 'div' , { className : 'action' } , [
1243
1255
// 暂时不需要与编辑相关的按钮
@@ -1247,7 +1259,10 @@ class KeywordConfigUI extends ConfigUI {
1247
1259
createElement ( 'button' , { className : 'delete-button' , dataset : { action : 'delete' } , textContent : '删除' } ) ,
1248
1260
] ) ;
1249
1261
1250
- let li = createElement ( 'li' , { className : 'item' } , [ typeWrapper , kwWrapper , actionWrapper ] ) ;
1262
+ let li = createElement (
1263
+ 'li' ,
1264
+ { className : 'item' , dataset : { type : item . type , match : item . match } } ,
1265
+ [ typeWrapper , kwWrapper , actionWrapper ] ) ;
1251
1266
return li ;
1252
1267
}
1253
1268
@@ -1282,7 +1297,7 @@ class KeywordConfigUI extends ConfigUI {
1282
1297
let optionEl = createElement (
1283
1298
'select' , { name : 'type' } ,
1284
1299
Object . values ( KW_TYPE ) . filter ( v => ! ( v instanceof Function ) )
1285
- . map ( v => createElement ( 'option' , { value : v } , [ KW_TYPE . toReadableString ( v ) ] ) )
1300
+ . map ( v => createElement ( 'option' , { value : v , textContent : KW_TYPE . toReadableString ( v ) } ) )
1286
1301
) ;
1287
1302
let editWrapper = createElement ( 'div' , { className : 'edit-wrapper' } , [
1288
1303
createElement ( 'form' , null , [
@@ -1303,13 +1318,13 @@ class KeywordConfigUI extends ConfigUI {
1303
1318
return li ;
1304
1319
}
1305
1320
1306
- new ( li ) {
1321
+ _action_new ( li ) {
1307
1322
let el = this . _getAddNewEl ( ) ;
1308
1323
li . insertAdjacentElement ( 'beforebegin' , el ) ;
1309
1324
//li.parentElement.removeChild(li);
1310
1325
}
1311
1326
1312
- async add ( li ) {
1327
+ async _action_add ( li ) {
1313
1328
let buttons = li . querySelectorAll ( 'button' ) ;
1314
1329
buttons . forEach ( btn => { btn . disabled = true ; } ) ;
1315
1330
let fd = new FormData ( li . querySelector ( '.edit-wrapper form' ) ) ;
@@ -1334,15 +1349,15 @@ class KeywordConfigUI extends ConfigUI {
1334
1349
li . parentElement . removeChild ( li ) ;
1335
1350
}
1336
1351
1337
- cancelAdd ( li ) {
1352
+ _action_cancelAdd ( li ) {
1338
1353
li . parentElement . removeChild ( li ) ;
1339
1354
}
1340
1355
1341
- async delete ( li ) {
1356
+ async _action_delete ( li ) {
1342
1357
let buttons = li . querySelectorAll ( 'button' ) ;
1343
1358
buttons . forEach ( btn => { btn . disabled = true ; } ) ;
1344
- let type = li . querySelector ( 'div.type' ) . dataset . type ;
1345
- let match = li . querySelector ( 'div.match' ) . dataset . match ;
1359
+ let type = li . dataset . type ;
1360
+ let match = li . dataset . match ;
1346
1361
try {
1347
1362
await this . _model . deleteKeyword ( { type, match} ) ;
1348
1363
} catch ( e ) {
@@ -1391,11 +1406,11 @@ class RakuenMenu {
1391
1406
let action = e . target . dataset . action ;
1392
1407
if ( action ) {
1393
1408
let el = e . target . closest ( 'li' ) ;
1394
- if ( el ) this [ action ] ( el ) ;
1409
+ if ( el ) this [ `_action_ ${ action } ` ] ( el ) ;
1395
1410
}
1396
1411
}
1397
1412
1398
- async ban ( li ) {
1413
+ async _action_ban ( li ) {
1399
1414
let buttons = li . querySelectorAll ( 'button.content-blacklist-rakuen-button' ) ;
1400
1415
buttons . forEach ( btn => { btn . disabled = true ; } ) ;
1401
1416
let item = Parser . rakuen . topicIdParser ( li ) ;
0 commit comments