// ==UserScript== // @name Filtre Anti-Spam MP // @description Filtre les spams de MP sur JVC selon les patterns définis par l'utilisateur // @version 9 // @match http://www.jeuxvideo.com/* // @match http://m.jeuxvideo.com/* // @match https://www.jeuxvideo.com/* // @match https://m.jeuxvideo.com/* // @author Tsr_crew & Alectrona // @language fr // @require http://code.jquery.com/jquery-3.4.1.min.js // @grant GM.getValue // @grant GM.setValue // @namespace https://greasyfork.org/users/396340 // @downloadURL none // ==/UserScript== var bl1 = []; var bl2 = []; var bl1tags; var bl2tags; document.getElementsByClassName('jv-account-number-mp')[0].className = "jv-account-number-mp"; var harcelement = document.getElementsByClassName('jv-nav-harassment-warning')[0]; harcelement.innerHTML = ""; harcelement.style.height = "27px"; harcelement.style.padding = "1px"; harcelement.style.textAlign = "center"; var node = document.createElement("input"); node.setAttribute("type", "button"); node.setAttribute("value", "Liste noire des pseudos"); node.setAttribute("style", "color:black;"); node.setAttribute("id", "editbl1"); harcelement.appendChild(node); var node2 = document.createElement("input"); node2.setAttribute("type", "button"); node2.setAttribute("value", "Liste noire des objets"); node2.setAttribute("style", "color:black;"); node2.setAttribute("id", "editbl2"); harcelement.appendChild(node2); document.getElementById('editbl1').onclick = function() {editbl1();}; document.getElementById('editbl2').onclick = function() {editbl2();}; document.getElementsByClassName('jv-account-number-mp')[0].onclick = function() {ctrcheck();}; function ctrcheck() { spamchecker(false); document.getElementsByClassName('jv-account-number-mp')[0].setAttribute('data-val', 0); document.getElementsByClassName('jv-account-number-mp')[0].className = "jv-account-number-mp"; var mpluhash = document.getElementsByClassName('jv-nav-dropdown-link account-mp-reset')[0].dataset.url; $.get('https://www.jeuxvideo.com' + mpluhash); setTimeout(function(){ var docLinks = document.getElementsByClassName('jv-nav-dropdown-details'); var parent; for(var i=0;i < docLinks.length; i++){ var k = 0; var blmatch = 1; while(k < bl1.length && blmatch == 1) { var auth = docLinks[i].childNodes[0].innerHTML.toLowerCase(); var str = bl1[k]; if (str && auth.includes(str)) { parent = docLinks[i].parentNode; parent.style.display = "none"; // docLinks[i].className = "spammeur"; blmatch = 0; } k++; } var m = 0; while(m < bl2.length && blmatch == 1) { var auth2 = docLinks[i].childNodes[1].title.toLowerCase();; var str2 = bl2[m]; if (str2 && auth2.includes(str2)) { parent = docLinks[i].parentNode; parent.style.display = "none"; // docLinks[i].className = "spammeur"; blmatch = 0; } m++; } } }, 500); } function editbl1() { var newbl1 = prompt("------------------------------- Saisissez les patterns de PSEUDOS à blacklister, séparés d'une virgule. (Insensible à la casse) -------------------------------", bl1tags); if (newbl1 != null) { newbl1 = newbl1.toLowerCase(); bl1tags = newbl1; bl1 = newbl1.split(','); GM.setValue("abl1", JSON.stringify(bl1)); var docLinks = document.getElementsByClassName('jv-nav-dropdown-details'); var parent; for(var i=0;i < docLinks.length; i++){ var k = 0; var blmatch = 1; while(k < bl1.length && blmatch == 1) { var auth = docLinks[i].childNodes[0].innerHTML.toLowerCase(); var str = bl1[k]; if (str && auth.includes(str)) { parent = docLinks[i].parentNode; parent.style.display = "none"; // docLinks[i].className = "spammeur"; blmatch = 0; } k++; } var m = 0; while(m < bl2.length && blmatch == 1) { var auth2 = docLinks[i].childNodes[1].title.toLowerCase();; var str2 = bl2[m]; if (str2 && auth2.includes(str2)) { parent = docLinks[i].parentNode; parent.style.display = "none"; // docLinks[i].className = "spammeur"; blmatch = 0; } m++; } if(docLinks[i].parentNode.style.display == "none" && blmatch == 1) { docLinks[i].parentNode.style.display = ""; } } } } function editbl2() { var newbl2 = prompt("---------------------------- Saisissez les patterns d'OBJETS DE MP à blacklister, séparés d'une virgule. (Insensible à la casse) ----------------------------", bl2tags); if (newbl2 != null) { newbl2 = newbl2.toLowerCase(); bl2tags = newbl2; bl2 = newbl2.split(','); GM.setValue("abl2", JSON.stringify(bl2)); var docLinks = document.getElementsByClassName('jv-nav-dropdown-details'); var parent; for(var i=0;i < docLinks.length; i++){ var k = 0; var blmatch = 1; while(k < bl1.length && blmatch == 1) { var auth = docLinks[i].childNodes[0].innerHTML.toLowerCase(); var str = bl1[k]; if (str && auth.includes(str)) { parent = docLinks[i].parentNode; parent.style.display = "none"; // docLinks[i].className = "spammeur"; blmatch = 0; } k++; } var m = 0; while(m < bl2.length && blmatch == 1) { var auth2 = docLinks[i].childNodes[1].title.toLowerCase();; var str2 = bl2[m]; if (str2 && auth2.includes(str2)) { parent = docLinks[i].parentNode; parent.style.display = "none"; // docLinks[i].className = "spammeur"; blmatch = 0; } m++; } if(docLinks[i].parentNode.style.display == "none" && blmatch == 1) { docLinks[i].parentNode.style.display = ""; } } } } function spamchecker(rcpt) { var cpt = 0; $.get('https://www.jeuxvideo.com/messages-prives/boite-reception.php', function (data) { var container = document.implementation.createHTMLDocument().documentElement; container.innerHTML = data; var mpssss = container.getElementsByClassName('row-mp'); var spamsatuer = []; for (var i = 1; i < mpssss.length; i++) { var mprchilds = mpssss[i].children; var pseudo = mprchilds[0].firstChild.firstChild.innerHTML.toLowerCase(); var objet = mprchilds[1].firstChild.innerHTML.toLowerCase(); var id = mprchilds[3].firstChild.value; var k = 0; var m = 0 var blmatch = false; while(k < bl1.length && blmatch == false) { var str = bl1[k]; if (str && pseudo.includes(str)) { spamsatuer.push(id); blmatch = true; } k++; } while(m < bl2.length && blmatch == false) { var str2 = bl2[m]; if (str2 && objet.includes(str2)) { spamsatuer.push(id); blmatch = true; } m++; } if (blmatch == false && mpssss[i].className == "row-mp") { cpt++; } } var selector = container.querySelectorAll("#b-reception > form > input[type=hidden]"); const randomKey = selector[3].name; var obj = { fs_session: selector[0].value, fs_timestamp: selector[1].value, fs_version: selector[2].value, "conv_select[]": [], conv_move: "666" }; obj[randomKey] = selector[3].value; spamsatuer.forEach(e => { obj["conv_select[]"].push(e) }); $.post("https://www.jeuxvideo.com/messages-prives/boite-reception.php", obj); // actualiser le compteur de MP if (rcpt == true) { document.getElementsByClassName('jv-nav-dropdown-title')[0].innerHTML = " Patch anti-spam appliqué "; if (cpt > 0) { document.getElementsByClassName('jv-account-number-mp')[0].setAttribute('data-val', cpt); document.getElementsByClassName('jv-account-number-mp')[0].className = "jv-account-number-mp has-notif"; } } }); } //ON ATTEND LE CHARGEMENT DES BLACKLISTS DE L'UTILISATEUR (async function() { bl1 = await GM.getValue('abl1','["leao","riyadmahrez"]'); bl2 = await GM.getValue('abl2','["vous 25€ par","discord des igoent"]'); bl1 = JSON.parse(bl1); bl2 = JSON.parse(bl2); bl1tags = bl1.join(); bl2tags = bl2.join(); spamchecker(true); })();