您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Down votes ukranian fascists on Reddit
// ==UserScript== // @name FascistDownvoterForReddit // @namespace http://tampermonkey.net/ // @version 0.5 // @description Down votes ukranian fascists on Reddit // @author APoreshaev // @license MIT // @match https://www.reddit.com/r/* // @icon https://www.redditstatic.com/desktop2x/img/favicon/apple-icon-57x57.png // @homepageURL https://greasyfork.org/scripts/454018-fascistdownvoterforreddit/code/FascistDownvoterForReddit.user.js // @grant none // ==/UserScript== /* Anti-Fascist script for reddit "Slava Ukraini" is a salute of Ukrainian nationalists. This script will down vote all posts that contains this phrase. We are against the war, but it doesn't mean we should support the fascists. */ (function() { 'use strict'; console.log('FascistDownvoterForReddit has started'); const fascistPattern = /(slava ukr)|(hero[iy]?am slava)|(героям слава)|(слава укра[иї]?ин)|(glory to ukrain)/gi; function downvoteFascists(document) { // for comments [...document.querySelectorAll('[data-testid=comment], [data-testid=post-comment-header]')] .filter((elm) => elm.innerText.match(fascistPattern)) .forEach((fascistComment) => { const fascistName = fascistComment.parentElement.querySelector('a[data-testid=comment_author_link]'); console.log(`a fascist has been found ${fascistName}`); fascistComment.parentElement.querySelectorAll('button[aria-label=downvote][aria-pressed=false]') .forEach((btn) => { console.log(`downvoting a fascist ${fascistName}`); btn.click(); }); }); // for posts [...document.querySelectorAll('[data-testid=post-container]')] .filter((elm) => elm.innerText.match(fascistPattern)) .forEach((fascistPost) => { const fascistTitle = fascistPost.querySelector('h3'); console.log(`a fascist's post has been found "${fascistTitle.innerText}"`); fascistPost.querySelectorAll('button[aria-label=downvote][aria-pressed=false]') .forEach((btn) => { console.log(`downvoting the fascist's post`); btn.click(); }) }); } var targetNode = document.body; if (targetNode) { var config = { childList: true, subtree: true }; // Callback function to execute when mutations are observed var callback = function(mutationsList, observer) { for(var mutation of mutationsList) { if (mutation.type == 'childList') { for(var node of mutation.addedNodes) { if (node instanceof Element) { downvoteFascists(node); } } } } }; // Create an observer instance linked to the callback function var observer = new MutationObserver(callback); // Start observing the target node for configured mutations observer.observe(targetNode, config); } setTimeout(() => { downvoteFascists(document); }, 3000); })();