Supprime totalement les sujets des pseudo blacklistés en synchronisant depuis la blacklist JVC.
当前为
// ==UserScript==
// @name Full_Black_List
// @namespace Full_Black_List
// @version 0.6.5
// @description Supprime totalement les sujets des pseudo blacklistés en synchronisant depuis la blacklist JVC.
// @author Atlantis
// @match *://www.jeuxvideo.com/recherche/forums/0-*
// @match *://www.jeuxvideo.com/forums/0-*
// @match *://www.jeuxvideo.com/forums/42-*
// @match *://www.jeuxvideo.com/forums/1-*
// @match *://www.jeuxvideo.com/sso/blacklist.php
// @match *://www.jeuxvideo.com/login*
// @icon https://images.emojiterra.com/google/noto-emoji/unicode-16.0/color/128px/274c.png
// @license MIT
// @grant none
// ==/UserScript==
// FETCH SYNCH BL
async function synchfetchpseudos() {
const response = await fetch('https://www.jeuxvideo.com/sso/blacklist.php');
const htmlText = await response.text();
const parser = new DOMParser();
const doc = parser.parseFromString(htmlText, 'text/html');
let pseudos = doc.querySelectorAll('#blacklist span');
let pseudoList = [];
pseudos.forEach(span => {
pseudoList.push(span.textContent.trim());
});
localStorage.setItem('fullblacklistJVC', JSON.stringify(pseudoList));
}
//PAGE DE CONNEXION
if (window.location.href.indexOf('jeuxvideo.com/login') > -1) {
localStorage.removeItem('fullblacklistJVC');
}
// BLACK LIST SUJETS
if (window.location.href.indexOf('jeuxvideo.com/forums/0-') > -1 || window.location.href.indexOf('jeuxvideo.com/recherche/forums/0-') > -1) {
// Fonction pour récupérer la liste des pseudos blacklistés depuis JVC ou le local storage
function getListeBlacklist() {
let liste = localStorage.getItem('fullblacklistJVC');
if (liste) {
return JSON.parse(liste);
} else {
synchfetchpseudos(); // Fonction à exécuter si la liste est pseudo connecté
setTimeout(() => {
location.reload();
}, 2000);
}
}
// Fonction pour supprimer des éléments insensible à la casse
function supprimerParListeDePseudos(pseudos) {
const pseudosLower = pseudos.map(pseudo => pseudo.toLowerCase()); // liste tout les pseudo en miniusucle
document.querySelectorAll('li').forEach(item => {
const auteur = item.querySelector('.topic-author');
if (auteur && pseudosLower.includes(auteur.textContent.trim().toLowerCase())) {
// Supprimer le sujet si ateur
item.remove();
}
});
}
const pseudosBlacklist = getListeBlacklist();
// Exécuter la fonction après le chargement initial
supprimerParListeDePseudos(pseudosBlacklist);
}
// BOUTON BLACK LISTE
if (window.location.href.indexOf('jeuxvideo.com/forums/0-') > -1) {
var divContainer = document.createElement('div');
divContainer.classList.add('custom-btn-container');
// Créer les spans à l'intérieur de la div
var span1 = document.createElement('span');
//span1.classList.add('btn');
span1.classList.add('btn', 'btn-actu-new-list-forum', 'btn-actualiser-forum', 'icon-refresh');
span1.textContent = 'Synch BL';
span1.title = 'Synchroniser avec Black List JVC';
span1.style.borderRadius = '6px';
//span1.style.textDecoration = 'underline';
span1.addEventListener('click', synchfetchpseudos);
span1.addEventListener('click', function () { alert('Black list Synchronisée manuellement'); });
span1.addEventListener('click', function () { location.reload(); });
// Vous pouvez ajouter d'autres spans si nécessaire
var span2 = document.createElement('span');
//span2.classList.add('btn');
span2.classList.add('btn', 'btn-actu-new-list-forum', 'btn-actualiser-forum');
span2.textContent = 'Voir BL';
span2.title = 'Voir Black Liste JVC';
span2.style.borderRadius = '6px';
//span2.style.textDecoration = 'underline';
span2.addEventListener('click', function() { window.open('/sso/blacklist.php', '_blank'); });
// Ajouter les spans à la div
divContainer.appendChild(span1);
divContainer.appendChild(document.createTextNode('\u00A0\u00A0'));
divContainer.appendChild(span2);
// Trouver l'élément avec la classe 'bloc-pagi-default px-3 px-lg-0'
var blocPagiDefault = document.querySelector('.bloc-pagi-default.px-3.px-lg-0');
var pagiBeforeListTopic = document.querySelector('.pagi-before-list-topic');
// Ajouter la div juste après cette div spécifique
pagiBeforeListTopic.parentNode.insertBefore(divContainer, pagiBeforeListTopic.nextSibling);
}
// MASQUAGE BLOC MESSAGE
if (window.location.href.indexOf('jeuxvideo.com/forums/1-') > -1 || window.location.href.indexOf('jeuxvideo.com/forums/42-') > -1) {
//masquage_message
const blacklistBlocks = document.querySelectorAll('.msg-pseudo-blacklist');
blacklistBlocks.forEach(block => {
block.remove();
});
//ajout dun event au bouton blacklist
const blacklisterBtns = document.querySelectorAll('.picto-msg-tronche');
blacklisterBtns.forEach(function(btn) {
btn.addEventListener('click', function() {
sessionStorage.setItem('fullblacklistJVCAwait', 'true');
});
});
// Mise à jour de la Blacklist du script apres actualisation
let bljvcawait = sessionStorage.getItem('fullblacklistJVCAwait');
if (bljvcawait === 'true') {
synchfetchpseudos(); // fullblacklistJVCAwait est 'true'
sessionStorage.removeItem('fullblacklistJVCAwait'); // Supprime la clé 'fullblacklistJVCAwait'
}
}
// MISE A JOUR PAGE BLACK LISTE
if (window.location.href.indexOf('jeuxvideo.com/sso/blacklist.php') > -1) {
updatepseudos();
// Parcourt chaque élément et ajoute un gestionnaire d'événement
const crosses = document.querySelectorAll('.icon-cross-entypo');
crosses.forEach(cross => {
cross.addEventListener('click', updatepseudos);
});
function updatepseudos() {
let pseudos = document.querySelectorAll('#blacklist span');
let pseudoList = [];
pseudos.forEach(span => {
pseudoList.push(span.textContent.trim());
});
localStorage.setItem('fullblacklistJVC', JSON.stringify(pseudoList));
}
}