f8g

今年のJRA賞の各記者の投票内容を見るGreasemonkey

いまさらだけど。記者名が青くなったら見れる。
追記: ちょっと直した。
data:text/plain;base64,Ly8gPT1Vc2VyU2NyaXB0PT0NCi8vIEBuYW1lICAgICAgIHNob3cgSlJBIGF3YXJkIHZvdGUgb2Ygd3JpdGVycw0KLy8gQG5hbWVzcGFjZSAgaHR0cDovL2QuaGF0ZW5hLm5lLmpwL2FyaWt1aS8NCi8vIEBpbmNsdWRlICAgIGh0dHA6Ly93d3cuanJhLmdvLmpwL25ld3MvMjAwNzAxLzAxMDkwMWEtKi5odG1sDQovLyBAaW5jbHVkZSAgICBodHRwOi8vanJhLmpwL25ld3MvMjAwNzAxLzAxMDkwMWEtKi5odG1sDQovLyBAdmVyc2lvbiAgICAxLjANCi8vID09L1VzZXJTY3JpcHQ9PQ0KDQpjb25zdCBwYWdlVVJMID0gImh0dHA6Ly93d3cuanJhLmdvLmpwL25ld3MvMjAwNzAxLzAxMDkwMWEtJW51bSUuaHRtbCI7DQp2YXIgdGl0bGVzID0gWw0KCSJcdTVFNzRcdTVFQTZcdTRFRTNcdTg4NjhcdTk5QUMiLA0KCSJcdTY3MDBcdTUxMkFcdTc5QzBcdUZGMTJcdTZCNzNcdTcyNjFcdTk5QUMiLA0KCSJcdTY3MDBcdTUxMkFcdTc5QzBcdUZGMTJcdTZCNzNcdTcyNURcdTk5QUMiLA0KCSJcdTY3MDBcdTUxMkFcdTc5QzBcdUZGMTNcdTZCNzNcdTcyNjFcdTk5QUMiLA0KCSJcdTY3MDBcdTUxMkFcdTc5QzBcdUZGMTNcdTZCNzNcdTcyNURcdTk5QUMiLA0KCSJcdTY3MDBcdTUxMkFcdTc5QzBcdUZGMTRcdTZCNzNcdTRFRTVcdTRFMEFcdTcyNjFcdTk5QUMiLA0KCSJcdTY3MDBcdTUxMkFcdTc5QzBcdUZGMTRcdTZCNzNcdTRFRTVcdTRFMEFcdTcyNURcdTk5QUMiLA0KCSJcdTY3MDBcdTUxMkFcdTc5QzBcdTcyMzZcdTUxODVcdTU2RkRcdTc1MjNcdTk5QUMiLA0KCSJcdTY3MDBcdTUxMkFcdTc5QzBcdTc3RURcdThERERcdTk2RTJcdTk5QUMiLA0KCSJcdTY3MDBcdTUxMkFcdTc5QzBcdTMwQzBcdTMwRkNcdTMwQzhcdTMwREJcdTMwRkNcdTMwQjkiLA0KCSJcdTY3MDBcdTUxMkFcdTc5QzBcdTk2OUNcdTVCQjNcdTk5QUMiDQpdOw0KDQp2YXIgcGFnZXNEYXRhID0gW107DQp2YXIgd3JpdGVycyA9IGdldFdyaXRlckVsZW1lbnRzKCk7DQoNCnZhciBkaXNwID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7DQp2YXIgZGlzcE5hbWUgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsNCnZhciBkaXNwTGlzdCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOw0KdmFyIGRpc3BCdXR0b24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJidXR0b24iKTsNCg0KZG9jdW1lbnQuYm9keS5hcHBlbmRDaGlsZChkaXNwKTsNCmRvY3VtZW50LmJvZHkuYXBwZW5kQ2hpbGQoZGlzcEJ1dHRvbik7DQpkaXNwLmFwcGVuZENoaWxkKGRpc3BOYW1lKTsNCmRpc3AuYXBwZW5kQ2hpbGQoZGlzcExpc3QpOw0KDQp3aXRoKGRpc3Auc3R5bGUpew0KCXBvc2l0aW9uID0gImZpeGVkIjsNCglyaWdodCA9ICIwcHgiOw0KCXRvcCA9ICIwcHgiOw0KCWJhY2tncm91bmRDb2xvciA9ICIjZmZmIjsNCglmb250U2l6ZSA9ICIwLjllbSI7DQoJcGFkZGluZyA9ICIxZW0gMHB4IjsNCglNb3pPcGFjaXR5ID0gIjAuOCI7DQp9DQoNCmRpc3BCdXR0b24uaW5uZXJIVE1MID0gIm9wZW4vY2xvc2UiOw0Kd2l0aChkaXNwQnV0dG9uLnN0eWxlKXsNCglwb3NpdGlvbiA9ICJmaXhlZCI7DQoJcmlnaHQgPSAiMHB4IjsNCgl0b3AgPSAiMHB4IjsNCgl6SW5kZXggPSAiMTAiOw0KfQ0KZGlzcEJ1dHRvbi5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIGZ1bmN0aW9uKCl7DQoJY2hhbmdlRGlzcChkaXNwKTsNCn0sIGZhbHNlKTsNCg0KdmFyIGkgPSAwOw0KX29ubG9hZChudWxsKTsNCg0KLyoqKioqKioqKiovDQpmdW5jdGlvbiBfb25sb2FkKHJlcyl7DQoJaWYocmVzICE9IG51bGwpDQoJCXBhZ2VzRGF0YS5wdXNoKHJlcy5yZXNwb25zZVRleHQpOw0KCWkrKzsNCglpZihyZXF1ZXN0VVJMKGkpID09IGxvY2F0aW9uLmhyZWYpew0KCQlwYWdlc0RhdGEucHVzaCgiIik7DQoJCWkrKzsNCgl9DQoJaWYoaSA8IDEyKXsNCgkJR01feG1saHR0cFJlcXVlc3Qoe3VybDogcmVxdWVzdFVSTChpKSwgbWV0aG9kOiAiR0VUIiwgb25sb2FkOiBfb25sb2FkfSk7DQoJfQ0KCWVsc2UNCgkJX29uZmluaXNoKCk7DQp9DQoNCmZ1bmN0aW9uIF9vbmZpbmlzaCgpew0KCWZvcih2YXIgaSA9IDE7IGkgPCB3cml0ZXJzLmxlbmd0aDsgaSsrKXsNCgkJd2l0aCh3cml0ZXJzW2ldLmNoaWxkTm9kZXNbMV0uc3R5bGUpew0KCQkJY29sb3IgPSAiIzAwZiI7DQoJCQljdXJzb3IgPSAicG9pbnRlciI7DQoJCX0NCgkJd3JpdGVyc1tpXS5jaGlsZE5vZGVzWzFdLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgZnVuY3Rpb24oKXsNCgkJCXZhciB2b3RlcyA9IGdldFZvdGVzKHRoaXMuaW5uZXJIVE1MKTsNCgkJCXZhciBsaXN0U3RyID0gW107DQoJCQlmb3IodmFyIGkgPSAwOyBpIDwgdGl0bGVzLmxlbmd0aDsgaSsrKXsNCgkJCQlpZih2b3Rlc1tpXSA9PSAiIikNCgkJCQkJdm90ZXNbaV0gPSB0aGlzLnBhcmVudE5vZGUuY2hpbGROb2Rlc1s1XS5pbm5lckhUTUw7DQoJCQkJbGlzdFN0ci5wdXNoKFt0aXRsZXNbaV0sICI6ICIsICI8YSBocmVmPVwiIiwgcmVxdWVzdFVSTChpKzEpLCAiXCI+Iiwgdm90ZXNbaV0sICI8L2E+Il0uam9pbigiIikpOw0KCQkJfQ0KCQkJZGlzcE5hbWUuaW5uZXJIVE1MID0gdGhpcy5pbm5lckhUTUw7DQoJCQlkaXNwTGlzdC5pbm5lckhUTUwgPSBsaXN0U3RyLmpvaW4oIjxicj5cbiIpOw0KCQl9LCBmYWxzZSk7DQoJfQ0KfQ0KDQpmdW5jdGlvbiBnZXRWb3Rlcyh3cml0ZXJOYW1lKXsNCgl2YXIgdm90ZXMgPSBbXTsNCglmb3IodmFyIGkgPSAwOyBpIDwgdGl0bGVzLmxlbmd0aDsgaSsrKXsNCgkJaWYocmVxdWVzdFVSTChpKSA9PSBsb2NhdGlvbi5ocmVmKXsNCgkJCXZvdGVzLnB1c2goIiIpOw0KCQkJY29udGludWU7DQoJCX0NCgkJdHJ5ew0KCQkJdmFyIGZpcnN0ICA9IHBhZ2VzRGF0YVtpXS5pbmRleE9mKHdyaXRlck5hbWUpOw0KCQkJdmFyIHNlY29uZCA9IHBhZ2VzRGF0YVtpXS5pbmRleE9mKCJcciIsIGZpcnN0KzEpOw0KCQkJdmFyIHRoaXJkICA9IHBhZ2VzRGF0YVtpXS5pbmRleE9mKCJcciIsIHNlY29uZCsxKTsNCgkJCXZhciBmb3VydGggPSBwYWdlc0RhdGFbaV0uaW5kZXhPZigiXHIiLCB0aGlyZCsxKTsNCgkJCXZhciB2b3RlVmFsID0gcGFnZXNEYXRhW2ldLnN1YnN0cmluZyh0aGlyZCs0LCBmb3VydGgtNSkucmVwbGFjZSgvW1x3XHM+PF0vZywgIiIpOw0KCQkJaWYodm90ZVZhbCA9PSAiIikNCgkJCQl2b3RlVmFsID0gIlx1OTc1RVx1NTE2Q1x1OTU4QiI7DQoJCQl2b3Rlcy5wdXNoKHZvdGVWYWwpOw0KCQl9DQoJCWNhdGNoKGUpew0KCQkJdm90ZXMucHVzaCgiIik7DQoJCX0NCgl9DQoJcmV0dXJuIHZvdGVzOw0KfQ0KDQpmdW5jdGlvbiBnZXRXcml0ZXJFbGVtZW50cygpew0KCXZhciB3cml0ZXJFbGVtZW50cyA9IFtdOw0KCXZhciBlbGVtZW50cyA9IGRvY3VtZW50LmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0ciIpOw0KCWZvcih2YXIgaSA9IDA7IGkgPCBlbGVtZW50cy5sZW5ndGg7IGkrKykNCgkJaWYoIGVsZW1lbnRzW2ldLmdldEF0dHJpYnV0ZSgiQ0xBU1MiKSA9PSAiZ3JheTEyIiAmJiBlbGVtZW50c1tpXS5jaGlsZE5vZGVzLmxlbmd0aCA+IDMgKQ0KCQkJd3JpdGVyRWxlbWVudHMucHVzaChlbGVtZW50c1tpXSk7DQoJcmV0dXJuIHdyaXRlckVsZW1lbnRzOw0KfQ0KDQpmdW5jdGlvbiByZXF1ZXN0VVJMKG4pew0KCXJldHVybiBwYWdlVVJMLnJlcGxhY2UoLyVudW0lLywgbnVtKG4pKTsNCn0NCg0KZnVuY3Rpb24gbnVtKG4pew0KCWlmKG4gPCAxMCkgcmV0dXJuICIwIiArIG47DQoJZWxzZSAgICAgICByZXR1cm4gbjsNCn0NCg0KZnVuY3Rpb24gY2hhbmdlRGlzcChlbGVtZW50KXsNCgllbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAoZWxlbWVudC5zdHlsZS5kaXNwbGF5ID09ICJub25lIik/ICJibG9jayI6ICJub25lIjsNCn0=

// ==UserScript==
// @name       show JRA award vote of writers
// @namespace  http://d.hatena.ne.jp/arikui/
// @include    http://www.jra.go.jp/news/200701/010901a-*.html
// @include    http://jra.jp/news/200701/010901a-*.html
// @version    1.0
// ==/UserScript==

const pageURL = "http://www.jra.go.jp/news/200701/010901a-%num%.html";
var titles = [
	"\u5E74\u5EA6\u4EE3\u8868\u99AC",
	"\u6700\u512A\u79C0\uFF12\u6B73\u7261\u99AC",
	"\u6700\u512A\u79C0\uFF12\u6B73\u725D\u99AC",
	"\u6700\u512A\u79C0\uFF13\u6B73\u7261\u99AC",
	"\u6700\u512A\u79C0\uFF13\u6B73\u725D\u99AC",
	"\u6700\u512A\u79C0\uFF14\u6B73\u4EE5\u4E0A\u7261\u99AC",
	"\u6700\u512A\u79C0\uFF14\u6B73\u4EE5\u4E0A\u725D\u99AC",
	"\u6700\u512A\u79C0\u7236\u5185\u56FD\u7523\u99AC",
	"\u6700\u512A\u79C0\u77ED\u8DDD\u96E2\u99AC",
	"\u6700\u512A\u79C0\u30C0\u30FC\u30C8\u30DB\u30FC\u30B9",
	"\u6700\u512A\u79C0\u969C\u5BB3\u99AC"
];

var pagesData = [];
var writers = getWriterElements();

var disp = document.createElement("div");
var dispName = document.createElement("div");
var dispList = document.createElement("div");
var dispButton = document.createElement("button");

document.body.appendChild(disp);
document.body.appendChild(dispButton);
disp.appendChild(dispName);
disp.appendChild(dispList);

with(disp.style){
	position = "fixed";
	right = "0px";
	top = "0px";
	backgroundColor = "#fff";
	fontSize = "0.9em";
	padding = "1em 0px";
	MozOpacity = "0.8";
}

dispButton.innerHTML = "open/close";
with(dispButton.style){
	position = "fixed";
	right = "0px";
	top = "0px";
	zIndex = "10";
}
dispButton.addEventListener("click", function(){
	changeDisp(disp);
}, false);

var i = 0;
_onload(null);

/**********/
function _onload(res){
	if(res != null)
		pagesData.push(res.responseText);
	i++;
	if(requestURL(i) == location.href){
		pagesData.push("");
		i++;
	}
	if(i < 12){
		GM_xmlhttpRequest({url: requestURL(i), method: "GET", onload: _onload});
	}
	else
		_onfinish();
}

function _onfinish(){
	for(var i = 1; i < writers.length; i++){
		with(writers[i].childNodes[1].style){
			color = "#00f";
			cursor = "pointer";
		}
		writers[i].childNodes[1].addEventListener("click", function(){
			var votes = getVotes(this.innerHTML);
			var listStr = [];
			for(var i = 0; i < titles.length; i++){
				if(votes[i] == "")
					votes[i] = this.parentNode.childNodes[5].innerHTML;
				listStr.push([titles[i], ": ", "<a href=\"", requestURL(i+1), "\">", votes[i], "</a>"].join(""));
			}
			dispName.innerHTML = this.innerHTML;
			dispList.innerHTML = listStr.join("<br>\n");
		}, false);
	}
}

function getVotes(writerName){
	var votes = [];
	for(var i = 0; i < titles.length; i++){
		if(requestURL(i) == location.href){
			votes.push("");
			continue;
		}
		try{
			var first  = pagesData[i].indexOf(writerName);
			var second = pagesData[i].indexOf("\r", first+1);
			var third  = pagesData[i].indexOf("\r", second+1);
			var fourth = pagesData[i].indexOf("\r", third+1);
			var voteVal = pagesData[i].substring(third+4, fourth-5).replace(/[\w\s><]/g, "");
			if(voteVal == "")
				voteVal = "\u975E\u516C\u958B";
			votes.push(voteVal);
		}
		catch(e){
			votes.push("");
		}
	}
	return votes;
}

function getWriterElements(){
	var writerElements = [];
	var elements = document.getElementsByTagName("tr");
	for(var i = 0; i < elements.length; i++)
		if( elements[i].getAttribute("CLASS") == "gray12" && elements[i].childNodes.length > 3 )
			writerElements.push(elements[i]);
	return writerElements;
}

function requestURL(n){
	return pageURL.replace(/%num%/, num(n));
}

function num(n){
	if(n < 10) return "0" + n;
	else       return n;
}

function changeDisp(element){
	element.style.display = (element.style.display == "none")? "block": "none";
}