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);
	  });
	}
})();