Hatena::ブログ(Diary)

残像ブログ RSSフィード Twitter

2011-11-13

ユーザCSSでpixivの特定ユーザの画像を非表示にするナンチャッテNG機能


pixivではユーザの投稿した画像のURLにユーザIDが含まれているので、CSSで特定ユーザのイラストを非表示にすることができます
大量に登録するにはあまり効率よくないと思います。
Firefox3.6での動作を確認しています。

@-moz-document domain("www.pixiv.net") {
  img[src*="/ユーザID/"] ,   /*複数指定する場合はカンマ(,)で区切る*/
  img[src*="/ユーザID/"] ,   
  img[src*="/ユーザID/"]    /*最後の行にはカンマをつけない*/
  {
    display: none !important;
  }
}

上記コードの「ユーザID」の部分に非表示にしたいユーザのユーザIDを書けばOK
カンマで区切れば複数指定できます

ユーザIDを調べるにはそのユーザのスタックフィードのURLを見るのが手っ取り早いと思います
pixiv公式アカウントの場合なら

http://www.pixiv.net/stacc/pixiv

というURLですが、このURLのstacc/より右の英数字がユーザIDです
この例なら「pixiv」がユーザIDになります

指定するときはimg[src*="/pixiv/"]のように必ずユーザIDの両端に/をつけてください
つけないと意図しないユーザを非表示にしてしまう可能性があります
img[src*="/pixiv/"]は「URLに『/pixiv/』を含む画像を対象にする」という意味なので
img[src*="pixiv"]とした場合URLに『pixiv』を含む画像が対象になり、恐らく全てのユーザの画像が見えなくなると思います

私は一々スタックフィード見たりするのがめんどくさいので、下記のユーザスクリプトで、プロフ画像下部にユーザIDが表示されるようにしています。
f:id:appakumaturi:20111113222847p:image
もっといい方法があると思うんですが、Javascriptは良くわからず

// ==UserScript==
// @name           pixiv
// @namespace      a
// @include        http://www.pixiv.net/*
// ==/UserScript==

//プロフィール画像を取得
var getID = document.getElementsByClassName('profile_area')[0].getElementsByTagName('img')[0];
//画像srcを抽出
var userID = getID.src;

//画像がデフォルトか判定
if (userID == "http://source.pixiv.net/source/images/no_profile.png"){
     //スタックフィードのリンクを取得
     getID = document.getElementsByClassName('extaraNavi')[0].getElementsByTagName('a')[3];
     //リンクからURLを取得
     userID = getID.href;
     //URLからIDを抽出
     var SrcNum =userID.indexOf("/stacc/");//切り取り開始位置特定
     userID = userID.slice(SrcNum + 7);//切り取り実行
     
}else{
//画像がデフォルトでないなら画像srcを使う
     var SrcNum =userID.indexOf("/profile/");
     userID = userID.slice(SrcNum + 9);
     SrcNum =userID.indexOf("/");
     userID = userID.slice(0,SrcNum);
}

//cssを追加 11/7/14 ADD
userID= "  img[src*=\"/" + userID +"/\"],";

//テキストエリアを作成
var CopyID = document.createElement("input");
CopyID.type="text";
//ユーザIDを表示
CopyID.value= userID;
CopyID.setAttribute("onclick", "CopyID.select();");

//テキストエリアを挿入
var objBody = document.getElementsByClassName('icon_mail');
var title_node = objBody[0];
title_node.appendChild(CopyID);

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

リンク元