シン・ゴジラについてのネタバレを見たくなかったのでカッとなって作った
皆さんシン・ゴジラご覧になりましたか?ぼくはまだ観ていません。TLで面白いともっぱらの評判です。
そして__ネタバレすると面白さ半減__という話も聞きました。ネタバレ、されたくありませんね。
しかし良い映画は感想を言いたくなるのが人情。「ネタバレしないで!」とお願いする前に、Twitterで流れてくる情報は自分でコントロールしましょう。ということでuserscriptを書きました。
Greasemonkeyとは
Firefoxのアドオンです。
Greasemonkey :: Add-ons for Firefox
- 任意のサイトで
- 任意のJavaScriptを実行できるようにする
というAdd-onです。ぼくは今回作ったTwitterのサイトでNGワードを表示しないスクリプトの他に、下記スクリプトを導入しています。
- Twitterの画像を原寸大で表示させるボタンを追加させるスクリプト
- livedoor Dwango Reader(旧livedoor Reader)で最後の記事から次の記事へ
j
キーで移動できるようにするスクリプト
Greasemonkey、便利なのでおすすめです。
Web版TwitterでNGワードを表示しないユーザースクリプト
ここからが本題です。下記の通り処理をしています。
-
@include
でスクリプトの動作対象となるサイトを指定する(正規表現で指定可能) -
@require
でjQueryを読み込み -
ngWords
でNGワードを指定(配列で複数指定可能) - HTML内の
tweet-text
クラスを総当りしてNGワードがヒットしたら削除する
__すごく重い__です。はやくシン・ゴジラ見てこのスクリプトをオフにしたいと思います。
TwitterFilter.user.js
// ==UserScript==
// @name TweetFilter
// @namespace http://www.designsatellites.jp/
// @description 指定したNGワードを含むツイートを非表示にします
// @version 1
// @grant none
// @include https://twitter.com/*
// @require https://code.jquery.com/jquery-3.1.0.min.js
// ==/UserScript==
(function () {
var ngWords = [
'godzilla',
'ゴジラ',
'シンゴジ'
];
function removeTweet() {
var tweet = $('.stream-item:has(\'.tweet-text\')');
if (tweet.length > 0) {
tweet.each(function (index, element) {
var text = $(element).find('.tweet-text').text();
$.each(ngWords, function (index, word) {
if (text.includes(word)) {
element.remove();
return true;
}
});
});
}
}
removeTweet();
$(document).bind('DOMNodeInserted', function (e) {
var element = e.target;
if (element.nodeName == 'LI') {
removeTweet();
}
});
})();