// ==UserScript==
// @name Filtre Anti-Spam MP
// @description Filtre les spams de MP sur JVC selon les patterns définis par l'utilisateur
// @version 7
// @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
// @grant GM_addStyle
// @run-at document-start
// @namespace https://greasyfork.org/users/396340
// @downloadURL none
// ==/UserScript==
GM_addStyle ( `
.jv-header-menu .jv-account-number-mp.has-notif:after,
.jv-header-menu .jv-account-number-notif.has-notif:after {
opacity: 0 !important;
}
.jv-header-menu .jv-account-number-mp.has-nitof:after,
.jv-header-menu .jv-account-number-notif.has-nitof:after {
z-index:2;
content:" " attr(data-val) "";
color:#fff;
line-height:1.25rem;
font-size:.6875rem;
padding:0 .25rem;
position:absolute;
top:.6875rem;
right:6%;
background:#ff572e;
width:1.25rem;
height:1.25rem;
border-radius:.625rem
}
` );
window.onload = function() {
var bl1 = [];
var bl2 = [];
var bl1tags;
var bl2tags;
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();};
document.getElementsByClassName('jv-account-number-mp')[0].className = "jv-account-number-mp";
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('http://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('http://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("http://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-nitof";
}
}
});
}
//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);
})();
};