【急募】うざったいユーザーの質問を見えなくするグリースモンキー



最近質問してはキャンセルを繰り返すユーザーがいてうざいので、特定のユーザーの質問を見えなくするグリースモンキーをお願いします。


このグリースモンキーに機能追加願います。
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
複数メインアカウントを不正利用した嫌がらせ行為について

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:2010/03/04 06:18:06
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:Cherenkov No.2

回答回数1504ベストアンサー獲得回数493

ポイント100pt

新たなスクリプトを導入したくないということもあると思うので作ってみました。

上のコメントのスクリプトと、回答したスクリプトの異なる点は以下です。

  • 1msくらい速い。
  • AutoPagerize対応

追加場所は、

以前追加した部分よりも前に追加するか、プログラム全体を囲んでいる(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);
}

http://q.hatena.ne.jp/answer

id:uml

全てつなげるとこうなるわけですね。ありがとうございます。

// ==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);
  }
//-------追加終わり
  }
})();

2010/03/04 06:17:21

その他の回答1件)

id:kick_m No.1

回答回数1372ベストアンサー獲得回数54

ayayaさんの質問はたしかにうざいですが、根拠もなく勝手にきめつけているあなたの質問もうざいです。

あなたも「質問者拒否スクリプト」に入れておきます。http://www

id:uml

なんだ、ハムスタだったのか。

2010/03/04 01:15:34
id:Cherenkov No.2

回答回数1504ベストアンサー獲得回数493ここでベストアンサー

ポイント100pt

新たなスクリプトを導入したくないということもあると思うので作ってみました。

上のコメントのスクリプトと、回答したスクリプトの異なる点は以下です。

  • 1msくらい速い。
  • AutoPagerize対応

追加場所は、

以前追加した部分よりも前に追加するか、プログラム全体を囲んでいる(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);
}

http://q.hatena.ne.jp/answer

id:uml

全てつなげるとこうなるわけですね。ありがとうございます。

// ==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);
  }
//-------追加終わり
  }
})();

2010/03/04 06:17:21
  • id:meefla
    ご指定のスクリプトへの追加ではなく、単独のものですが、
    質問一覧で指定ユーザーの質問を非表示にするスクリプトで良ければすでにあります。

    人力検索はてなで見たくない質問を見えなくするスクリプト 「いないいない」
    http://anond.hatelabo.jp/20090129235308

    私がこれを改変して、指定ユーザーの強調機能を追加した物もあります。
    iru_inai ver 0.2 - Meeya Meefla
    http://d.hatena.ne.jp/meefla/20100102/iru_inai_02
  • id:uml
    編集して1つにする知識はないので、このまま募集致します。
    お礼にポイント送らせて頂きます。
  • id:chinjuh
    meeflaさんの iru_inaiをわたしも使っています。
    少なくとも質問一覧からは消えるので不快感が薄れます。
    あくまで一般論ですが、そういった方は反応されるのが嬉しいことが多いようですし、
    きれいに非表示にして、完全に無視するしかないのだろうなと思っています。
    荒らしに対抗して質問など立てる人は「いないと信じたい」ですが、
    万が一にもそんな気持ちになる人は、どうか思いとどまってほしいです。
  • id:Cherenkov
    test時のリストをそのまま書いてしまった。当該ユーザ様へたまたま目に入っただけなのでお気になさらず。
  • id:meefla
    ポイント確かに受領しました。
    ありがとうございます。
  • id:trty12
    はいそのとうりです。

この質問への反応(ブックマークコメント)

トラックバック

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません