最近のGoogle周りGreacemonkey

Google Reader用スタイル

なんかStylishで変更掛けてもJavaScriptで上書きされるのでこうするしかないぽい…
適当に

からスクリプトぱくってほとんどデフォルトの状態に修正(面倒なので名前とかもそのまま)。
あとはサイドバー狭くしたりとか。

// ==UserScript==
// @author              Scott Cowan
// @name                Google Reader Minimalistic
// @namespace          http://google.com/reader/userscript
// @description           Removes all the whitespace from Google Reader and just gives you the news
// @include       http://www.google.tld/reader/*
// @include       https://www.google.tld/reader/*
// @include       http://reader.google.tld/reader/*
// @include       https://reader.google.tld/reader/*
// ==/UserScript==
// Google Reader Minimalistic
// Scott Cowan http://userscripts.org/users/32932

(function() {
//"logo-container","global-info","gbar","viewer-header","chrome-header","search",
 var ids = ["viewer-footer"];

 function toggle_gr ()
 {
   var length = ids.length;
   var is_visible = document.getElementById(ids[0]).style.display != "none";

   for (var i=0; i<length; i++){
     if(document.getElementById(ids[i]) != null)
		document.getElementById(ids[i]).style.display = is_visible?"none":"block";
   }
   GM_addStyle(".gbh { display:none !important; }");  //Hide dividing line
   GM_addStyle("#entries .entry {padding-top: 2px}");
   GM_addStyle(".card-common {margin: 0 2px}");
   GM_addStyle(".entry .entry-source-title {font-size:110%;}");
   GM_addStyle(".entry .entry-title {font-size:120%;}");
   GM_addStyle(".card .card-content {padding: 2px 1px 2px 2px;}");
   GM_addStyle("#current-entry .card .card-content {padding: 2px 1px 2px 2px;}");
   GM_addStyle(".entry .entry-container {padding-bottom: 0;}");
   GM_addStyle(".entry .entry-body {padding-top: 0;}");
   GM_addStyle(".entry .entry-actions {padding: 2px;}");
   GM_addStyle('#sub-tree { width: 195px ! important; }');
   GM_addStyle('#nav { width: 200px ! important; }');
   GM_addStyle('#chrome { margin-left: 222px ! important; } '); 
   GM_addStyle('#search { left: 222px ! important; } ');
   GM_addStyle('#chrome-header { padding:0px 0px; } ');
   GM_addStyle('#viewer-top-controls { padding:0px 0px; } ');


   if(is_visible){
	var logo = document.getElementById('main');
	logo.style.top = '65px';	

	var logo = document.getElementById('chrome');
	logo.style.paddingTop = '0';
	
	var logo = document.getElementById('nav');
	logo.style.paddingTop = '0';
   }
   else {
	var logo = document.getElementById('main');
	logo.style.top = '65px';

	var logo = document.getElementById('chrome');
	logo.style.paddingTop = '0';
	
	var logo = document.getElementById('nav');
	logo.style.paddingTop = '0';
   }
}

 function GRT_key(event) {
   element = event.target;
   elementName = element.nodeName.toLowerCase();
   if (elementName == "input") {
     typing = (element.type == "text" || element.type == "password");
   } else {
     typing = (elementName == "textarea");
   }
   if (typing) return true;
   if (String.fromCharCode(event.which)=="W" && !event.ctrlKey && !event.altKey && !event.metaKey) {
     toggle_gr();
     try {
       event.preventDefault();
     } catch (e) {
     }
     return false;
   }
   return true;
 }

 document.addEventListener("keydown", GRT_key, false);
 toggle_gr();
 
var accountname = document.getElementById('email-address');
document.title = document.title + " | " + accountname.innerHTML + " | ";
 
 })();

Google検索Greacemonkey

ElementをdeleteするとGoogle検索ツールの挙動がおかしくなるので修正。
フィルタリングされたものはタイトルだけ表示するようにした。
あとは色とか薄くできたらなぁ…

// ==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 = deleteItem('/html/body/div/div/div/ol/li/h3/a[contains(@href,"' + word + '")]/../..');
		//var count = deleteItem('/html/body/div/div/div/ol/li/h3/a[contains(@href,"' + word + '")]/../../div[@class="s"]','color: #fff;');

//		var count = addAttribute('/html/body/div/div/div/ol/li/h3/a[contains(@href,"' + word + '")]/../..//*','display: none;');


		//詳細を隠す
		var count = addAttribute('/html/body/div/div/div/ol/li/h3/a[contains(@href,"' + word + '")]/../../div[@class="s" or @class="s hc"]','display: none;');
		//GoogleFXの画像を隠す
		addAttribute('/html/body/div/div/div/ol/li/h3/a[contains(@href,"' + word + '")]/../../a[@class="tn"]','display: none;');
		//liクラス縮小
		addAttribute('/html/body/div/div/div/ol/li[h3/a[contains(@href,"' + word + '")]]','min-height: 10px;');
		//タイトルを隠す
		//addAttribute('/html/body/div/div/div/ol/li/h3/a[contains(@href,"' + word + '")]','display: none;');

		return count;
	}

	var f = function(doc){
		//フィルタリングするサイト
		var BLOCK_WORD=[
			'/t/',
			'2ch',
			'2nn',
			'bookmark',
			'buzzurl',
			'/clips/',
			'clipp',
			'mixi',
			'oshiete',
			'keyword',
			'search',
			'twitter',
			'tag',
			'wassr',
			'b.hatena.ne.jp',
			'clip.livedoor.com',
			'clip.nifty.com',
			'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="ssb"]/p',' - ' + count + '件削除しました')
	}

	f(document);
	if (window.AutoPagerize) {
	  boot();
	} else {
	  window.addEventListener('GM_AutoPagerizeLoaded',boot,false);
	}

	function boot(){
	  window.AutoPagerize.addFilter(function(docs){
	    docs.forEach(f);
	  });
	}
})();