Twitter Discreet Blocking

Blocks twitter users only locally

이 스크립트를 설치하려면 Tampermonkey, Greasemonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey와 같은 확장 프로그램을 설치해야 합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Violentmonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey 또는 Userscripts와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 Tampermonkey와 같은 확장 프로그램이 필요합니다.

이 스크립트를 설치하려면 유저 스크립트 관리자 확장 프로그램이 필요합니다.

(이미 유저 스크립트 관리자가 설치되어 있습니다. 설치를 진행합니다!)

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 Stylus와 같은 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

이 스타일을 설치하려면 유저 스타일 관리자 확장 프로그램이 필요합니다.

(이미 유저 스타일 관리자가 설치되어 있습니다. 설치를 진행합니다!)

// ==UserScript==
// @name        Twitter Discreet Blocking
// @namespace   Violentmonkey Scripts
// @match       https://twitter.com/home
// @grant       none
// @version     1.1
// @author      CarlosMarques
// @description Blocks twitter users only locally
// @license      MIT
// ==/UserScript==
 
//TODO: User interface to add blocked users
 
(function(){
	let blockedAccounts = ["elonmusk"]
	let mObserver = new MutationObserver(function(mutations){
		for(tweet of document.querySelectorAll('[data-testid="cellInnerDiv"]')){
			let tweetAuthor = tweet.querySelector('[data-testid="User-Name"]')?.querySelector('[role="link"]').href.split("/").slice(-1)[0]
			let tweetReposter = tweet.querySelector('[data-testid="socialContext"]')?.parentElement.href.split("/").slice(-1)[0]
			if(blockedAccounts.includes(tweetAuthor) || blockedAccounts.includes(tweetReposter)){
				tweet.innerHTML = ""
				tweet.style = ""
			}
		}
	})
	mObserver.observe(document.body, {subtree: true, childList: true, characterData: true});
})()