diff --git a/RYM_userscript.js b/RYM_userscript.js new file mode 100644 index 0000000..9badd4c --- /dev/null +++ b/RYM_userscript.js @@ -0,0 +1,98 @@ +// ==UserScript== +// @name RYM Artist Rating Display with Multiple Classifications +// @namespace http://tampermonkey.net/ +// @version 1.3 +// @description Affiche plusieurs appréciations de l'artiste sur RateYourMusic en fonction de vos propres notes personnalisées, avec des couleurs et des bordures spécifiques. +// @author SansGuidon +// @match https://rateyourmusic.com/artist/* +// @grant none +// ==/UserScript== + +(function() { + 'use strict'; + + // Fonction pour extraire les notes personnelles + function getUserRatings() { + let ratings = document.querySelectorAll('#discography .disco_cat_inner'); + return Array.from(ratings).map(el => { + let match = el.textContent.trim().match(/(\d\.\d)/); + return match ? parseFloat(match[1]) : null; + }).filter(rating => rating !== null); + } + + // Fonction pour calculer les appréciations de l'artiste + function calculateArtistRatings() { + let ratingCounts = getUserRatings(); + + let count4OrMore = ratingCounts.filter(rating => rating >= 4.0).length; + let count5 = ratingCounts.filter(rating => rating >= 5.0).length; + + let ratings = []; + + // Ajouter les bordures pour les albums pris en compte + document.querySelectorAll('#discography .disco_cat_inner').forEach(el => { + let match = el.textContent.trim().match(/(\d\.\d)/); + let rating = match ? parseFloat(match[1]) : null; + if (rating !== null) { + if (rating >= 4.0) { + el.closest('.disco_release').style.border = '1px solid saddlebrown'; + } + if (rating >= 5.0) { + el.closest('.disco_release').style.border = '1px solid deeppink'; + } + } + }); + + if (count4OrMore >= 5 && count5 >= 1) { + ratings.push({ + category: 'Extreme pleasure: Bands/artists I\'ve given at least 5 times 4.0 - 5.0 ratings for theirs albums, including at least one album with 5.0 rating', + color: 'deeppink' + }); + } + + if (count5 >= 1 || count4OrMore >= 3) { + ratings.push({ + category: 'Easy pleasure: Bands/artists I\'ve given at least 1 time 5.0 rating for their album(s), and/or at least 3 times 4.0+ ratings for their albums', + color: 'darkgoldenrod' + }); + } + + if (count4OrMore >= 2) { + ratings.push({ + category: 'Excellent: Bands/artists of albums I\'ve given at least 2 times 4.0-5.0 ratings', + color: 'saddlebrown' + }); + } + + if (ratings.length === 0) { + ratings.push({ + category: 'No significant rating: This artist doesn\'t meet the criteria for any specific rating category', + color: '#333' + }); + } + + return ratings; + } + + // Fonction pour insérer les appréciations dans la page + function insertArtistRatings(ratings) { + let artistNameSection = document.querySelector('.section_artist_name'); + if (artistNameSection) { + ratings.forEach(rating => { + let ratingElement = document.createElement('div'); + ratingElement.innerHTML = `${rating.category}`; + ratingElement.style.fontSize = '16px'; + ratingElement.style.color = rating.color; + ratingElement.style.padding = '5px 0'; + ratingElement.style.borderTop = '1px solid #ccc'; + artistNameSection.appendChild(ratingElement); + }); + } + } + + // Calculer les appréciations de l'artiste + let artistRatings = calculateArtistRatings(); + + // Insérer les appréciations dans la page + insertArtistRatings(artistRatings); +})();