NOTICE: By continued use of this site you understand and agree to the binding Terms of Service and Privacy Policy.
// ==UserScript== // @name Troll Cleaner // @version 0.1.1 // @description Un petit script pour se débarrasser des trolls blacklistés (et des posts les citant). // @author RonPaul2016 // @match http://www.jeuxvideo.com/forums/* // @require https://code.jquery.com/jquery-3.3.1.js // @copyright 2018, RonPaul2016 (https://openuserjs.org//users/RonPaul2016) // @license MIT // ==/UserScript== var pseudos_blacklistes = []; var messages_a_effacer = []; (function() { trouver_messages_blacklistes(); trouver_messages_citations(); effacer_messages(); })(); // Récupérer tous les éléments "message" sur la page d'un topic. function lister_posts() { return $("#content-forum").find(".bloc-message-forum"); } // Trouver tous les messages dont l'auteur est blacklisté, et ajouter les pseudos correspondants // et les messages respectivement dans la liste de pseudos blacklistés et de messages à effacer. function trouver_messages_blacklistes() { var posts = lister_posts(); // On parcourt les posts de la page for(var i = 0; i < posts.length; i++) { // Si l'auteur du message est blacklisté, son pseudo est ajouté à la liste des pseudos blacklistés, // et le post à la liste des messages à effacer if($(posts[i]).hasClass("msg-pseudo-blacklist")) { messages_a_effacer.push(posts[i]); var pseudo = $(posts[i]).find(".conteneur-message").not(".conteneur-message-blacklist").find(".inner-head-content").find(".bloc-header").find(".bloc-pseudo-msg").text(); pseudo = pseudo.replace(/\s/g, '').toLowerCase(); if(!pseudos_blacklistes.includes(pseudo)) { pseudos_blacklistes.push(pseudo); } } } } // Trouver les messages citant un utilisateur blacklisté. function trouver_messages_citations() { var posts = lister_posts(); // On parcourt tous les posts de la page for(var i = 0; i < posts.length; i++) { var message = $(posts[i]).find(".conteneur-message").not(".conteneur-message-blacklist").find(".inner-head-content").find(".bloc-contenu").find(".txt-msg"); var blacklister_message = analyser_citation(message); // On ajoute le message à la liste des posts à effacer si nécessaire if(blacklister_message) { messages_a_effacer.push(posts[i]); } } } function analyser_citation(message) { var citations = message.children("blockquote"); var blacklister_message = false; // On parcourt tous les blocs "citation" dans le post for(var i = 0; i < citations.length; i++) { var paragraphes = $(citations[i]).children("p"); // On parcourt chaque paragraphe dans la citation for(var j = 0; j < paragraphes.length; j++) { // On vérifie si le paragraphe contient le début d'une citation d'un pseudo blacklisté var a_blacklister = contient_citation_blackliste($(paragraphes[j]).text()); if(a_blacklister) { blacklister_message = true; break; } } if (!blacklister_message) { blacklister_message = analyser_citation($(citations[i])); if (blacklister_message) { break; } } if (blacklister_message) { break; } } return blacklister_message; } // Vérifier si un texte contient le début d'une citation, et si le pseudo cité est blacklisté function contient_citation_blackliste(text) { var res = false; // On cherche les débuts de citation potentiels dans le texte var formes_citation = [ {"forme": /Le\s+\d+\s+[a-z]+\s+\d+\s+à\s+\d+:\d+:\d+\s+[A-Za-z0-9_\-]+\s+a\s+écrit\s+:/g, "indice_pseudo": 6}, {"forme": /\[\d+:\d+:\d+]\s+<[A-Za-z0-9_\-]+>/g, "indice_pseudo": 1} ]; var match = []; for(var i = 0; i < formes_citation.length; i++) { match.push.apply(match, [{ "match": text.match(formes_citation[i].forme), "indice_pseudo": formes_citation[i].indice_pseudo }]); } // Pour chaque citation, on vérifie si le pseudo cité est blacklisté for(var i = 0; i < match.length; i++) { if(match[i].match !== null) { for(var j = 0; j < match[i].match.length; j++) { match[i].match[j] = match[i].match[j].replace(/\s+/g, " ").replace(/</g, "").replace(/>/g, ""); citation_split = match[i].match[j].split(" "); pseudo = citation_split[match[i].indice_pseudo].toLowerCase(); if(pseudos_blacklistes.includes(pseudo)) { res = true; break; } } } } return res; } // Effacer les messages blacklistés function effacer_messages() { for(var i = 0; i < messages_a_effacer.length; i++) { $(messages_a_effacer[i]).hide(); } }