MAL Profile Stats With Percentages + Hours

MAL Percentages + Hours

目前为 2021-01-01 提交的版本。查看 最新版本

// ==UserScript==
// @name         MAL Profile Stats With Percentages + Hours
// @namespace    http://tampermonkey.net/
// @version      0.2
// @description  MAL Percentages + Hours
// @author       Only_Brad (& commented by hacker09)
// @match        https://myanimelist.net/profile/*
// @icon         https://www.google.com/s2/favicons?domain=myanimelist.net
// @run-at       document-end
// @grant        GM_addStyle
// ==/UserScript==

// Functions to select the days txt and day numbers to convert then to txt hours and numbers in hours later
(function() {
  GM_addStyle(".profile .user-statistics .stats-status{width: 200px;}");
  const days = document.querySelector(".di-tc.al.pl8.fs12.fw-b"),
    hours = days.cloneNode(true),
    hoursText = hours.querySelector("span"),
    hoursValueNode = hoursText.nextSibling,
    hoursValue = parseFloat(hoursValueNode.textContent.replace(/,/g, ""));

  // Add the symbol // On the beginning the 2 lines below "disable" the total hours,then you can have just the mal percentages feature
  hoursText.textContent = "Hours: ";
  hoursValueNode.textContent = (hoursValue * 24).toFixed(1);
  days.insertAdjacentElement("afterend", hours);

  // Functions to select all the animes stats and the Total stats
  const total = parseInt(document.querySelector(".stats-data.fl-r span:nth-child(2)").textContent.replace(/,/g, ""));
  const [watching, completed, onHold, dropped, planToWatch] = document.querySelectorAll(".di-ib.fl-r.lh10");

  // Functions to add the percentage after the total number of each watching,completed,onHold,dropped,planToWatch
  [watching, completed, onHold, dropped, planToWatch].forEach(addPercentage);

  // Functions that do the math
  function getPercentage(node) {
    const value = parseInt(node.textContent.replace(/,/g, ""));
    if (total === 0) return "0.00";
    return (value * 100 / total).toFixed(2);
  }

  // Functions to show and append the scores after each watching,completed,onHold,dropped,planToWatch
  function addPercentage(node) {
    const percentage = getPercentage(node);
    node.textContent = `${node.textContent} (${percentage}%)`;
  }
})()

QingJ © 2025

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