日本語のページを除外してGoogle検索するGreaseMonkey

Googleで「ウェブ全体から検索」を選んで検索しても、結果が「日本語のページから検索」とほとんど変わらなかった。カッとなって、ついGoogle検索のページに「日本語以外のページを検索」というラジオボタンを作成するGreaseMonkeyスクリプトを作ってしまった。Firefox というかグリモン便利すぎる。

https://github.com/paulownia/greasemonkey/blob/master/googleNotInJapanese.user.js

lr=-lang_ja というパラメータを渡すと日本語で書かれたページを除外して検索できるらしいです。

http://www.google.co.jp/search?q=yahoo&lr=-lang_ja

追記(2009-04-17)

スクリプト名を変更しました。

ソース

// ==UserScript==
// @name           GoogleNotInJapanese
// @namespace      http://nullpon.moe/
// @description    Appends a radio option excluding pages in Japanese to google website. 
// @include        http://www.google.co.jp/*
// @include        http://www.google.com/*
// ==/UserScript==
var j = document.getElementById("il");
if (j) {
	var name = j.getAttribute("name");
	var lang = j.getAttribute("value");

	if (lang.indexOf("-lang_ja") > -1) {
		if (lang.indexOf("lr=") == 0) {
			j.setAttribute("value", "lr=lang_ja");
		} else {
			j.setAttribute("value", "lang_ja");
		}	
	}
	
	var labels = document.getElementsByTagName("label");
	Array.forEach(labels, function(e) {
		["から検索", "のページを検索"].forEach(function(word) {
			var index = e.textContent.indexOf(word);
			if (index > -1) {
				e.textContent = e.textContent.substring(0,index);
			}
		});
	});

	
	var langVal = "-lang_ja";
	var langLabel = " 日本語以外 ";
	if (lang.indexOf("lr=") > -1) {
		langVal = "lr=" + langVal;
	}
	
	var label = document.createElement("label");
	label.setAttribute("for", "li2");
	label.textContent = langLabel;

	var input = document.createElement("input");
	input.setAttribute("id", "li2");
	input.setAttribute("name", name);
	input.setAttribute("value", langVal);
	input.setAttribute("type", "radio");
	
	if (location.search.indexOf("-lang_ja") > -1) {
		input.checked = true;
	} else if (location.search.indexOf("lang_ja") > -1) {
		j.checked = true;
	}
	
	var p = j.parentNode;
	p.appendChild(input);
	p.appendChild(label);
}