Mastodon 連合 or ローカルタイムライン用正規表現フィルタ Fork

    
      
      
  • /*
     * @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=/; 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 です。