Mastodon 連合 or ローカルタイムライン用正規表現フィルタ
by
pacochi
2017-06-01 [2017/06/01 20:54:17]
名前にも適用されます。画像とか動画とか不適切系も判別できます。
@@ -78,7 +78,7 @@
b.text('?');
o.disconnect();
r = s;
- d.cookie = `let_filter_regexp=${encodeURIComponent(r.source)}; path=/; expires=Tue, 19 Jan 2038 03:14:07 GMT`;
+ d.cookie = `let_filter_regexp=${encodeURIComponent(r.source)}; path=\x2F; expires=Tue, 19 Jan 2038 03:14:07 GMT`;
} else b.text('?');
/*
* @title Mastodon 連合 or ローカルタイムライン用正規表現フィルタ
* @description 名前にも適用されます。
* @include *
* @license MIT License
* @javascript_url
*/
((d = document, o, x, i, c, b, r, n) => {
r = new RegExp(decodeURIComponent((d.cookie.split('let_filter_regexp=')[1] || '').split(';')[0]) || 'きのこ|たけのこ|すぎのこ', 'i');
o = new MutationObserver(s => s.forEach(t => {
x = d.evaluate('.//div[@class="status" and not(@style)]', t.target, null, 6, x);
// この辺速い方がいいかなって思って jQuery 使ってない
for (i = 0; i < x.snapshotLength; i++) {
n = x.snapshotItem(i);
[...n.querySelectorAll('img[alt]')].forEach(f => {
f.parentNode.insertBefore(Object.assign(
d.createElement('span'), {
style: 'display: none;',
textContent: f.alt
}
), f);
});
if (
r.test(n.querySelector('.display-name').textContent)
|| r.test(n.querySelector('.status__content').textContent)
) n.style.display = 'none';
}
}));
c = $('#mute-buttons');
if (!c[0]) c = $('<div />')
.css({ position: 'fixed', height: '1em', bottom: '2em', right: 0, zIndex: 99 })
.attr('id', 'mute-buttons').appendTo($('.columns-area'));
b = $('<button />').text('?')
.click(function (e) {
if (b.text() == '?') {
b.text('?');
o.observe($('.column:last')[0], {
childList: 1,
subtree: 1
});
} else {
b.text('?');
o.disconnect();
$('.status').filter(":hidden").show();
}
});
c.append(b.click()).append(
$('<input />').val(r.source).css('width', '10em')
.change(function (e, s) {
s = this.value;
if (s.length) {
try { s = new RegExp(s); } catch(e) {}
if (typeof s == 'object') {
b.text('?');
o.disconnect();
r = s;
d.cookie = `let_filter_regexp=${encodeURIComponent(r.source)}; path=\x2F; expires=Tue, 19 Jan 2038 03:14:07 GMT`;
} else b.text('?');
} else b.text('?');
b.click();
})
);
})();
- Permalink
- このページへの個別リンクです。
- RAW
- 書かれたコードへの直接のリンクです。
- Packed
- 文字列が圧縮された書かれたコードへのリンクです。
- Userscript
- Greasemonkey 等で利用する場合の .user.js へのリンクです。
- Loader
- @require やソースコードが長い場合に多段ロードする Loader コミのコードへのリンクです。
- Metadata
- コード中にコメントで @xxx と書かれたメタデータの JSON です。