// ==UserScript== // @name SecretKitty // @description Un utilitaire pour faire parler les chats // @author kateblolo // @namespace https://www.jeuxvideo.com/ // @version 0.0.2 // @match https://www.jeuxvideo.com/forums/* // @match https://m.jeuxvideo.com/forums/* // @require https://code.jquery.com/jquery-3.6.0.min.js // @require https://cdnjs.cloudflare.com/ajax/libs/crypto-js/3.1.2/rollups/aes.js // @grant none // ==/UserScript== let smileys = new Object(); smileys[":\\)"] = ''; smileys[":snif:"] = ''; smileys[":gba:"] = ''; smileys[":g\\)"] = ''; smileys[":-\\)"] = ''; smileys[":snif2:"] = ''; smileys[":bravo:"] = ''; smileys[":d\\)"] = ''; smileys[":hap:"] = ''; smileys[":ouch:"] = ''; smileys[":pacg:"] = ''; smileys[":cd:"] = ''; smileys[":-\\)\\)\\)"] = ''; smileys[":ouch2:"] = ''; smileys[":pacd:"] = ''; smileys[":cute:"] = ''; smileys[":content:"] = ''; smileys[":p\\)"] = ''; smileys[":-p"] = ''; smileys[":noel:"] = ''; smileys[":oui:"] = ''; smileys[":\\("] = ''; smileys[":peur:"] = ''; smileys[":question:"] = ''; smileys[":cool:"] = ''; smileys[":-\\("] = ''; smileys[":coeur:"] = ''; smileys[":mort:"] = ''; smileys[":rire:"] = ''; smileys[":-\\(\\("] = ''; smileys[":fou:"] = ''; smileys[":sleep:"] = ''; smileys[":-D"] = ''; smileys[":nonnon:"] = ''; smileys[":fier:"] = ''; smileys[":honte:"] = ''; smileys[":rire2:"] = ''; smileys[":non2:"] = ''; smileys[":sarcastic:"] = ''; smileys[":monoeil:"] = ''; smileys[":o\\)\\)"] = ''; smileys[":nah:"] = ''; smileys[":doute:"] = ''; smileys[":rouge:"] = ''; smileys[":ok:"] = ''; smileys[":non:"] = ''; smileys[":malade:"] = ''; smileys[":fete:"] = ''; smileys[":sournois:"] = ''; smileys[":hum:"] = ''; smileys[":ange:"] = ''; smileys[":diable:"] = ''; smileys[":gni:"] = ''; smileys[":play:"] = ''; smileys[":desole:"] = ''; smileys[":spoiler:"] = ''; smileys[":merci:"] = ''; smileys[":svp:"] = ''; smileys[":sors:"] = ''; smileys[":salut:"] = ''; smileys[":rechercher:"] = ''; smileys[":hello:"] = ''; smileys[":up:"] = ''; smileys[":bye:"] = ''; smileys[":gne:"] = ''; smileys[":lol:"] = ''; smileys[":dpdr:"] = ''; smileys[":dehors:"] = ''; smileys[":hs:"] = ''; smileys[":banzai:"] = ''; smileys[":bave:"] = ''; smileys[":pf:"] = ''; smileys[":cimer:"] = ''; smileys[":ddb:"] = ''; smileys[":pave:"] = ''; smileys[":objection:"] = ''; smileys[":siffle:"] = ''; smileys[":globe:"] = ':globe:'; var chiffres = []; function encrypt() { var nb = Math.floor((Math.random() * 9) + 0); var kitty = "[[sticker:p/"; var kitty2 = "/1kl" + nb + "]]"; var message = $("#message_topic").val(); var sels = document.getElementById("message_topic").selectionStart; var sele = document.getElementById("message_topic").selectionEnd; var encrypted = CryptoJS.AES.encrypt(message.slice(sels, sele).replace(/\n/g, "~"), "").toString(); var kitty_encrypted = [kitty, encrypted, kitty2].join(''); $("#message_topic").val(message.slice(0, sels) + kitty_encrypted + message.slice(sele)); chiffres.push(encrypted); } function cancel(){ var message = $("#message_topic").val(); message = message.replace(/\[\[sticker:p\//g, "").replace(/\/1kl[0-9]\]\]/g,""); chiffres.forEach(function(cipher){ var c = cipher.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); message = message.replace(new RegExp(c, "g"), CryptoJS.AES.decrypt(cipher, "").toString(CryptoJS.enc.Utf8)); message = message.replace(new RegExp(c, "g"), CryptoJS.AES.decrypt(cipher, "").toString(CryptoJS.enc.Utf8)); }); chiffres = []; $("#message_topic").val(message); } function add_smileys(message){ for (let [sm, html] of Object.entries(smileys)){ message = message.replace(new RegExp(sm,"g"), html); } message = message.replace(/'''([^']+)'''/g, '$1'); message = message.replace(/''([^']+)''/g, '$1'); message = message.replace(/(.+)<\/code>/g, '
$1
'); return message; } function decrypt(){ $('img.img-stickers').each(function(){ var message = $(this).attr('alt'); message = CryptoJS.AES.decrypt(message.substring(12, message.length-7), "").toString(CryptoJS.enc.Utf8); $(this).replaceWith("

" + add_smileys(message).replace(/~/g, "
") + "

"); }); } (function() { var topic = window.location.pathname.split("-")[2]; if (topic != 0) decrypt(); $(".jvcode-eye-blocked").parent().parent().append(''); $(".jvcode-eye-blocked").parent().parent().append(''); $("#btn-encrypt").click(function(){ encrypt(); }); $("#btn-decrypt").click(function(){ cancel(); }); })();