Google検索フィルタリング
UI変わっていたので修正。
こういう修正が必要なことを考えるとXPathもまだまだだなー(自分の習熟度的に)とか思う。
//h3[@class]位から書いとけば多少の変更でも耐えられるのかもなぁ。
// ==UserScript== // @name Google検索フィルタリング // @namespace http://d.hatena.ne.jp/kennak/ // @include http://www.google.co.jp/search?* // ==/UserScript== (function(){ var menu = 0; //xpathで指定された箇所に属性としてstyleを追加 function addAttribute(xpath,style){ var node = document.evaluate(xpath,document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null ); var count = 0; if(node.snapshotLength){ //console.log(node.snapshotLength + 'find'); for (var i = 0; i < node.snapshotLength; i++) { //console.log(node.snapshotItem(i)); //node.snapshotItem(i).parentNode.removeChild(node.snapshotItem(i)); node.snapshotItem(i).setAttribute("style", style); } count++; }else{ //console.log('none:' + xpath); } return count; } //xpathで指定された箇所を削除 function deleteItem(xpath){ var node = document.evaluate(xpath,document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null ); var count = 0; if(node.snapshotLength){ for (var i = 0; i < node.snapshotLength; i++) { node.snapshotItem(i).parentNode.removeChild(node.snapshotItem(i)); } count++; }else{ //console.log('none:' + xpath); } return count; } //xpathで指定された箇所にtxtを追加 function addText(xpath,txt){ var node = document.evaluate(xpath,document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null ); var count = 0; if(node.snapshotLength){ if(menu == 0){ menu = node.snapshotItem(0).textContent } node.snapshotItem(0).textContent = menu + txt; }else{ //console.log('none:' + xpath); } //console.log('find:' + count + ':' +xpath); return count; } //指定された単語でフィルタ function searchBlockWord(word){ //詳細を隠す var count = addAttribute('/html/body/div/div/div/div/div/ol/li/h3/a[contains(@href,"' + word + '")]/../../div[@class="s" or @class="s hc"]','display: none;'); addAttribute('/html/body/div/div/div/div/div/ol/li/h3/a[contains(@href,"' + word + '")]/../../h3[@class="r" or @class="r hcw"]/a','font-size: 10pt !important;color: gray !important;') //addAttribute('/html/body/div/div/div/div/div/ol/li/h3/a[contains(@href,"' + word + '")]/../../h3[@class="r" @class="r hcw"]/a','font-color: gray;') //var count = addAttribute('/html/body/div/div/div/div/div/ol/li/h3/a[contains(@href,"' + word + '")]/../../div[@class="s" or @class="s hc"]','display: none;'); //var count = addAttribute('/html/body/div/div/div/div/div/ol/li/h3/a[contains(@href,"' + word + '")]/../../div[@class="s" or @class="s hc"]','color: #fff;'); //GoogleFXの画像を隠す addAttribute('/html/body/div/div/div/div/div/ol/li/h3/a[contains(@href,"' + word + '")]/../../a[@class="gfx-thumb"]','display: none;'); //liクラス縮小 addAttribute('/html/body/div/div/div/ol/li[h3/a[contains(@href,"' + word + '")]]','min-height: 1px;'); //タイトルを隠す //addAttribute('/html/body/div/div/div/div/div/ol/li/h3/a[contains(@href,"' + word + '")]','display: none;'); return count; } var f = function(doc){ //フィルタリングするサイト var BLOCK_WORD=[ '/word/', '/t/', '2ch', '2nn', 'bookmark', 'buzzurl', '/clips/', 'clipp', 'mixi', 'oshiete', 'keyword', 'search', 'twitter', 'tag', 'wassr', 'b.hatena.ne.jp', 'r.hatena.ne.jp', 'clip.livedoor.com', 'clip.nifty.com', 'kotonoha.cc', 'faq.tabitama.co.jp', 'faves.com', 'feed.designlinkdatabase.net', 'flog.jp', 'gaia.luna.tv', 'ikubon.com', 'i.pecipeci.net', 'laszlo.jp', 'kizasi.jp', 'mag2qa.com', 'mark.jolt.jp', 'okyuu.com', 'okwave.jp', 'pookmark.jp', 'questionbox.jp.msn.com', 'qa.moonstar.co.jp', 'renai.sunmarie.com', 's.phpspot.org', 'sqa.scienceportal.jp', 'swik.net', 'tbp.jp', 'tech.newzia.jp', 'wiki.livedoor.com', 'youtube.com', 'ziddy.japan.zdnet.com', '210.132.71.11' ]; //フィルタ実行 var count = 0; for(var i = 0;i < BLOCK_WORD.length;i++){ count += searchBlockWord(BLOCK_WORD[i]); } addText('//*[@id="resultStats"]',' - ' + count + '件削除しました') } f(document); if (window.AutoPagerize) { boot(); } else { window.addEventListener('GM_AutoPagerizeLoaded',boot,false); } function boot(){ window.AutoPagerize.addFilter(function(docs){ docs.forEach(f); }); } })();