99 lines
3.8 KiB
JavaScript
99 lines
3.8 KiB
JavaScript
|
// ==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 = `<b>${rating.category}</b>`;
|
||
|
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);
|
||
|
})();
|