codemasher/terfblocker5000

Twitter TERF blocker. PHP 7.4+

dev-main 2022-08-10 12:17 UTC

This package is auto-updated.

Last update: 2024-11-10 16:56:24 UTC


README

Improve your twitter experience by mass blocking TERFs etc.

TERFs - Trans Exclusionary Radical "Feminists" - are a rather nasty, predominantly (but not limited to) british phenomenon, a fascist trend as Judith Butler called it. They pretend to "fight for the rights of woman and girls" but in reality they spread hate and misinformation about trans people. They come in different flavors from "concerned mother" to outright terrorist and - much like their alt-right buddies - they use a lot of dog whistles, which is where TERFBLOCKER5000 steps in.

TERFBLOCKER5000 scans the user profiles (display name, bio and location) and filters them against a word list. Of course it's not perfect, but it catches the majority of the most hateful accounts (~2% of the 1,8 million scanned accounts in the test environment - get a taste of the vogon poetry).

PHP Version Support version license

Documentation (WIP)

// @see https://github.com/chillerlan/php-oauth-providers/blob/main/examples/get-token/Twitter.php
$token    = (new AccessToken)->fromJSON(file_get_contents($CFGDIR.'/Twitter.token.json'));
$wordlist = require $CFGDIR.'/wordlist.php';

$terfblocker
	// import a new twitter oauth token if needed
	->importUserToken($token)
	// set the list of terms to match against (required)
	->setWordlist($wordlist)
	// fetch from replies to a given tweet
	// the 2nd parameter toggles the API request limit enforcement
	->fromMentions('https://twitter.com/Nigella_Lawson/status/1441121776780464132', true)
	// or just the @-mentions of a user
	->fromMentions('https://twitter.com/Lenniesaurus', true)
	// from an advanced search
	// @see https://developer.twitter.com/en/docs/twitter-api/v1/tweets/search/guides/standard-operators
	->fromSearch('#IStandWithJKRowling', true)
	// from the followers of the given account
	->fromFollowers('https://twitter.com/HJoyceGender', true)
	// from the accounts the given account follows
	->fromFollowing('https://twitter.com/HJoyceGender', true)
	// from followers AND following from a list of screen names ()
	->fromFollowersAndFollowing(['ALLIANCELGB', 'Transgendertrd', 'fairplaywomen'], true)
	// adds each of the given screen_names to the given block list (always, block, never)
	->fromScreenNames(['ALLIANCELGB', 'Transgendertrd', 'fairplaywomen'], 'always')
	// fetches the retweeters of the given tweet - note that the results of this endpoint
	// may not return *all* but only the *recent* retweeters - whatever that means...
	->fromRetweets('https://twitter.com/fairplaywomen/status/1388442839969931264')
	// fetches all users of the given (private) list
	->fromList('TERFBLOCKER5000', 'always')
	// adds the user IDs from the block list of the currently authenticated user to the profile table
	->fromBlocklist()
	// add user IDs found in the given JSON file
	->fromJSON(__DIR__.'/users.json')
	// exports the block list from the database into a JSON file in the given path
	->exportBlocklist(__DIR__.'/../json/')
;

/**
 * cron methods
 */
 
$terfblocker
	// adds a list of screen names to the "scan jobs" table
	->cronAddScreenNames(['ALLIANCELGB', 'Transgendertrd', 'fairplaywomen'])
	// scans followers/following for users in the scan jobs table, @see /cron/fetch_follow.php
	->cronScanFollow();

// the profile fetcher @see /cron/fetch_profiles.php
$terfblocker->cronFetchProfiles();

// rescans the profile table against the given wordlist
$terfblocker
	->setWordlist($wordlist)
	->cronScanByWordlist();
	
// performs blocks for the currently authenticated user, @see /cron/perform_block.php
$terfblocker->block();

QR codes are awesome!