您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Some fun extra info for album pages.
// ==UserScript== // @name RateYourMusic: average track rating // @namespace http://tampermonkey.net/ // @version 2025-08-03 // @description Some fun extra info for album pages. // @author You // @match https://rateyourmusic.com/release/* // @icon https://www.google.com/s2/favicons?sz=64&domain=rateyourmusic.com // @grant none // @license MIT // ==/UserScript== (function () { 'use strict'; window.addEventListener('load', () => { console.log("RYM script is running..."); let lastKnownRatings = []; function getCurrentRatings() { return Array.from(document.querySelectorAll('.rating_num')) .slice(1) .map(el => parseFloat(el.textContent.trim())) .filter(n => !isNaN(n)); } function ratingsChanged(newRatings) { return (newRatings.length !== lastKnownRatings.length || newRatings.some((val, i) => val !== lastKnownRatings[i])); } function updateAvgRating() { const ratings = getCurrentRatings(); if (!ratingsChanged(ratings)) return; lastKnownRatings = ratings; if (ratings.length === 0) return; const total = ratings.reduce((sum, n) => sum + n, 0); const avg = (total / ratings.length).toFixed(2); console.log("Updated average rating:", avg); const existing = document.getElementById('average-rating-display'); if (existing) existing.remove(); const display = document.createElement('div'); display.id = 'average-rating-display'; display.style.fontWeight = 'bold'; display.style.fontSize = '1.5em'; display.style.marginTop = '0.15em'; display.style.marginBottom = '0.3em'; display.style.display = 'inherit'; display.style.maxWidth = '500px'; display.style.textAlign = "center"; const label = document.createElement('div'); label.textContent = "Average Track Rating"; label.style.textDecoration = "underline"; display.appendChild(label); const scoreLine = document.createElement('div'); scoreLine.style.marginBottom = '0.3em'; scoreLine.style.marginTop = '0.6em'; const avgDisplay = document.createElement("span"); avgDisplay.textContent = (avg); avgDisplay.style.fontSize = '2.5em'; avgDisplay.style.color = "navy"; avgDisplay.style.padding = "0 0.35em"; avgDisplay.style.backgroundColor = "cyan"; avgDisplay.style.borderRadius = "30% 0"; scoreLine.appendChild(avgDisplay); display.appendChild(scoreLine); const tracklist = document.querySelector('#my_track_ratings'); if (tracklist) { tracklist.insertBefore(display, tracklist.firstChild); } } updateAvgRating(); const ratingsContainer = document.querySelector('#my_track_ratings'); ratingsContainer.addEventListener("click", (event) => { updateAvgRating(); }); }) })();