読者です 読者をやめる 読者になる 読者になる

MediaLab Love Chapter 2

Assistance of MediaLab Love about Javascript test and more...

livedoor Readerにフィードを追加するとき、自動的にチェックするgreasemonkey

を作りました。

// ==UserScript==
// @name          livedoor Reader auto checker
// @namespace     http://d.hatena.ne.jp/Koumei_S/
// @description	  Checks one checkbox automatically when you add feed to livedoor Reader.
// @include       http://reader.livedoor.com/subscribe/*
// ==/UserScript==

(function(){
	var checkboxnum;
	var usernum = new Array();
	var spannum = document.getElementsByTagName("span");
	//フィード数が1つならばなにもしない
	//(spannum=フィード数+[既に登録しています]の数)
	if(spannum.length==1){
		return;
	}
	for(i=0;i<spannum.length;i++){
		//[既に登録しています]ならばなにもしない
		if(spannum[i].firstChild.nodeValue == "\uFF3B\u65E2\u306B\u767B\u9332\u3057\u3066\u3044\u307E\u3059\uFF3D"){
			return;
		}
		usernum.push(spannum[i].firstChild.nodeValue.match(/\d{1,5}/));
	}
	checkboxnum = calcheckboxnum(usernum);
	spannum[checkboxnum].parentNode.firstChild.checked = true;
})();
function calcheckboxnum(usernum){
	var maxusernum=usernum[0];
	var maxuserfeed=0;
	for(j=1;j<usernum.length;j++){
		if(maxusernum < usernum[j]){
			maxusernum = usernum[j];
			maxuserfeed = j;
		}
	}
	return maxuserfeed;
}

チェックするフィードは、ユーザー数の最も多いフィードにしました。なぜならばユーザー数が0のフィードがあった場合、それを選択しないほうがlivedoor Readerがクロールするファイルが減り、負担が少なくなると思ったからです。
ユーザー数が同じ場合、リストの一番上をチェックします。
いくらプログラマの美徳が怠惰であるとはいえ、こんなもの使う人がいるかどうか疑問ですが、一応公開します。