Skip to content

Instantly share code, notes, and snippets.

@duplaja
Last active February 3, 2022 00:48
Show Gist options
  • Save duplaja/0bfff713c1eb030a8fa47888ff85c1a5 to your computer and use it in GitHub Desktop.
Save duplaja/0bfff713c1eb030a8fa47888ff85c1a5 to your computer and use it in GitHub Desktop.
Updated No-Jquery Allmusic Recs Gist
window.addEventListener("load", function(event) {
var userratingdiv = document.getElementsByClassName("ratings")[0];
const button = document.createElement('a');
button.setAttribute("id", "rate-button");
button.innerHTML = '<h3>Rate Album</h3>'
userratingdiv.insertBefore(button, userratingdiv.firstChild)
var userratingbutton = document.getElementById("rate-button");
userratingbutton.setAttribute("role", "button");
userratingbutton.setAttribute("tabindex",0);
setarialabel();
userratingbutton.addEventListener("click", setmyrating, false);
});
function setmyrating(){
var arialabel = setarialabel();
var userratingdiv = document.getElementsByClassName("album-page-user-rating")[0];
var dataid = userratingdiv.getAttribute('data-id');
var rating = prompt(arialabel+'\nRate this album, 1-10: ');
var modrating = parseInt(rating,10)*10;
var httpRequest = new XMLHttpRequest();
httpRequest.onreadystatechange = function (data) {
console.log('Saved Rating');
}
var saveurl = 'https://www.allmusic.com/rating/save';
httpRequest.open('POST', saveurl);
httpRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
httpRequest.send('id='+encodeURIComponent(dataid)+'&score='+encodeURIComponent(modrating));
var allclasses = userratingdiv.className.split(' ');
var ratingclass = allclasses.find(a =>a.includes("rating-user-"));
userratingdiv.setAttribute("aria-label", 'My Rating: '+rating);
userratingdiv.classList.remove(ratingclass)
if(rating < 10) {
rating = '0'+rating;
}
userratingdiv.classList.add("rating-user-"+rating)
}
function setarialabel() {
var userratingdiv = document.getElementsByClassName("album-page-user-rating")[0];
var arialabel = '';
var allclasses = userratingdiv.className.split(' ');
var ratingclass = allclasses.find(a =>a.includes("rating-user-"));
if(undefined != ratingclass) {
var rating = ratingclass.replace("rating-user-", "");
if(rating == 0) {
arialabel = 'My Rating: Not Yet Rated';
} else {
arialabel = 'My Rating: '+rating;
}
} else {
arialabel = 'My Rating: Not Yet Rated';
}
userratingdiv.setAttribute("aria-label", arialabel)
return arialabel;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment