Skip to content

Instantly share code, notes, and snippets.

@iwinux
Created December 29, 2012 11:17
Show Gist options
  • Save iwinux/4406251 to your computer and use it in GitHub Desktop.
Save iwinux/4406251 to your computer and use it in GitHub Desktop.
豆藤补丁,按类型过滤广播,使用方法:patch 豆藤脚本.js < filter-by-type.patch
--- doubanhelper.user.js 2012-12-19 23:11:33.000000000 +0800
+++ doubanhelper.user.patched.js 2012-12-29 19:02:51.267462938 +0800
@@ -1571,7 +1571,7 @@
//过滤设置项
var toggle = document.createElement('div');
toggle.id = 'myGFWbar';
- toggle.innerHTML = '<span title="已屏蔽广播数 by 豆藤">屏蔽(<em id="blockNum">0</em>)</span> | <a id="showBlock" class="bn-status-more" href="#" title="还原显示被屏蔽广播 by 豆藤" >显示</a> | <a id="setMyGFW" class="bn-status-more" href="#" title="设置屏蔽规则 by 豆藤">设置</a> |&nbsp;';
+ toggle.innerHTML = '<span title="已屏蔽广播数 by 豆藤">屏蔽(<em id="blockNum">0</em>)</span> | <a id="showBlock" class="bn-status-more" href="#" title="还原显示被屏蔽广播 by 豆藤" >显示</a>| <a id="filter-by-type" class="bn-status-more" href="#" title="过滤某些类型的广播">过滤</a> | <a id="setMyGFW" class="bn-status-more" href="#" title="设置屏蔽规则 by 豆藤">设置</a> |&nbsp;';
$$('#mod-status-cate .status-cate')[0].insertBefore(toggle, $$('#mod-status-cate .bn-status-more')[0]);
GM_addStyle('#myGFWbar{display:inline;} #myGFWbar a:hover{background-color:#3377AA;} #myGFWbar span{color:#AAA;} .beBlock{display:none;background-color:#edf4ed;}');
@@ -1586,6 +1586,17 @@
$('#showBlock').innerHTML = '显示';
};
}, false);
+
+ var btnFilter = $('#filter-by-type');
+ btnFilter.addEventListener('click', function () {
+ if (btnFilter.innerHTML === '过滤') {
+ GM_addStyle('.beFiltered{display:none;}');
+ btnFilter.innerHTML = '取消过滤';
+ } else {
+ GM_addStyle('.beFiltered{display:block;}');
+ btnFilter.innerHTML = '过滤';
+ }
+ });
$('#setMyGFW').addEventListener('click', function(){
sw_set(false);
@@ -1603,19 +1614,23 @@
.replace(/([\.\+\?\*\(\)\[\]\{\}\|\^\$\/\\])/g, '\\$1') //转义特殊符号
.replace(/\n/g, '|');
// GM_log(blockWords);
+ var rule, filteredTypes = ['1013', '1026', '5002'];
+
+ if (blockWords !== '') { rule = new RegExp(blockWords, 'i'); }
- if(blockWords != ''){
- var rule = new RegExp(blockWords, 'i');
+ if (rule || filteredTypes.length > 0) {
// GM_log(rule);
//遍历友邻广播
var items = $$('.status-item:not([myGFW])'), blockNum = Number($('#blockNum').innerHTML);
for(var i=0,j=items.length; i<j; i++){
items[i].setAttribute('myGFW', '1');//已处理标记
- if(rule.test(items[i].textContent)){
+ if (rule && rule.test(items[i].textContent)) {
items[i].className += ' beBlock';//屏蔽标记
blockNum++;
- };
+ } else if (filteredTypes.indexOf(items[i].dataset.objectKind) !== -1) {
+ items[i].className += ' beFiltered';
+ };
};
$('#blockNum').innerHTML = blockNum;
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment