LoginSignup
4
1

More than 5 years have passed since last update.

新 Qiitaのフィードから特定ユーザーの投稿を非表示にするユーザースクリプト

Last updated at Posted at 2018-02-21

Qiitaのフィードから特定ユーザーの投稿を非表示にするユーザースクリプト - Qiita


ファーストビューがトレンドになって頻繁に目に入るようになった。
トレンドに入ることでいいねが増え掲載期間が伸びるのか、バズりやすい記事はずっとトレンドに入る。
タイムラインやタグフィードと異なり自分ナイズできない&流れないので、延々と好きでない投稿を突きつけられて前作時代よりストレスを感じていることに気付かされた。
対象記事・ユーザーのいいねが増えていることさえもストレスに感じるのは流石に自分の狭量さに辟易とするが、煽りタイトルなのが拍車をかけて辛い。そういったタイトルが伸びやすそうな雰囲気があるのも辛い。
ファーストビューはタイムラインにするか、
フォロータグのトレンドにするか(これは効果薄か)
アドオンみたいにトレンドを既読にして再表示しない機能が欲しい。

動作検証環境

  • Firefox 58
  • Greasemonkey 4.2

コード

GistスクリプトリンクQiita_user_filter_for_feed.user.js

Qiita_user_filter_for_feed.user.js
// ==UserScript==
// @name        Qiita user filter for feed
// @namespace   khsk
// @description フィードから特定ユーザーの投稿を非表示にする
// @include     https://qiita.com/
// @include     https://qiita.com/trend
// @include     https://qiita.com/timeline
// @include     https://qiita.com/tag-feed
// @version     1
// @grant       none
// ==/UserScript==

console.time('userfilter');

const NG_USERS = [
];

const filtering = () => {
  // トレンド, ユーザーランキング, タイムライン アイコンリンク, タグフィード アイコンリンク(こっちはユーザー名リンクでもよかった), おすすめユーザー(多分出ないけど)
  const targets = document.querySelectorAll('a.tr-Item_author, div.ra-User_screenname>a, a.tl-ItemContent_userImage, a.tf-ItemContent_userImage, a.tl-RecommendedUser_screenname')
  Array.prototype.forEach.call(targets,function(target){
    user = target.href.match(/https?:\/\/qiita.com\/([^/]+)/)[1];
    if (NG_USERS.indexOf(user) != -1) {      
      switch (target.className) {
        case 'tr-Item_author':
        case 'tl-RecommendedUser_screenname':
          target.parentNode.parentNode.parentNode.parentNode.style.display = 'none';
          break;
        case '':
          target.parentNode.parentNode.parentNode.parentNode.parentNode.style.display = 'none';
          break;
        case 'tl-ItemContent_userImage':
        case 'tf-ItemContent_userImage':
          target.parentNode.parentNode.parentNode.style.display = 'none';
          break;
        default:
          console.log(target);
          break
                              }
    }
  });
}

// 変更を監視する。追加分だけには対応しておらず、毎回全チェック。
var mo = new MutationObserver(function(data1, data2) {
    filtering();
});

// 監視対象が大きいが妥協
const root = document.querySelector('div')
const options = {childList: true, subtree:true};
mo.observe(root, options);
filtering();
console.timeEnd('userfilter');

// todo コメント非表示 需要が生まれたら

Hiroyuki Tomine (とみね)さんのツイート: "ユーザー単位のスパム報告ですかねー、確かに。記事は用意があるんですが🙏 ミュート機能は現在実装中です~… "
実装中だって。

4
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
1