最近質問してはキャンセルを繰り返すユーザーがいてうざいので、特定のユーザーの質問を見えなくするグリースモンキーをお願いします。
このグリースモンキーに機能追加願います。
http://q.hatena.ne.jp/1266427057
不適切な回答を複数アカウントで行ったユーザーがポイントのアマゾンギフト券への交換を断られた事件がありました。
http://hatena.g.hatena.ne.jp/hatenasupport/20090212/1234402678
【はてなスタッフポイント詐欺事件】といってyashida333aさんが騒いでいたやつです。
http://q.hatena.ne.jp/1234504218
あやなんとかさんも、同じURLをあげてましたね。
http://q.hatena.ne.jp/1263787963
同じ人では無いと信じています。
もしかして*ahooさん本人ですか?違いますよね。私は違うと信じています。
*ahooさんは優良回答者だが別の優良回答者に別アカウントでしつこくストーカー行為を繰り返し、はてなから除名になった人です。
http://www1.atwiki.jp/kiichigo/pages/14.html
こちらにまとめwikiがあります。
はてなの公式発表
http://hatena.g.hatena.ne.jp/hatenasupport/20090831
複数メインアカウントを不正利用した嫌がらせ行為について
新たなスクリプトを導入したくないということもあると思うので作ってみました。
上のコメントのスクリプトと、回答したスクリプトの異なる点は以下です。
追加場所は、
以前追加した部分よりも前に追加するか、プログラム全体を囲んでいる(function() {})();の外に追加してください。
不可視リストの書き方は、
var list = ["hoge", "hatena", "fuga"];
のように書いて下さい。
if(/^http:\/\/q\.hatena\.ne\.jp\/list/.test(location)) { function hide(doc) { var list = ["uml", "tooh22", "a6e", "nigel5", "isogaya", "ayaaya22", "quict"]; var selector = list.map(function(e){ return "a[href='/" + e + "/']"; }); var user = doc.querySelectorAll('td.usercell > ' + selector); for(var i=0; i<user.length; i++) { user[i].parentNode.parentNode.style.display = "none"; } } hide(document); // AutoPagerize対応 document.body.addEventListener('AutoPagerize_DOMNodeInserted',function(evt){ hide(evt.target); }, false); }
ayayaさんの質問はたしかにうざいですが、根拠もなく勝手にきめつけているあなたの質問もうざいです。
あなたも「質問者拒否スクリプト」に入れておきます。http://www
なんだ、ハムスタだったのか。
新たなスクリプトを導入したくないということもあると思うので作ってみました。
上のコメントのスクリプトと、回答したスクリプトの異なる点は以下です。
追加場所は、
以前追加した部分よりも前に追加するか、プログラム全体を囲んでいる(function() {})();の外に追加してください。
不可視リストの書き方は、
var list = ["hoge", "hatena", "fuga"];
のように書いて下さい。
if(/^http:\/\/q\.hatena\.ne\.jp\/list/.test(location)) { function hide(doc) { var list = ["uml", "tooh22", "a6e", "nigel5", "isogaya", "ayaaya22", "quict"]; var selector = list.map(function(e){ return "a[href='/" + e + "/']"; }); var user = doc.querySelectorAll('td.usercell > ' + selector); for(var i=0; i<user.length; i++) { user[i].parentNode.parentNode.style.display = "none"; } } hide(document); // AutoPagerize対応 document.body.addEventListener('AutoPagerize_DOMNodeInserted',function(evt){ hide(evt.target); }, false); }
全てつなげるとこうなるわけですね。ありがとうございます。
// ==UserScript== // @name Hatena Question Dishonest Checker // @include http://q.hatena.ne.jp/* // @namespace http://www.bulkitem.com/userscript/hatena/ // @description Hatena Question // @version 0.1.1 // ==/UserScript== if(/^http:¥/¥/q¥.hatena¥.ne¥.jp¥/list/.test(location)) { function hide(doc) { var list = ["hatena1","hatena2"]; var selector = list.map(function(e){ return "a[href='/" + e + "/']"; }); var user = doc.querySelectorAll('td.usercell > ' + selector); for(var i=0; i<user.length; i++) { user[i].parentNode.parentNode.style.display = "none"; } } hide(document); // AutoPagerize対応 document.body.addEventListener('AutoPagerize_DOMNodeInserted',function(evt){ hide(evt.target); }, false); } (function() { var rows = document.getElementsByClassName('countcell'); for (var i=0; i<rows.length; i++) { var td = rows[i].parentNode.getElementsByTagName('td'); if (Number(td[2].textContent) == 0) { td[2].style.backgroundColor = '#FFF68F'; td[3].style.backgroundColor = '#FFF68F'; td[4].style.backgroundColor = '#FFF68F'; continue; } var accept_rate = Math.round(Number(td[3].textContent) / Number(td[2].textContent) * 10000) / 100; var iruka_rate = Math.round(Number(td[4].textContent) / Number(td[2].textContent) * 10000) / 100; td[3].innerHTML = td[3].textContent + ' (' + accept_rate.toString() +'%)'; td[4].innerHTML = td[4].textContent + ' (' + iruka_rate.toString() + '%)'; if (accept_rate < 80) { td[3].style.backgroundColor = '#FFC0CB'; } if (accept_rate >= 90) { td[3].style.backgroundColor = '#C1FFC1'; } if (iruka_rate >= 10) { td[4].style.backgroundColor = '#C1FFC1'; } if (iruka_rate == 0) { td[4].style.backgroundColor = '#FFF68F'; } //------追加 if(!document.querySelector(".question-information")) return; var userUrl = document.querySelectorAll("td.usercell > a"); var userUrl = document.querySelectorAll("td.usercell > a"); for(var i=0; i < userUrl.length; i++) { (function(i){ GM_xmlhttpRequest({ method: "GET", url: userUrl[i].href.replace(/q/,"www"), headers: {"User-Agent":"Mozilla/5.0", "Accept":"text/xml"}, onload: function(res) { var div = document.createElement("div"); div.innerHTML = res.responseText; var ugomemo = document.evaluate('//div[@class="hatena-modulebody"]//a[starts-with(@href,"http://ugomemo.hatena.ne.jp")]', div, null, 9, null).singleNodeValue; ugomemo.setAttribute("style","text-decoration:none"); //追加 if(ugomemo) { var img = ugomemo.getElementsByTagName("img")[0]; img.src = img.src.replace(/q/,"www"); img.setAttribute("style", "margin: 0px 0px -4px 3px; width:16px; height:16px;"); var img2 = ugomemo.getElementsByTagName("img")[1]; if(img2) img2.src = img2.src.replace(/q/,"www"); userUrl[i].parentNode.appendChild(ugomemo); } } }); })(i); } //-------追加終わり } })();
全てつなげるとこうなるわけですね。ありがとうございます。