// ==UserScript==
// @name Filtre topic
// @namespace https://www.jeuxvideo.com/
// @version 1.0
// @description Fitre les topics sur jvc par pseudo
// @include https://www.jeuxvideo.com/forums/*
// @grant none
// @downloadURL none
// ==/UserScript==
let html = `
`;
let regex = /(?<=forums\/)(\d+)(-\d+-\d+-)(\d+)/;
if (regex.exec(window.location.href)[1] != '0') {
document.querySelector('.group-two').style.marginBottom = '.3125rem';
document.querySelector('.bloc-pre-left').insertAdjacentHTML('afterend', html);
if (regex.exec(window.location.href)[3] == 1) {
document.querySelector('.txt-search').setAttribute('value', document.querySelector('.bloc-header').firstElementChild.innerText);
}
document.querySelector('.btn-lancer-rech').onclick = rechercheAuteur;
}
async function rechercheAuteur() {
let pageCount = 0;
document.querySelectorAll('div:nth-child(1) > div.bloc-liste-num-page > span').forEach((element) => {
if (/^-?\d+$/.test(element.textContent))
console.log("lol");
pageCount = element.textContent;
});
let auteur = document.querySelector('.txt-search').value.toLowerCase();
document.querySelectorAll('.bloc-message-forum').forEach(e => e.remove());
for (let pageIndex = 1; pageIndex <= pageCount; pageIndex++) {
let response = await fetch(window.location.href.replace(regex, '$1$2' + pageIndex));
let data = new DOMParser().parseFromString(await response.text(), "text/html");
let messages = data.getElementsByClassName('bloc-message-forum');
for (let i = messages.length - 1; i >= 0; i--) {
let pseudo = messages[i].querySelector('.bloc-header > span');
if (pseudo == null || pseudo.innerText.replace(/\s+/g, '').toLowerCase() !== auteur) {
messages[i].parentNode.removeChild(messages[i]);
} else {
messages[i].querySelectorAll('.JvCare').forEach(e => {
let classes = e.getAttribute('class');
let href = jvCake(classes);
classes = classes.split(' ');
let index = classes.indexOf('JvCare');
classes.splice(index, index + 2);
classes.unshift('xXx');
classes = classes.join(' ');
e.outerHTML = '' + e.innerHTML + '';
});
messages[i].querySelectorAll('.blockquote-jv .blockquote-jv').forEach(blockquote => {
console.log(blockquote);
blockquote.insertAdjacentHTML('afterbegin', '');
blockquote.querySelector('.nested-quote-toggle-box').onclick = () => {
if (blockquote.getAttribute('data-visible') !== '1') {
blockquote.setAttribute('data-visible', '1')
} else {
blockquote.setAttribute('data-visible', '0')
}
};
});
}
}
let e = document.querySelectorAll('.bloc-pagi-default')[1];
for (let i = 0; i < messages.length; i++) {
e.insertAdjacentHTML('beforebegin', messages[i].outerHTML);
}
}
}
function jvCake(cls) {
let base16 = '0A12B34C56D78E9F',
lien = '',
s = cls.split(' ')[1];
for (let i = 0; i < s.length; i += 2) {
lien += String.fromCharCode(base16.indexOf(s.charAt(i)) * 16 + base16.indexOf(s.charAt(i + 1)));
}
return lien;
}