Greasy Fork

Filtre Anti-Spam MP

Filtre les spams de MP sur JVC selon les patterns définis par l'utilisateur

// ==UserScript==
// @name     Filtre Anti-Spam MP
// @description Filtre les spams de MP sur JVC selon les patterns définis par l'utilisateur
// @version  12
// @match        http://www.jeuxvideo.com/*
// @match        http://m.jeuxvideo.com/*
// @match        https://www.jeuxvideo.com/*
// @match        https://m.jeuxvideo.com/*
// @author       Tsr_crew & Alectrona
// @license      MIT
// @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
// ==/UserScript==

var bl1 = [];
var bl2 = [];
var bl3 = [];
var bl1tags;
var bl2tags;
var bl3tags;
var nbrep;
var nbrepattendues;

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);

var node3 = document.createElement("input");
node3.setAttribute("type", "button");
node3.setAttribute("value", "Liste noire des contenus");
node3.setAttribute("style", "color:black;");
node3.setAttribute("id", "editbl3");
harcelement.appendChild(node3);
  
document.getElementById('editbl1').onclick = function() {editbl1();};
document.getElementById('editbl2').onclick = function() {editbl2();};
document.getElementById('editbl3').onclick = function() {editbl3();};
document.getElementsByClassName('jv-account-number-mp')[0].onclick = function() {ctrcheck();};

document.getElementById('page-topics').onclick = function(){
  var dropdown = document.getElementsByClassName('jv-nav-dropdown-container')[1];
  dropdown.style.display="none";
};

document.getElementsByClassName('jv-global-menu')[0].onclick = function(){
  var dropdown = document.getElementsByClassName('jv-nav-dropdown-container')[1];
  dropdown.style.display="none";
};

document.getElementsByClassName('jv-nav-account-notif')[0].onclick = function(){
  var dropdown = document.getElementsByClassName('jv-nav-dropdown-container')[1];
  dropdown.style.display="none";
};

document.getElementsByClassName('jv-nav-account-user')[0].onclick = function(){
  var dropdown = document.getElementsByClassName('jv-nav-dropdown-container')[1];
  dropdown.style.display="none";
};

document.getElementsByClassName('jv-nav-account-mp')[0].onclick = function(){
  var dropdown = document.getElementsByClassName('jv-nav-dropdown-container')[1];
  if (dropdown.style.display=="none") {
    dropdown.style.display="block";
  }
  else {
    dropdown.style.display="none";  
  }

};


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 editbl3() {
  var newbl3 = prompt("------------------------ Saisissez les patterns de CONTENUS DE MP à blacklister, séparés d'une virgule. (Insensible à la casse) ------------------------", bl3tags);
  if (newbl3 != null) {
    newbl3 = newbl3.toLowerCase();
    bl3tags = newbl3;
    bl3 = newbl3.split(',');
    GM.setValue("abl3", JSON.stringify(bl3));
  }
}

function spamchecker(rcpt) {
var cpt = 0;
$.get('https://www.jeuxvideo.com/messages-prives/boite-reception.php', function (data) {
    var nonlu = {};
    var cptarti = {};
    var container = document.implementation.createHTMLDocument().documentElement;
    container.innerHTML = data;
    var mpssss = container.getElementsByClassName('row-mp');
    var spamsatuer = [];
    var spamsatuer2 = [];
    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 lien = mprchilds[1].firstChild.href; // ajouter "https://www.jeuxvideo.com" au début
  	  var id = mprchilds[3].firstChild.value;
        nonlu[id] = (mpssss[i].className == "row-mp");
        cptarti[id] = false;
			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++;
      cptarti[id] = true;
      nonlu[id] = false; //pas très propre mais ça évite de recompter le mp une seconde fois pour le compteur de mp non lu

      }

   	}

    var u = 1;
    while (u < mpssss.length) {
      var mprchilds2 = mpssss[u].children;
      var lien2 = mprchilds2[1].firstChild.href; // ajouter "https://www.jeuxvideo.com" au début
  	  var id2 = mprchilds2[3].firstChild.value;



        $.get('https://www.jeuxvideo.com' + lien2, function (dat) {

        var cont = document.implementation.createHTMLDocument().documentElement;
        cont.innerHTML = dat;
            var idz = cont.getElementsByClassName("btn btn-actualiser icon-spinner11")[0].href.slice(32, 40);
            var x = cont.getElementsByClassName("bloc-jvcode-msg hide")[0];
            var y = x.textContent.toLowerCase();

            var k = 0;
			var blmatch2 = false;
			while(k < bl3.length && blmatch2 == false) {
 				var str2 = bl3[k];

 				if (str2 && y.includes(str2)) {
					spamsatuer.push(idz);
                    blmatch2 = true;
                    if (cptarti[idz]) {
                        cpt--;
                    }
 				}

    		k++;
			}
            if (blmatch2 == false && nonlu[idz]) {
                cpt++;
            }


//alert("u : " + u + " mpsss.length : " + mpssss.length);
/*        if(u == (mpssss.length - 1)) {
            alert("voila");
                            var selector2 = container.querySelectorAll("#b-reception > form > input[type=hidden]");
        const randomKey2 = selector2[3].name;
        var obj2 = {
            fs_session: selector2[0].value,
            fs_timestamp: selector2[1].value,
            fs_version: selector2[2].value,
            "conv_select[]": [],
            conv_move: "666"
        };
        obj2[randomKey2] = selector2[3].value;
        spamsatuer2.forEach(e => {
            obj2["conv_select[]"].push(e)
        });
    		$.post("https://www.jeuxvideo.com/messages-prives/boite-reception.php", obj2);
//alert(2);
                    } */
        });
//        console.log("u : " + u + " mpsss : " + (mpssss.length - 1));
        u++;
    }


//      Promise.all(promises).then(values => console.log(values))

        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;

    setTimeout(function(){
        spamsatuer.forEach(e => {
            obj["conv_select[]"].push(e)
        });
    		$.post("https://www.jeuxvideo.com/messages-prives/boite-reception.php", obj);

          			if (rcpt == true) {
        document.getElementsByClassName('jv-nav-dropdown-title')[0].innerHTML = "<img src='https://image.jeuxvideo.com/smileys_img/5.gif'> Patch anti-spam appliqué <img src='https://image.jeuxvideo.com/smileys_img/5.gif'>";

  			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";
        }
        }

    }, 2000);
  // actualiser le compteur de MP
});
}
//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"]');
bl3 = await GM.getValue('abl3','["drystylejap","https://discord.gg/MHdPC2m"]');
var dropdown = document.getElementsByClassName('jv-nav-dropdown-container')[1];
dropdown.style.display="none";
bl1 = JSON.parse(bl1);
bl2 = JSON.parse(bl2);
bl3 = JSON.parse(bl3);
bl1tags = bl1.join();
bl2tags = bl2.join();
bl3tags = bl3.join();
spamchecker(true);
})();