rym Total Track Times

Calculates total track time for releases on rateyourmusic.com

  1. // ==UserScript==
  2. // @name rym Total Track Times
  3. // @version 2.75
  4. // @description Calculates total track time for releases on rateyourmusic.com
  5. // @match http://rateyourmusic.com/release/*
  6. // @match https://rateyourmusic.com/release/*
  7. // @namespace https://greasyfork.org/users/4419
  8. // ==/UserScript==
  9.  
  10. // restrict pull to one set of tracklistings; in this case those for the desktop site
  11. var desktop_tracklist = document.getElementById('tracks');
  12. var tracksecs = 0;
  13.  
  14. var durations = desktop_tracklist.getElementsByClassName("tracklist_duration");
  15.  
  16. // loop the tracks and add up the seconds.
  17. for(j=0;j<durations.length; j++) {
  18. tracksecs += parseInt(durations[j].getAttribute("data-inseconds"));
  19. }
  20.  
  21. if(tracksecs !== 0) {
  22. var trackmins = 0;
  23. var trackhours = 0;
  24. var trackmins = 0;
  25. var timeString = ":";
  26. // calculate the hours:min:seconds for the release
  27. trackmins += Math.floor((tracksecs / 60));
  28. tracksecs = (tracksecs % 60);
  29. trackhours = Math.floor((trackmins / 60));
  30. trackmins -= (trackhours * 60);
  31. if (tracksecs < 10) { tracksecs = "0" + tracksecs; }
  32. if (trackmins < 10 && trackhours > 0) { trackmins = "0" + trackmins; }
  33.  
  34. if(trackhours === 0) {
  35. timeString = trackmins + ":" + tracksecs;
  36. } else {
  37. timeString = trackhours + ":" + trackmins + ":" + tracksecs;
  38. }
  39. // Create fragment which holds total release time
  40. var new_row = document.createDocumentFragment();
  41. var row = document.createElement("li");
  42. row.className = "track";
  43. var rowdiv = document.createElement("div");
  44. rowdiv.className = "tracklist_line";
  45. row.appendChild(rowdiv);
  46. var spacer = document.createElement("span");
  47. spacer.className = "tracklist_num";
  48. rowdiv.appendChild(spacer);
  49. var header = document.createElement("span");
  50. header.className = "tracklist_title";
  51. var innerText = document.createTextNode("Please Uninstall:");
  52. header.appendChild(innerText);
  53. var times = document.createElement("span");
  54. times.className = "tracklist_duration";
  55. timeString = "rym Total Track Times extension is obsolete!";
  56. innerText = document.createTextNode(timeString);
  57. times.appendChild(innerText);
  58. header.appendChild(times);
  59. rowdiv.appendChild(header);
  60. new_row.appendChild(row);
  61. // clone fragment
  62. var new_row2 = new_row.cloneNode(true);
  63. // add it to the mobile tracklist
  64. var tracks_m = document.getElementById('tracks_mobile');
  65. tracks_m.appendChild(new_row2);
  66. // add it to the normal tracklist
  67. var tracks = document.getElementById('tracks');
  68. tracks.appendChild(new_row);
  69. }