您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
show avg ratings and rankings on a person's page on bangumi
// ==UserScript== // @name PersonPageStats // @namespace https://jirehlov.com // @version 0.1.1 // @description show avg ratings and rankings on a person's page on bangumi // @author Jirehlov // @include /^https?:\/\/(bgm\.tv|bangumi\.tv|chii\.in)\/person\/\d+(?!\/works\/voice)\/works/ // @grant none // @license MIT // ==/UserScript== (function () { "use strict"; let totalSum = 0; let totalCount = 0; let totalRank = 0; let rankCount = 0; function calculateAverage() { const browserFullElements = document.querySelectorAll(".browserFull"); totalSum = 0; totalCount = 0; totalRank = 0; rankCount = 0; browserFullElements.forEach(browserFullElement => { const liElements = browserFullElement.querySelectorAll("li"); liElements.forEach(liElement => { const rateInfoElement = liElement.querySelector(".rateInfo"); if (rateInfoElement) { const fadeElement = rateInfoElement.querySelector(".fade"); if (fadeElement) { const value = parseFloat(fadeElement.textContent); if (!isNaN(value)) { totalSum += value; totalCount++; } } } }); }); const rankElements = document.querySelectorAll(".rank"); rankElements.forEach(rankElement => { const smallElement = rankElement.querySelector("small"); if (smallElement) { const rankText = rankElement.textContent.replace("Rank ", "").trim(); const rankValue = parseInt(rankText); if (!isNaN(rankValue)) { totalRank += rankValue; rankCount++; } } }); return { avgRating: totalCount === 0 ? 0 : totalSum / totalCount, avgRank: rankCount === 0 ? 0 : totalRank / rankCount }; } function updateDisplay() { const {avgRating, avgRank} = calculateAverage(); const averageLi = document.querySelector("#averageValue"); const rankAverageLi = document.querySelector("#rankAverage"); const totalCountSpan = document.querySelector("#totalCount"); const rankCountSpan = document.querySelector("#rankCount"); if (averageLi) averageLi.textContent = avgRating.toFixed(4); if (rankAverageLi) rankAverageLi.textContent = avgRank.toFixed(4); if (totalCountSpan) totalCountSpan.textContent = totalCount; if (rankCountSpan) rankCountSpan.textContent = rankCount; } function createFilterButtons() { const subjectFilterElement = document.querySelector(".subjectFilter"); if (subjectFilterElement) { const groupedUL = document.createElement("ul"); groupedUL.className = "grouped clearit"; const titleLi = document.createElement("li"); titleLi.classList.add("title"); titleLi.innerHTML = "<span>当前页面统计信息</span>"; const averageLi = document.createElement("li"); averageLi.innerHTML = `<span>评分平均值: <span id="averageValue">${ calculateAverage().avgRating.toFixed(4) }</span></span>`; const totalCountLi = document.createElement("li"); totalCountLi.innerHTML = `<span>评分条目数: <span id="totalCount">${ totalCount }</span></span>`; const rankAverageLi = document.createElement("li"); rankAverageLi.innerHTML = `<span>排名平均值: <span id="rankAverage">${ calculateAverage().avgRank.toFixed(4) }</span></span>`; const rankCountLi = document.createElement("li"); rankCountLi.innerHTML = `<span>排名条目数: <span id="rankCount">${ rankCount }</span></span>`; groupedUL.appendChild(titleLi); groupedUL.appendChild(averageLi); groupedUL.appendChild(totalCountLi); groupedUL.appendChild(rankAverageLi); groupedUL.appendChild(rankCountLi); subjectFilterElement.appendChild(groupedUL); } } createFilterButtons(); updateDisplay(); const observer = new MutationObserver(() => { observer.disconnect(); updateDisplay(); observer.observe(document.body, { subtree: true, childList: true, attributes: true, attributeFilter: ["class"] }); }); observer.observe(document.body, { subtree: true, childList: true, attributes: true, attributeFilter: ["class"] }); }());
QingJ © 2025
镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址