Greasy Fork

RYM/ Sonemic: Average track rating

average track rating for rym/sonemic

目前为 2018-07-06 提交的版本。查看 最新版本

// ==UserScript==
// @name       RYM/ Sonemic: Average track rating
// @version    1.1
// @description:en  average track rating for rym/sonemic
// @description average track rating for rym/sonemic
// @match      https://sonemic.com/release/*
// @match      https://rateyourmusic.com/release/*
// @match      http://rateyourmusic.com/release/*
// @match      http://sonemic.com/release/*
// @namespace https://greasyfork.org/users/194849
// ==/UserScript==


//RYM

var $ = unsafeWindow.jQuery;
var url = window.location.href;
var weightedRatingSum_rym = 0;
var numberOfTracks_rym = 0;
var totalDuration = 0;
var relativeTrackDuration;
var weightedRating;
var ratingSum = 0;


//calculate total album duration
$('#tracks li.track').each(function() {

         //get the track length in seconds
        var duration = $(this).find('.tracklist_duration').text().trim();
        var a = duration.split(':');
        var seconds = (+a[0]) * 60 + (+a[1])

        if(!isNaN(seconds)){
            totalDuration+=seconds;
        }
});




//Iterate through the tracklist and calculate weighted rating
$('#tracks li.track').each(function() {

    var rating = $(this).find('.track_rating').text();

    //check if there is a valid rating value for the track
    if(parseFloat(rating) > 0){

        if(totalDuration > 0){
        //get the track length in seconds
        var duration = $(this).find('.tracklist_duration').text().trim();
        var a = duration.split(':');
        var seconds = (+a[0]) * 60 + (+a[1])

        relativeTrackDuration = seconds / totalDuration;

        weightedRating = relativeTrackDuration * rating;
        console.log('weighted Rating track: ' + weightedRating);

            weightedRatingSum_rym += parseFloat(weightedRating);

        }

     else{
         numberOfTracks_rym++;
         ratingSum += parseFloat(rating);
         }

    }

});

var finalRating;

console.log("duration: " +totalDuration);
console.log("tracks: " +numberOfTracks_rym);
console.log("sum: " +ratingSum);

finalRating = (totalDuration > 0) ? weightedRatingSum_rym.toFixed(2) : (ratingSum / numberOfTracks_rym).toFixed(2);

var header = $('.release_page_header').text();

var useless1 = document.getElementsByClassName("release_page_header");
for (var j = 0; j < useless1.length; j++) {
  var useless2 = useless1[j].innerText;
    if(useless2.includes("listing")){

        var element = document.getElementsByClassName("release_page_header")[j];
        var str = element.innerHTML;
var text = str + "(Average: " +finalRating+ ")";
element.innerHTML = text;

    }
}



//SONEMIC

if(url.includes('sonemic')){


var heading = document.getElementsByClassName("page_object_section_header");
var finalText;
var numberOfTracks = document.getElementsByClassName("page_fragment_track_avg_rating");
var totalweightedRatingSum_rym = 0;
var trackCounter = 0;

console.log('heading: ' + heading[1].innerHTML);

for (var i = 0; i < numberOfTracks.length; i++) {

    totalweightedRatingSum_rym += parseFloat(numberOfTracks[i].innerText);
    trackCounter++;
}

var finalRating_sonemic = parseFloat(totalweightedRatingSum_rym/trackCounter);



finalText = "Tracks (Average: " +finalRating_sonemic.toFixed(2)+ ")";
heading[1].innerHTML = finalText;

  }