FilterinGoogleのバグ修正や機能追加
バグの修正:
- AutoPagerizeで継ぎ足ししたページが全部削除されてしまう単純なミスの修正
- wedataのurlの正規表現に、iやgなどのオプションを設定できなかったバグの修正
追加した機能:
- フィルタリングしないサイトを設定できるようにした
- Greasemonkeyのメニューから、キャッシュをクリアできるようにした。(ただしクリア後リロードが必要。)
FilterinGoogle.user.js
// ==UserScript== // @name FilterinGoogle // @namespace http://d.hatena.ne.jp/javascripter/ // @include http://www.google.co.jp/ // ==/UserScript== var ITEM_DELETE=false;//trueだと削除、falseだと半透明 var NOT_EXE_RULES=[ 'http://b.hatena.ne.jp' ]; var USER_RULES=[ 'http://swik.net/' ];//文字列または正規表現で指定 var IMPORT_URL='http://wedata.net/databases/FilterinGoogle/items.json'; var clear_cache=function(){ GM_setValue('cache',''); } var get_cache=function(callback){ var cache=GM_getValue('cache'); if(cache){ callback(eval(cache)); }else{ GM_xmlhttpRequest({ method:'GET', url:IMPORT_URL, onload:function(res){ var urls=eval(res.responseText).map( function(i){ if(i.data.url.indexOf('/')){ return i.data.url; }else{ var [,pattern,flags]=i.data.url.match(/^\/(.+)\/([gimy]*)$/i); return RegExp(pattern,flags); } }); GM_setValue('cache',uneval(urls)); callback(urls); } }); }; } GM_registerMenuCommand('FilterinGoogle - clear cache',clear_cache); get_cache(function(SITEINFO_RULE){ var RULES=USER_RULES.concat(SITEINFO_RULE); var deleteItem=ITEM_DELETE? function(element){ element.parentNode.removeChild(element); } : function(element){ element.style.opacity='0.5'; }; var gc=function(root){ Array.filter(root.getElementsByClassName('g'), function(item){ var item_url=item.getElementsByClassName('l')[0].href; return NOT_EXE_RULES.every(function(url) item_url[typeof(url)=='string'?'indexOf':'search'](url)==-1 )&& RULES.some(function(url) item_url[typeof(url)=='string'?'indexOf':'search'](url)!=-1 ) } ).forEach(deleteItem); } gc(document.getElementById('res')); window.AutoPagerize&& window.AutoPagerize.addFilter( function(docs){ docs.forEach(gc); } ); });