hide_pixiv_image_with_keyword.user.js

きっかけとか

数日前のことだが、[twitter:@tailtame]さんのいくつかの発言が目に入った。

中々面白そうだったので2番目の発言で言及されている本人のブログ(ねこまぐろBlog :: pixivとTINAMIのタイトルからサムネイルを非表示にするユーザCSS*Firefox+Stylish)を確認してみた。pixivでの住み分けについての話らしい。
pixivの仕様変更のため、今まではユーザースタイルシートの指定に使っていたalt属性がなくなり、タイトルに特定の語句を含む画像のサムネイルを非表示にすることが出来なくなったとのこと。

上みたいなやり取りもあって、完成したスクリプトは以下。実はあのときtypoってたので(×snapshotLength() ○snapshotLength)動きませんでした。ゴメンなさい。

かんせいばん

完成版ではキーワードの指定がやりやすいようにしてあります。
正規表現も使えます。

インストールはこちらからどうぞ。
hide_pixiv_image_with_keyword

var HIDE_KEYWORD = [
  "腐",
];
var SAFE_KEYWORD= [
  "豆腐",
];

function hide(node){
  var titles=document.evaluate('.//a[p/img and h1]/h1',node,null,7,null);
  var hooked=[];
  var hideKey=HIDE_KEYWORD.join("|");
  var safeKey=SAFE_KEYWORD.join("|");
  for(var i=0, l=titles.snapshotLength;i<l;i++){
    var title=titles.snapshotItem(i);
    if(!title.textContent.match(safeKey) && title.textContent.match(hideKey)){
      hooked.push(title);
    }
  }
  hooked.forEach(function(f){
      f.previousElementSibling.style.display="none";
    }
  );
}

function boot(){
  window.addEventListener("AutoPagerize_DOMNodeInserted",function(evt){
      hide(evt.target)
    },
    false
  );
}

hide(document);
if(window.AutoPagerize){
  boot();
}else{
  window.addEventListener("GM_AutoPagerizeLoaded",boot,false);
}

つかいかた

上のリンクからgreasemonkeyにさくっとインストール。AutoPagerize対応アリ。

初期状態では

var HIDE_KEYWORD = [
  "腐",
];
var SAFE_KEYWORD= [
  "豆腐",
];

に設定してあるので、HIDE_KEYWORDに気に入らないキーワードをぶち込んで非表示にしてください。キーワードが短すぎて他の語句も拾うのがイヤなときはSAFE_KEYWORDを。普通に表示します。

優先順位はSAFE_KEYWORDのほうが高いので悪しからず。レスポンス次第で改良します。気が向けば。