Risibank Avatar

Permet, à l'aide de l'ID Risibank d'un sticker (gif compris) (exemple {23942p}) mis en signature, de personaliser son Avatar aux yeux des utilisateurs de ce script

Ekde 2024/08/15. Vidu La ĝisdata versio.

// ==UserScript==
// @name         Risibank Avatar
// @namespace    http://tampermonkey.net/
// @version      2024-08.v0.0.1
// @description  Permet, à l'aide de l'ID Risibank d'un sticker (gif compris) (exemple {23942p}) mis en signature, de personaliser son Avatar aux yeux des utilisateurs de ce script
// @author       Treflou
// @match        https://www.jeuxvideo.com/forums/*
// @match        https://www.jeuxvideo.com/messages-prives/*
// @match        https://www.jeuxvideo.com/profil/*
// @match        https://www.jeuxvideo.com/profil/*?mode=historique_forum
// @match        https://www.jeuxvideo.com/profil/*?mode=historique_commentaire
// @match        https://m.jeuxvideo.com/forums/*
// @icon         https://risibank.fr/logo.png
// @grant        none
// ==/UserScript==

(function() {
    'use strict';

    window.addEventListener("load", (event) => {

        if (window.location.href.includes("profil")) //Page Profil
        {

            let ProfilSignatureElement = document.getElementsByClassName("bloc-signature-desc");
            let ProfilSignature = ProfilSignatureElement[0].textContent;
            let ProfilTag = getTag(ProfilSignature);
            if (ProfilTag != "")
            {

                let NewProfilAvatarURL = tagToURL(ProfilTag);
                let ProfilAvatar = document.querySelector("#header-profil > div.content-img-avatar > img");
                ProfilAvatar.setAttribute("src", NewProfilAvatarURL);
                ProfilAvatar.setAttribute("data-src", ""); //Corrige le lazy load
            }
        }

        else //Hors page profil
        {

            let SignatureList = document.querySelectorAll("div.signature-msg"); //Liste des signatures de la page
            SignatureList.forEach(function(valeur){

                let Signature = valeur.textContent; //Récupère le texte de la signature
                let Tag = getTag(Signature);

                if (Tag != "")
                {

                    let NewAvatarURL = tagToURL(Tag);
                    let Avatar = valeur.closest("div.conteneur-message").children[0].children[0].children[0]; // Désolé pour cette ligne < = > a.xXx.bloc-avatar-msg > img
                    Avatar.setAttribute("src", NewAvatarURL);
                    Avatar.setAttribute("data-src", ""); //Corrige le lazy load
                }
            });
        }
    });

    function getTag(SignatureString)
    {
        let Tag = "";

        if (SignatureString.indexOf("{") != -1) //Vérifie la présence d'un Tag débutant par {
        {

            let PremièreAccolade = SignatureString.indexOf("{");
            let DeuxièmeAccolade = SignatureString.indexOf("}", PremièreAccolade + 1);

            if (DeuxièmeAccolade != -1) //Vérifie la présence d'une seconde } (= fin du tag)
            {
                Tag = SignatureString.substring(PremièreAccolade + 1, DeuxièmeAccolade); //Scan les chiffres entre les {}
                if (Tag.length < 10) //sécurité
                {
                    return Tag;
                }
                else{Tag = "51206p"; return Tag;} //return sticker 410ed
            }
        }

        return Tag;
    }

    function tagToURL(TagString) //Permet d'obtenir le lien de l'image desirée à partir de son tag
    {

        let Tag = TagString;
        let URL = "/full."; //fin de l'URL avant format
        let Format = Tag.slice(-1).toLowerCase(); //Dernier caractère ( p pour PNG, j pour JPEG, g pour GIF,s pour SVG, b pour BMP, t pour TIFF) -> ajoute le format de l'image en fin d'URL
        let Length = Tag.length - 1;

        switch (Format) {

            case 'p':
                URL = URL + "png";
                break;
            case 'j':
                URL = URL + "jpeg";
                break;
            case 'g':
                URL = URL + "gif";
                break;
            case 's':
                URL = URL + "svg";
                break;
            case 'b':
                URL = URL + "bpm";
                break;
            case 't':
                URL = URL + "tiff";
                break;
            default:
                URL = URL + "gif";
                Length = Length + 1;
        }

        Tag = Tag.slice(0, Length); //enlève le dernier caractère du type de format
        URL = Tag + URL;

        for (var k = 1; k < 4; k++) //Reproduit la génération des URL de Risibank en partant du Tag (De droite vers la gauche) /!\ Pourrait devenir obsolète si les URL Risibank venaient à changer de https://risibank.fr/cache/medias/0/2/239/23942/full.png à https://risibank.fr/cache/medias/0/0/2/239/23942/full.png

        {
            Length = Length - 2;

            if (Length > 0)
            {
                URL = Tag.slice(0,Length) +"/"+ URL;
            }
            else{URL = "0/" + URL;}
        }

        URL = "https://risibank.fr/cache/medias/" + URL; //Début de l'URL
        return URL;
    }

})();