Messages de GeneralCoin

Le 08 avril 2020 à 15:26:35 Mrhistam a écrit :
Quand on tape son pseudo dans rechercher + messages c'est pareil non? :(

C'est en gros ce que fais le script, il cherche [pseudo] a écrit: dans la recherche, assemble les données et te les affiches proprement :hap:

Le 08 avril 2020 à 15:33:11 [Risitaciturne] a écrit :
Le script est compatible avec jvc live?https://image.noelshack.com/fichiers/2019/35/1/1566845414-4783ce9d-4c9e-43a2-a910-700c4485f676.png

Je ne sais pas, ça dépend de la manière dont les messages sont cités dans jvc live :hap:

Le 08 avril 2020 à 15:23:22 [Risitaciturne] a écrit :
Cimer clé. Quelqu'un peut me citer pour test?https://image.noelshack.com/fichiers/2019/35/1/1566845414-4783ce9d-4c9e-43a2-a910-700c4485f676.png

Oui :hap:

Le 08 avril 2020 à 15:05:01 3-261498-451301 a écrit :

Le 08 avril 2020 à 15:03:38 Kalkani a écrit :

Le 08 avril 2020 à 15:02:11 3-261498-451301 a écrit :
Test quelqu'un peut me citer ?

Je te cite khey :oui:

ça marche très bien merci khey, t'aurais pas un script pour supprimer ce putain de spam de vie privé qui pop depuis ce matin ?

https://www.jeuxvideo.com/forums/42-51-62663289-1-0-1-0-script-retirer-le-bouton-cookies-en-bas-a-gauche.htm :ok:

Le 08 avril 2020 à 15:03:51 3-261498-451301 a écrit :
marche pas

Tu es sur quel navigateur khey?

Le 31 mars 2020 à 17:13:11 TOM3466C a écrit :
Je suis sur mobile je laisse ma marque en attendant

Merci khey :ok:

J'exige un topic rouge :hap:
up, des kheys qui ont testé? :hap:

Le 31 mars 2020 à 16:57:15 MrChapie2 a écrit :
Putain GeneralCoin t'es vraiment le meilleur khey c'est incontestable + tes fictions légendaires :coeur:

Merci khey :coeur:

Le 31 mars 2020 à 16:55:44 cendriervert a écrit :
:snif:

Pourquoi tu pleures toi? :hap:

Le 31 mars 2020 à 16:54:39 CropoBagon a écrit :
bravo collègue scripteur de JVC :ok:

Tu fais des scripts aussi? :hap:

up :hap:

Le 31 mars 2020 à 16:46:24 BMWouPAZ_ a écrit :
Paluhttps://image.noelshack.com/fichiers/2019/28/3/1562784556-cr7-cloclo2.pngent

Merci pour le up :ok:

Le 31 mars 2020 à 16:47:43 oui-oui-27 a écrit :
Mouais, vu le nombre de personne qui ne citent pas, pas sûr que ce soit très utile mais l'idée est louable.

Au contraire, quand un khey répond à un autre il cite en général :( Sauf si c'est l'auteur évidemment, mais pour ça il y a déjà une fonctionnalité de notification native sur le forum :hap:

Bonjour les kheys :ok:

Ceci est une réédition et mise à jour d'un script que j'avais déjà proposé sous un pseudo différent il y a quelques temps :hap:

Le script vous permet d'afficher une liste des citations dont vous avez fait l'objet sur le forum, en gros quand on vous a répondu sur un topic. Voici comment ça fonctionne:

À droite du forum, il y a un bouton "Chercher les réponses":

https://image.noelshack.com/fichiers/2020/14/2/1585665230-1.png

Quand vous cliquez sur le bouton, le script vous affiche les réponses que vous avez reçu sur des topics:

https://image.noelshack.com/fichiers/2020/14/2/1585665266-2.png

Vous pouvez cliquer sur le lien pour accéder au message, ou cliquer sur l'icône oeil pour un aperçu:

https://image.noelshack.com/fichiers/2020/14/2/1585665344-3.png

Si vous cliquez sur le lien du message, ou que vous cliquez sur l'icône de suppression, la notification s'en va :ok:

:d) TUTORIEL INSTALLATION :g)

1. Installez l'extension Tampermonkey sur votre navigateur
2. Dans le tableau de bord de tampermonkey, cliquez sur l'icône + pour créer un script
3. Remplacez tout le contenu du script par ceci:


// ==UserScript==
// @name NotifCite
// @namespace http://tampermonkey.net/
// @version 1.1
// @description Permet d'afficher une liste des citations sur le forum
// @author GénéralCoin
// @match *://www.jeuxvideo.com/forums/*-51-*
// @grant none
// ==/UserScript==

(function () {
'use strict';

var CSS = `
@keyframes popnotif {
from {background-color: #F3DD95;}
to {background-color: white;}
}

@keyframes demarge {
from {margin-bottom: 42px;}
to {margin-bottom: 0px;}
}

.notif-box {
border: 1px solid #D4D4D4;
margin-bottom: 5px;
padding: 7px;
background-color: white;
height: 47px;
animation: popnotif 1s 1;
}

.marginer {
margin-bottom: 44px;
animation: demarge 0.5s 1 forwards;
}

.notif-box-left {
margin-right: 60px;
}

.section-left {
display: flex;
}

.notif-box-right {
width: 42px;
height: 22px;
float: right;
position: relative;
bottom: 26px;
}

.section-left.section-msg {
margin-top: 7px;
margin-left: 11px;
}

.notif-topic, .notif-msg {
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
font-size: 11px;
font-family: tahoma;
line-height: 11px;
text-decoration: none;
margin-left: 5px;
}

.notif-topic {
color: #006BD7;
font-weight: bold;
}

.notif-msg {
color: #535461;
}

.notif-folder {
width: 14px;
height: 12px;
fill: #FFCA27;
flex-shrink: 0
}

.notif-cite {
width: 12px;
height: 12px;
fill: #84AD20;
flex-shrink: 0
}

.notif-eye {
width: 22px;
height: 22px;
fill: #B1B1B1;
float: left;
}

.notif-eye:hover {
fill: #FF6416;
cursor: pointer;
}

.notif-delete {
width: 14px;
height: 14px;
fill: #D48181;
float: right;
margin-top: 4px;
}

.notif-delete:hover {
fill: #CF3427;
cursor: pointer;
}

g, path, circle {
pointer-events: none;
}

#notif-button {
width: 100%;
box-sizing: border-box;
height: 32px;
margin-bottom: 20px;
}
`

document.head.insertAdjacentHTML("afterbegin", `<style type="text/css"> ${CSS} </style>`)

document.querySelector(".panel-jv-forum").insertAdjacentHTML('afterend', '<button type="button" id="notif-button">Chercher des réponses</button>');

var rightCol = document.getElementById("forum-right-col");
var userPseudo = document.querySelector(".account-pseudo").innerText.toLowerCase();
var savedNotifs = localStorage.getItem(`savedNotifs_${userPseudo}`);
var saveIndex = localStorage.getItem(`saveIndex_${userPseudo}`)

var parsedNotifs;
var parsedIndex;

if (savedNotifs == null) {
parsedNotifs = {};
parsedIndex = [];
} else {
parsedIndex = JSON.parse(saveIndex);
parsedNotifs = JSON.parse(savedNotifs);
var parsedNotifsIndex = Object.keys(parsedNotifs);
parsedNotifsIndex.forEach(function (key) {
var top = parsedNotifs[key];
if (top.visible) {
generateNotifBox(top.topicTitle, top.messageLink, top.messageAuthor, top.messageId);
}
});
if (parsedIndex.length > 40) {
var sliceAt = parsedIndex.length - 25;
var toDelete = parsedIndex.slice(0, sliceAt);
parsedIndex.splice(0, sliceAt);
toDelete.forEach(function (ind) {
delete parsedNotifs[ind];
})
var stringedIndex = JSON.stringify(parsedIndex);
var stringedNotifs = JSON.stringify(parsedNotifs);
localStorage.setItem(`saveIndex_${userPseudo}`, stringedIndex);
localStorage.setItem(`savedNotifs_${userPseudo}`, stringedNotifs);
}
}

rightCol.addEventListener('click', handleButtons, false);

function handleButtons(e) {
var content = e.target;
if (content.id == "notif-button") {
fetchCitations();
} else if (content.className.baseVal == "notif-eye") {
previewMsg(content, content.dataset.link);
} else if (content.className.baseVal == "notif-delete") {
deleteNotif(content);
} else if (content.className == "notif-topic") {
removeFromSavedNotifs(content.dataset.msgid);
}
}

function fetchCitations() {
fetch(`http://www.jeuxvideo.com/recherche/forums/0-51-0-1-0-1-0-blabla-18-25-ans.htm?search_in_forum=" ${userPseudo} a écrit"&type_search_in_forum=texte_message`, { method: 'GET', credentials: 'include' })
.then(res => {
res.text().then((text) => {
var doc = document.implementation.createHTMLDocument();
doc.body.innerHTML = text;
var citations = doc.getElementsByClassName("message");
handleCitations(citations)
})
})
}

function handleCitations(cites) {
if (cites.length == 0) {
return;
}
var bloc = document.getElementById("forum-right-col").children;
if (bloc[2].tagName == "A") {
bloc[2].style.display = "none";
}
var next = true;
for (var i = 0; i < cites.length; i++) {
var citation = cites[i];
var messageA = citation.querySelector(".topic-title");
var messageLink = messageA.href;
var messageId = Number(messageLink.split("_")[1]);
if (parsedNotifs[messageId]) {
console.log('test');
next = false;
}
var checkSimilar = messageA.innerText.toLowerCase();
var messageAuthor = citation.querySelector(".text-auteur").innerText.trim().toLowerCase();
if (next && messageAuthor != userPseudo && checkSimilar.includes(` ${userPseudo}`)) {
var topicId = messageLink.split('-')[2];
var topicContext = citation.parentElement.querySelector(`[data-id="${topicId}"]`);
var topicTitle = topicContext.querySelector(".topic-title").innerText.trim();
parsedIndex.push(messageId);
parsedNotifs[messageId] = { topicTitle, messageLink, messageAuthor, messageId, visible: true };
generateNotifBox(topicTitle, messageLink, messageAuthor, messageId);
}
}
var stringedIndex = JSON.stringify(parsedIndex);
var stringedNotifs = JSON.stringify(parsedNotifs);
localStorage.setItem(`saveIndex_${userPseudo}`, stringedIndex);
localStorage.setItem(`savedNotifs_${userPseudo}`, stringedNotifs);
}

function generateNotifBox(title, link, author, messageId) {
var notifBox = `
<div class="notif-box" style="opacity:1;">
<div class="notif-box-left">
<div class="section-left">
<svg class="notif-folder" viewBox="0 0 14 12">
<path d="m13.388 1.6187h-6.2356l-1.8819-1.6187h-4.6595a0.61149 0.76445 0 0 0 -0.61149 0.76445v3.2355h14v-1.6168a0.61149 0.76445 0 0 0 -0.61149 -0.76445z"/>
<path d="m4.9e-4 11.413a0.61149 0.58651 0 0 0 0.61149 0.58651h12.777a0.61149 0.58651 0 0 0 0.61149 -0.58651v-6.4135h-14z"/>
</svg>

<a class="notif-topic" data-msgid="${messageId}" href="${link}">${title}</a>
</div>
<div class="section-left section-msg">
<svg class="notif-cite" viewBox="0 0 12 12">
<g transform="matrix(.13333 0 0 .13333 -.66645 -.66667)">
<path d="m50 5c-25.1 0.2-45.2 20.5-45 45.3 0.2 24.6 20.3 44.7 45 44.7h0.3c12-0.1 23.3-4.8 31.7-13.4s13.1-19.9 13-31.9c-0.2-24.6-20.3-44.7-45-44.7zm22.4 56c0 0.6-0.5 1.1-1.1 1.1h-20c-0.3 0-0.5 0.1-0.7 0.3l-11.2 10.3c-0.7 0.6-1.8 0.1-1.8-0.8v-8.8c0-0.6-0.5-1.1-1.1-1.1h-7.5c-0.5 0-1-0.4-1-1v-25.5c0-0.6 0.5-1.1 1.1-1.1h42.3c0.6 0 1.1 0.5 1.1 1.1v25.5z"/>
</g>
</svg>

<div class="notif-msg"><b>${author}</b> Vous a cité</div>
</div>
</div>
<div class="notif-box-right">
<svg class="notif-eye" data-link="http://www.jeuxvideo.com/${author}/forums/message/${messageId}" viewBox="0 0 22 22">
<g transform="scale(.24444)">
<circle cx="45" cy="45" r="7.1"/>
<path d="m76.8 13.2c-8.5-8.5-19.8-13.2-31.8-13.2s-23.3 4.7-31.8 13.2-13.2 19.8-13.2 31.8 4.7 23.3 13.2 31.8 19.8 13.2 31.8 13.2 23.3-4.7 31.8-13.2 13.2-19.8 13.2-31.8-4.7-23.3-13.2-31.8zm-0.4 33.1c-0.6 0.7-14.1 18.2-31.4 18.2s-30.9-17.4-31.4-18.2c-0.9-1.1-0.8-2.7 0.1-3.8 0.6-0.7 14.1-17 31.4-17s30.8 16.3 31.4 17c0.7 1.1 0.8 2.7-0.1 3.8z"/>
</g>
</svg>

<svg class="notif-delete" data-msgid="${messageId}" viewBox="0 0 14 14">
<g transform="matrix(.15555 0 0 .15556 .00024837 0)">
<path d="m45 0c-24.7 0-44.8 20.1-45 44.7-0.1 12 4.5 23.4 13 31.9 8.4 8.6 19.7 13.3 31.7 13.4h0.3c24.7 0 44.8-20.1 45-44.7 0.1-24.8-19.9-45.1-45-45.3zm19 59.7c1.2 1.2 1.2 3.1 0 4.3-0.6 0.6-1.4 0.9-2.1 0.9-0.8 0-1.5-0.3-2.1-0.9l-14.8-14.7-14.7 14.7c-0.6 0.6-1.4 0.9-2.1 0.9s-1.6-0.3-2.2-0.9c-1.2-1.2-1.2-3.1 0-4.3l14.7-14.7-14.7-14.8c-1.2-1.2-1.2-3.1 0-4.3s3.1-1.2 4.3 0l14.7 14.8 14.7-14.7c1.2-1.2 3.1-1.2 4.3 0s1.2 3.1 0 4.3l-14.7 14.7z"/>
</g>
</svg>
</div>
</div>
`
document.getElementById('notif-button').insertAdjacentHTML("afterend", notifBox);
}


function deleteNotif(content) {
removeFromSavedNotifs(content.dataset.msgid);
var el = content.parentElement.parentElement;
var marginer = document.createElement("div");
marginer.className = "marginer";

var decreaseOpacity = setInterval(decOp, 20);

function decOp() {
el.style.opacity = (el.style.opacity - 0.1);
if (el.style.opacity <= 0) {
stopDecOp();
}
}

function stopDecOp() {
clearInterval(decreaseOpacity);
el.insertAdjacentElement('afterend', marginer);
el.style.display = "none";
setTimeout(function () { marginer.remove(); }, 2000);
}
}

function removeFromSavedNotifs(id) {
parsedNotifs[id].visible = false;
var stringedNotifs = JSON.stringify(parsedNotifs);
localStorage.setItem(`savedNotifs_${userPseudo}`, stringedNotifs);
}

function previewMsg(target, link) {
var onclickBackUp = target.onclick;
target.onclick = null;
setTimeout(function () { target.onclick = onclickBackUp }, 4000);
var coordinates = target.getBoundingClientRect();
fetch(link)
.then(res => {
if (res.ok) {
res.text().then((text) => {
var doc = document.implementation.createHTMLDocument();
doc.body.innerHTML = text;
var post = doc.getElementsByClassName("bloc-message-forum")[0];
post.style.width = "49rem";
post.style.position = "absolute";
post.style.left = (coordinates.left - 784) + "px";
post.style.top = (coordinates.top + window.scrollY) + "px";
post.style.zIndex = "2000";
post.style.borderColor = "#FF6416";
document.body.insertAdjacentElement('afterbegin', post);
document.body.onclick = function () {
post.remove()
document.body.onclick = null;
};
})
} else {
var post = document.createElement("img");
post.src = "http://www.jeuxvideo.com/img/erreurs/e410.png";
post.style.position = "absolute";
post.style.left = (coordinates.left - 550) + "px";
post.style.top = (coordinates.top + window.scrollY) + "px";
post.style.zIndex = "2000";
document.body.insertAdjacentElement('afterbegin', post);
document.body.onclick = function () {
post.remove()
document.body.onclick = null;
};
}
})
}
})();

4. Enregistrez, et c'est good :ok:

:d) FIN DU TUTORIEL INSTALLATION :g)

Voilà voilà, ça fait un petit moment que j'avais pas touché à ce script donc il est possible qu'il y ait des bugs :peur: Dites-moi si c'est le cas et je posterais des mises à jours sur ce topic pour corriger :oui:

Suite et fin posté :ok:

https://www.pandome.fr/coronavirus-episode-8

J'ai coupé un peu court, dsl mais je suis beaucoup moins motivé quand c'est pas sur le forum :snif:

La prochaine fois j'éviterais les mots interdits et je ferais quelque chose de mieux :snif:

Le 21 mars 2020 à 17:22:27 BlueHorizon993 a écrit :
Pas de suite ou ses posts ont été supprimé?

Suite ici khey: https://www.pandome.fr/coronavirus-episode-4 :ok:

Le bot supprimait les posts...

Épisode 7 posté :ok:
J'ai posté l'épisode 6, suite tout à l'heure les kheys :ok:

Je peux rien faire contre le bot qui supprime le mot interdit, je posterais la suite sur mon site :(

C'est dommage, j'aime bien que ce soit d'abord sur le forum mais bon... :snif:

Du coup suite ici: https://www.pandome.fr/coronavirus-episode-4

Le dernier épisode a disparu :fou: