codemasher / terfblocker5000
Twitter TERF 阻止器。PHP 7.4+
dev-main
2022-08-10 12:17 UTC
Requires
- php: ^7.4 || ^8.0
- ext-json: *
- ext-mbstring: *
- ext-mysqli: *
- ext-pgsql: *
- ext-sodium: *
- chillerlan/php-cache: ^4.1
- chillerlan/php-database: dev-main#b9027e2b06e5fe694069d0749ddbf5f75e729f44
- chillerlan/php-dotenv: ^2.1.2
- chillerlan/php-oauth-providers: ^2.0
- monolog/monolog: ^2.8
- psr/log: ^1.1 || ^2.0 || ^3.0
Requires (Dev)
- phpunit/phpunit: ^9.5
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 诗歌)。
文档(进行中)
// @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();