米游社Web端个人主页显示该用户在所有游戏频道的等级和经验值

米游社Web端个人主页显示该用户在所有游戏频道的等级和经验值。

// ==UserScript==
// @name         米游社Web端个人主页显示该用户在所有游戏频道的等级和经验值
// @name:en    Miyoushe Web Personal Page displays the user's level and experience in all game channels.
// @namespace    http://tampermonkey.net/
// @version      0.3.7
// @description  米游社Web端个人主页显示该用户在所有游戏频道的等级和经验值。
// @description:en    Miyoushe Web Personal Page displays the user's level and experience in all game channels
// @author       aspen138
// @license      MIT
// @match        https://www.miyoushe.com/*/accountCenter/*
// @icon         data:image/png;base64,AAABAAEAEBAAAAEAIABoBAAAFgAAACgAAAAQAAAAIAAAAAEAIAAAAAAAAAQAABMLAAATCwAAAAAAAAAAAAD/2FkI/9hZSv/YV5P/3W+19cOaxvzv6NX////g///+6v///vL///74///+/P/////////+///+6v///Yn//vkT/9hZfP/YWe7/2Ff//tx7//XFpv/++vj////////////////////////////////////////////////6///9kP/YWej/2Fn//9lY//zXiP/2zrf///////zw6f/649b////////////////////////////////////////+/e3/2Fn9/9hZ///ZWv/6043/99PB///////2zLT/99C5/////////////////////////////////////v/42Mb+/9hZ///YWf//2Fj//NiJ//XIrv///f3//fPt//759v////////////328f/52sn///79///////76d7/87yY///YWf3/2Fn//9lb//7ikf/3zbD/+NfE///9/P/////////////////53c3/9MOn///////++/r/9cOl//vXkf3/2Fn7/9hX//7cdP/1w5z/9cWm//XIrf/2zLX//PDq/////v///////vn2//749f//////+d3P//fGkf//3Wn6/9hZ9//YWP/82IP/9suu//vWo//1w6H/+daq//XCmf/2y7P/+uHT//zv6P/99fH/++zk//TBoP/92n7//9hX9f/YWfL/2Vn/+9OK//jSt///7Lz/9cWk//3bfv//3G//+9iZ//XEp//0wqb/9cen//bEmv/7147//9pe///YWe//2Fnr/9pb//nPiv/52sf//vLa//XFof/+23L//9lX//vVjv/1wqH/9cKY//jSrv//4H///9lb///YWP//2Fnn/9hZ4//aW//5zon/+dzN//739P/2xZz//9tr///aX//4y5T/+t7C//7nuP/1xKP//tt4///YV///2Fn//9hZ3f/YWdb/2Fj//NaB//XIrf/76eH/9sSZ///baP//22P/98iX//zkyv/+7Mb/9sen//7cdf//2Ff//9hZ///YWdD/2Fm4/9hY///aY//60oz/9L2Z//fIlP//22P//9tk//fImP/87eP//vfv//bHo///3HH//9hX///YWf//2Fm+/9hZaf/YWff/2Fj//9pe//7bdf/+23D//9hZ///bYf/3ypb/++ng//759v/1xqH//9xx///YV///2Fn//9hZof/YWQz/2Fl5/9hZ1v/YWfH/2Ff8/9hY///YWf//2Vr/+9WM//XIr//76N7/9cOd///ccv//2Ff//9hZ8//YWVv/2FkA/9hZAv/YWRz/2FlD/9hZav/YWY3/2Fmr/9hYxf/ca9n50prp9L+f9ffJnf3/3Gn9/9hY5f/YWXz/2FkKAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgAAAAA==
// @grant       GM_addStyle
// @require https://update.greasyfork.org/scripts/483208/1302155/ajaxHooker_myaijarvis.js
// @run-at document-start
// ==/UserScript==






var formattedString = "place_holder";

function insertOrUpdateFormattedString() {
    // Use an ID or a class to identify the element
    var existingElement = document.getElementById('formattedStringElement');

    if (existingElement) {
        // If the element already exists, update its content
        existingElement.innerHTML = "\r\n<br>" + formattedString;
    } else {
        // Otherwise, create and insert the element as before
        var formattedStringElement = document.createElement('div');
        formattedStringElement.id = 'formattedStringElement'; // Assign an ID to the new element
        formattedStringElement.innerHTML = "\r\n<br>" + formattedString;
        var introDivs = document.querySelectorAll('.mhy-account-center-user__intro');

        if (introDivs && introDivs.length > 1) {
            var targetDiv = introDivs[1];
            targetDiv.parentNode.insertBefore(formattedStringElement, targetDiv.nextSibling);
        }
    }
}

(function() {
    'use strict';

    // Assuming ajaxHooker is already defined elsewhere in your script
    ajaxHooker.hook(request => {
        if (request.url.includes("https://bbs-api.miyoushe.com/user/wapi/getUserFullInfo")) {
            request.response = res => {
                var json = JSON.parse(res.responseText);
                var gameLevelExpList = json.data.user_info.level_exps;
                var gameNames = {
                    1: "崩坏3",
                    2: "原神",
                    3: "崩坏学园2",
                    4: "未定事件簿",
                    5: "大别野",
                    6: "星穹铁道",
                    8: "绝区零"
                };

                formattedString = gameLevelExpList.map(function(item) {
                    var gameName = gameNames[item.game_id] || "未知游戏";
                    return `${gameName}频道等级为${item.level},经验为${item.exp}<br>`;
                }).join("") + "";

                // Call the function to either insert or update the string in the page
                insertOrUpdateFormattedString();
            }
        }
    });
})();