Mine-Craft User API Profile Formatter Mine-Craft.io - Mine-Craft.fun

Format user profiles :D

// ==UserScript==
// @name         Mine-Craft User API Profile Formatter Mine-Craft.io - Mine-Craft.fun
// @namespace    http://tampermonkey.net/
// @version      1.1
// @description  Format user profiles :D
// @author       Junes
// @match        https://mine-craft.io/api/users/*
// @match        https://mine-craft.fun/api/users/*
// @grant        none
// @license      MIT
// ==/UserScript==

(function() {
    'use strict';
    function timeAgo(date) {
        const seconds = Math.floor((new Date() - date) / 1000);
        const years = Math.floor(seconds / 31536000);
        const months = Math.floor((seconds % 31536000) / 2592000);
        const days = Math.floor((seconds % 2592000) / 86400);
        const hours = Math.floor((seconds % 86400) / 3600);
        const minutes = Math.floor((seconds % 3600) / 60);
        const remainingSeconds = seconds % 60;
        let timeString = [];
        if (years > 0) timeString.push(years + " year" + (years > 1 ? "s" : ""));
        if (months > 0) timeString.push(months + " month" + (months > 1 ? "s" : ""));
        if (days > 0) timeString.push(days + " day" + (days > 1 ? "s" : ""));
        if (days === 0) {
            if (hours > 0) timeString.push(hours + " hour" + (hours > 1 ? "s" : ""));
            if (minutes > 0) timeString.push(minutes + " minute" + (minutes > 1 ? "s" : ""));
            if (remainingSeconds > 0) timeString.push(remainingSeconds + " second" + (remainingSeconds > 1 ? "s" : ""));
        }
        return timeString.length > 0 ? timeString.join(", ") + " ago" : "just now";
    }
    function formatSpan(color, text) {
        return `<span style="color: ${color};">${text}</span>`;
    }
    function formatNumberWithCommas(number) {
        return number.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ",");
    }
    function cleanFormat(text) {
        return text.replace(/§[0-9a-zA-Z]/g, '').trim();
    }
    fetch(window.location.href)
        .then(response => response.json())
        .then(data => {
            const user = data.user;
            const registeredDate = new Date(user.date_register * 1000);
            const lastLoginDate = new Date(user.last_login * 1000);
            const lastActiveDate = new Date(user.last_active * 1000);
            const lastOfflineDate = new Date(user.last_offline * 1000);
            const formattedProfile = `
${formatSpan('turquoise', '- User Profile of:')} ${formatSpan('orange', cleanFormat(user.nickname))}
${formatSpan('turquoise', '- User ID:')} ${formatSpan('orange', user.id)}
${formatSpan('turquoise', '- Nickname:')} ${formatSpan('orange', cleanFormat(user.nickname))}
${formatSpan('turquoise', '- Type:')} ${formatSpan('orange', user.type)}
${formatSpan('turquoise', '- Role ID:')} ${formatSpan('orange', user.role_id)}
${formatSpan('turquoise', '- Prefix:')} ${formatSpan('orange', cleanFormat(user.prefix))}
${formatSpan('turquoise', '- Email:')} ${formatSpan('orange', user.email)}
${formatSpan('turquoise', '- Skin ID:')} ${formatSpan('orange', user.skin_id)}
${formatSpan('turquoise', '- Balance:')} ${formatSpan('orange', formatNumberWithCommas(user.balance))}
${formatSpan('turquoise', '- Date Registered:')} ${formatSpan('orange', registeredDate.toLocaleString())} - ${formatSpan('red', timeAgo(registeredDate))}
${formatSpan('turquoise', '- Last Login:')} ${formatSpan('orange', lastLoginDate.toLocaleString())} - ${formatSpan('red', timeAgo(lastLoginDate))}
${formatSpan('turquoise', '- Last Active:')} ${formatSpan('orange', lastActiveDate.toLocaleString())} - ${formatSpan('red', timeAgo(lastActiveDate))}
${formatSpan('turquoise', '- Last Offline:')} ${formatSpan('orange', lastOfflineDate.toLocaleString())} - ${formatSpan('red', timeAgo(lastOfflineDate))}
${formatSpan('turquoise', '- Ad Block:')} ${formatSpan('orange', user.ad_block)}
${formatSpan('turquoise', '- Online:')} ${formatSpan('orange', user.online)}
${formatSpan('turquoise', '- Invisible:')} ${formatSpan('orange', user.invisible)}
${formatSpan('turquoise', '- Calls:')} ${formatSpan('orange', user.calls)}
${formatSpan('turquoise', '- Transfers:')} ${formatSpan('orange', user.transfers)}
${formatSpan('turquoise', '- Friends:')} ${formatSpan('orange', user.friends)}
${formatSpan('turquoise', '- Verified:')} ${formatSpan('orange', user.verified)}
${formatSpan('turquoise', '- Legend:')} ${formatSpan('orange', user.legend)}
${formatSpan('turquoise', '- Disabled:')} ${formatSpan('orange', user.disabled)}
${formatSpan('turquoise', '- Bot:')} ${formatSpan('orange', user.bot)}
${formatSpan('turquoise', '- No Ads:')} ${formatSpan('orange', user.no_ads)}
${formatSpan('turquoise', '- Search Tag:')} ${formatSpan('orange', cleanFormat(user.search_tag))}
${formatSpan('turquoise', '- About:')}
${formatSpan('lightgreen', cleanFormat(user.about))}
`;
            document.body.innerHTML = `<pre>${formattedProfile}</pre>`;
        });
})();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址