codemasher/terfblocker5000

Twitter TERF 阻止器。PHP 7.4+

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

This package is auto-updated.

Last update: 2024-09-10 16:41:08 UTC


README

通过大规模阻止 TERF 等来改善您的 Twitter 体验。

TERFs - Trans Exclusionary Radical "Feminists" - 是一种相当令人讨厌的现象,主要(但不限于)是英国现象,正如 Judith Butler 所说,这是一种法西斯主义 趋势。他们假装“为妇女和女孩的权利而战”,但实际上他们散布对跨性别者的仇恨和虚假信息。他们来自不同的口味,从“担忧的母亲”到直言不讳的恐怖分子,而且——就像他们的右翼朋友一样——他们使用了很多隐晦的言辞,这就是 TERFBLOCKER5000 介入的地方。

TERFBLOCKER5000 扫描用户资料(显示名、个人简介和位置)并将它们与词表进行筛选。当然,它并不完美,但它捕捉到了大多数最具仇恨的账户(在测试环境中扫描的 180 万个账户中的 ~2%——品味一下 Vogon 诗歌)。

PHP Version Support version license

文档(进行中)

// @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!